2010-05-02 22 views
11

Resim boyutundan bağımsız olarak, pdf içinde farklı büyüklükte bir boyuta eşlenmiş gibi görünüyorsa, itextsharp kullanarak pdf'ye görüntü eklemeye çalışıyorum?itextsharp kullanarak pdf içinden doğru görüntü boyutu nasıl hesaplanır?

ben eklemek görüntü 624x500 piksel (: 72 DPI): is

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

Ve burada bir çıkış pdf ekranıdır:

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

Ve burada nasıl belgeyi oluşturdu:

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(); 

Bir Doğru büyüklüğü nasıl hesaplayacağınız hakkında fikir?

ScaleAbsolute'u denedim ve görüntü hala yanlış boyutlarda görünüyor.

cevap

19

itextsharp 5.0.2 kullanıyorum bahsetmeyi unuttum.

Bu inç başına 110 piksel anlamına PDF DPI = 110, çıktı ve itextsharp ölçüm daha sonra bir birim olarak noktaları kullandığı:

  • n tane piksel = n/110 inç.
  • n inç = n * 72 nokta.

noktalarına piksel dönüştürmek için bir yardımcı yöntemi tüm gerekli olan sahip:

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

, yukarıdaki formül kullanılarak ve bir 110 dpi bir değerin aktarılması ile, mükemmel çalıştı:

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

Not: İstediğiniz boyutta pdf belgeleri oluşturabileceğinizden, bu, belgelerinizi yazdırırken yanlış ölçeklemeye neden olabilir. Bu sorunun üstesinden gelmek için yapmanız gereken tek şey genişlik ve yükseklik arasında doğru en boy oranına sahip olmaktır [yaklaşık 1: 1.4142] (bkz .: Paper Size - The international standard: ISO 216).

İlgili konular