Itextsharp масштабирование изображения на всю страницу

Я пытаюсь масштабировать изображение на всю страницу в документ PDF. Я создаю документ с помощью iTextSharp. Изображение имеет правильное соотношение сторон для страницы, но я бы предпочел, чтобы изображение искажалось, а не заполняло всю доступную область.

в настоящее время у меня есть:

Dim Document As New Document(PageSize, 0, 0, 0, 0)
...
Dim ContentImage = '''Method call to get image'
Dim Content = iTextSharp.text.Image.GetInstance(ContentImage, New BackgroundColor)
Content.SetAbsolutePosition(0, 0)
Content.ScaleToFit(Document.PageSize.Width, Document.PageSize.Height)
Document.Add(Content)

к сожалению, это не учитывать поля принтера...

Мне нужно изображение, чтобы соответствовать области печати (как можно лучше определить в формат PDF)

спасибо заранее

3 ответов


Если вы решили сделать это эмпирически, то возьмите печать страницы с вашим кодом, так как это масштабирует границу страницы, чтобы изображение было черным в первой половине дюйма поля, если бы оно могло перейти к краю. Измерьте расстояние от каждого края до Черного в дюймах и разделите каждый на 72.0.

назовем их: lm, rm, tm, bm (левые правые верхние нижние поля.

Dim pageWidth = document.PageSize.Width - (lm + rm);
Dim pageHeight = document.PageSize.Height - (bm + tm);
Content.SetAbsolutePosition(lm, bm);
Content.ScaleToFit(pageWidth, pageHeight);
Document.Add(Content)

область печати зависит от принтера, PDF-файлы ничего не знают об этом. Страница PDF может содержать содержимое от поля до поля. Вы можете распечатать PDF-файл с опцией "Fit to printer margins", чтобы вся страница PDF была напечатана в масштабе печатаемой области принтера.


вы можете масштабировать изображение в соответствии со страницей PDF, используя следующий фрагмент кода.

В. Б.

Dim img As iTextSharp.text.Image = iTextSharp.text.Image.GetInstance(System.Drawing.Image.FromStream(resourceStream), System.Drawing.Imaging.ImageFormat.Png)
img.SetAbsolutePosition(0, 0) 
'set the position to bottom left corner of pdf
img.ScaleAbsolute(iTextSharp.text.PageSize.A7.Width, iTextSharp.text.PageSize.A7.Height)
'set the height and width of image to PDF page size

C#

iTextSharp.text.Image img = iTextSharp.text.Image.GetInstance(System.Drawing.Image.FromStream(resourceStream, System.Drawing.Imaging.ImageFormat.Png);
img.SetAbsolutePosition(0, 0); // set the position to bottom left corner of pdf
img.ScaleAbsolute(iTextSharp.text.PageSize.A7.Width,iTextSharp.text.PageSize.A7.Height); // set the height and width of image to PDF page size

Если вы хотите полный код (C#), вы также можете обратиться по следующей ссылке. Полный код добавляет изображение на все страницы существующего PDF-файла.

https://stackoverflow.com/a/45486484/6597375