Как вычислить размер правильного образа в PDF с помощью itextsharp?

Я' попытка должен добавить изображение к PDF с помощью itextsharp, независимо от размера изображения, это всегда, кажется, отображается на другом большем размере в PDF?

Изображение, которое я добавляю, составляет 624x500 пикселей (DPI:72):

сопроводительный текст http://www.freeimagehosting.net/uploads/727711dc70.png

И вот является экран вывода PDF:

сопроводительный текст 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();

Какая-либо идея о том, как вычислить корректный размер?

Я alreay попробовал ScaleAbsolute и изображение все еще, представляю с неправильными размерами.

12
задан MK. 12 May 2010 в 08:20
поделиться

1 ответ

Я забыл упомянуть, что я использую itextsharp 5.0.2.

Оказалось, что PDF DPI = 110, что означает 110 пикселей на дюйм, и поскольку itextsharp использует точки в качестве единицы измерения, то:

  • n пикселей = n / 110 дюймов.
  • n дюймов = n * 72 балла.

Все, что мне было нужно, - это иметь вспомогательный метод для преобразования пикселей в точки:

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

Используя приведенную выше формулу и передавая значение dpi 110, он работал отлично:

Примечание: поскольку вы можете создавать PDF-документы любого размера вы хотите, это может привести к неправильному масштабированию при печати документов. Чтобы решить эту проблему, все, что вам нужно сделать, - это иметь правильное соотношение сторон между шириной и высотой [приблизительно 1: 1,4142] (см .: Размер бумаги - Международный стандарт: ISO 216 ).

21
ответ дан 2 December 2019 в 07:20
поделиться