iTextSharp: как изменить размер изображения в соответствии с размером исправления?

Я хочу иметь возможность изменять размер изображения до размера 159x159 точек, используя iTextSharp 4.2.0, но полученное изображение должно иметь точно указанные размеры.

Я попытался это:

Image image = Image.GetInstance(imagePath);
image.ScaleAbsolute(159f, 159f);

но изображение не квадратное. Он сохраняет соотношение сторон.

пример: У меня есть такой образ:

enter image description here

и изображение результата должно выглядеть так:

enter image description here

спасибо.

2 ответов


проблема, которую вы описываете, обычно заключается в том, что происходит при попытке добавить Image непосредственно PdfPTable по телефону AddCell(), который всегда масштабирует изображение, чтобы соответствовать PdfPCell. Поэтому, если вы добавляете изображение в Document такой:

Image img = Image.GetInstance(imagePath);
img.ScaleAbsolute(159f, 159f);
PdfPTable table = new PdfPTable(1);
table.AddCell(img);
document.Add(table);

код ScaleAbsolute() вызов игнорируется. Чтобы получить масштабирование, которое вы хотите:

PdfPTable table = new PdfPTable(1);
table.AddCell(new PdfPCell(img));
document.Add(table);

PdfPCell имеет свойство соответствовать изображению в ячейке, поэтому просто установите его в true.

  iTextSharp.text.Image logo = iTextSharp.text.Image.GetInstance("/test.png");

  PdfPCell logocell = new PdfPCell(logo,true); //  **PdfPCell(Image,Boolean Fit)**