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)

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


person Basic    schedule 08.02.2011    source источник


Ответы (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)
person plinth    schedule 08.02.2011

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

VB

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

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

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

person Deepu Reghunath    schedule 10.08.2017

Область печати зависит от принтера, файлы PDF ничего об этом не знают. Страница PDF может иметь содержимое от поля до поля. Вы можете распечатать PDF-файл с опцией «Подогнать к полям принтера», чтобы вся PDF-страница печаталась в масштабе, соответствующем области печати принтера.

person iPDFdev    schedule 08.02.2011
comment
Понятно, но я автоматизирую печать с помощью (изначально): Writer.AddJavaScript("this.print(false);", False) и предпочел бы не устанавливать параметры масштабирования вручную. Можно ли это автоматизировать? В этом сценарии это для печати документов внутри компании на одном принтере, поэтому я также могу согласиться с необходимостью знать соответствующие поля и устанавливать их в PDF-файле во время генерации. - person Basic; 08.02.2011