Itextsharp и размеры изображений - PullRequest
6 голосов
/ 23 ноября 2011

Я создаю одну PDF-страницу с 6 изображениями в таблице в отдельных ячейках, хотя я устанавливаю высоту и ширину изображений на стороне сервера точно так же, как в ScaleToFit, размеры изображений на странице PDF не совпадают .

Есть ли способ получить все изображения одинакового размера?

PdfPTable table = new PdfPTable(3);
table.HorizontalAlignment = Element.ALIGN_CENTER;
table.WidthPercentage = 100;
table.TotalWidth = 698.5f;
table.LockedWidth = true;
table.SetWidths(new float [] {1,1,1});
iTextSharp.text.Image img1 =    iTextSharp.text.Image.GetInstance("C:\\Users\\DaNet\\Downloads\\image.jpg");
img1.Alignment = iTextSharp.text.Image.ALIGN_CENTER;
img1.ScaleToFit(120f, 155.25f);

iTextSharp.text.pdf.PdfPCell imgCell1 = new iTextSharp.text.pdf.PdfPCell(img1);
imgCell1.HorizontalAlignment = Element.ALIGN_CENTER;
imgCell1.BackgroundColor = new BaseColor(255, 255, 255);
imgCell1.Border = iTextSharp.text.Rectangle.NO_BORDER;
table.AddCell(imgCell1);

1 Ответ

16 голосов
/ 23 ноября 2011

Две вещи.

Во-первых, смотрите в этом посте об упаковке Image в Chunk.В основном:

iTextSharp.text.pdf.PdfPCell imgCell1 = new iTextSharp.text.pdf.PdfPCell();
imgCell1.AddElement(new Chunk(img1, 0, 0));

Во-вторых, если вы хотите точный такой же размер, то вы хотите использовать ScaleAbsolute вместо ScaleToFit.Последний сохраняет соотношение сторон изображения, поэтому изображение 100x200, масштабированное до размера 50x50, получилось бы как 25x50.

img1.ScaleAbsolute(120f, 155.25f);
...