2010-05-02 2 views
11

itextsharp를 사용하여 pdf에 이미지를 추가하려고합니다. 이미지 크기에 관계없이 항상 pdf의 다른 큰 크기로 매핑되는 것처럼 보입니까?itextsharp를 사용하여 pdf에서 올바른 이미지 크기를 계산하는 방법은 무엇입니까?

I 추가 이미지는 624x500 픽셀 (72 DPI)이다

alt text http://www.freeimagehosting.net/uploads/727711dc70.png

그리고 여기에서 상기 출력 PDF의 화면이다

alt text http://www.freeimagehosting.net/uploads/313d49044d.png

그리고 여기 방법은 문서를 만들었습니다 :

Document document = new Document();     
       System.IO.MemoryStream stream = new MemoryStream(); 
       PdfWriter writer = PdfWriter.GetInstance(document, stream); 
       document.Open(); 


       System.Drawing.Image pngImage = System.Drawing.Image.FromFile("test.png"); 
       Image pdfImage = Image.GetInstance(pngImage, System.Drawing.Imaging.ImageFormat.Png); 


       document.Add(pdfImage); 
       document.Close(); 

       byte[] buffer = stream.GetBuffer(); 
       FileStream fs = new FileStream("test.pdf", FileMode.Create); 
       fs.Write(buffer, 0, buffer.Length); 
       fs.Close(); 

올바른 크기를 계산하는 방법에 대한 아이디어?

나는 ScaleAbsolute를 시도했지만 여전히 이미지의 크기가 잘못되었습니다.

답변

19

저는 itextsharp 5.0.2를 사용하고 있다는 것을 잊지 않습니다.

그것은 인치당 110 개 픽셀 즉 PDF DPI = 110를 판명하고 itextsharp가 measurment의 다음 장치로 포인트를 사용하기 때문에 :

  • 픽셀 n = N/110인치.
  • n 인치 = n * 72 포인트.

포인트를 픽셀로 변환하는 헬퍼 메소드를 I 필요한 전부이다 갖는

public static float PixelsToPoints(float value,int dpi) 
{ 
    return value/dpi * 72; 
} 

를 상기 식을 이용하여 110 dpi의 값을 전달하여이 완벽하게 작동 :

alt text http://www.freeimagehosting.net/uploads/1c8287b8d9.png

참고 : 원하는 크기로 PDF 문서를 만들 수 있으므로 문서를 인쇄 할 때 크기가 잘못 조정될 수 있습니다. 이 문제를 극복하기 위해서는 너비와 높이 사이의 정확한 종횡비 [약 1 : 1.4142]를 사용해야합니다 (Paper Size - The international standard: ISO 216 참조).