iTextSharp: Как изменить размер изображения, чтобы соответствовать фиксированному размеру? - PullRequest
7 голосов
/ 23 февраля 2012

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

Я пробовал это:

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

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

Пример: У меня есть это изображение:

enter image description here

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

enter image description here

Спасибо.

Ответы [ 2 ]

35 голосов
/ 23 февраля 2012

Проблема, которую вы описываете, обычно возникает, когда вы пытаетесь добавить 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);
6 голосов
/ 19 августа 2017

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

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

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