Я' попытка должен добавить изображение к 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 и изображение все еще, представляю с неправильными размерами.
Я забыл упомянуть, что я использую itextsharp 5.0.2.
Оказалось, что PDF DPI = 110, что означает 110 пикселей на дюйм, и поскольку itextsharp использует точки в качестве единицы измерения, то:
Все, что мне было нужно, - это иметь вспомогательный метод для преобразования пикселей в точки:
public static float PixelsToPoints(float value,int dpi)
{
return value / dpi * 72;
}
Используя приведенную выше формулу и передавая значение dpi 110, он работал отлично:
Примечание: поскольку вы можете создавать PDF-документы любого размера вы хотите, это может привести к неправильному масштабированию при печати документов. Чтобы решить эту проблему, все, что вам нужно сделать, - это иметь правильное соотношение сторон между шириной и высотой [приблизительно 1: 1,4142] (см .: Размер бумаги - Международный стандарт: ISO 216 ).