Itext 7 добавить несколько изображений в верхней части отдельных страниц

Существует множество причин, по которым отключение кнопки «Назад» на самом деле не работает. Лучше всего предупредить пользователя:

window.onbeforeunload = function() { return "Your work will be lost."; };

Эта страница перечисляет несколько способов, которыми вы могли попытаться отключить кнопку «Назад», но никто из них не гарантирован:

http://www.irt.org/script/311.htm

0
задан Ganesh N. 5 March 2019 в 15:26
поделиться

2 ответа

Решение для добавления нескольких изображений в PDF вверху каждой страницы с масштабированием.

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

Таким образом, получается, что метод getImageScaledHeight() не работает, если автоматическое масштабирование включено с помощью setAutoScale(true). Автоматическое масштабирование будет происходить, но только после того, как изображение будет добавлено в документ, но для установки положения изображения в верхней части страницы нам потребуется масштабированная высота изображения при вызове следующего метода

image.setFixedPosition(i + 1, 0, PageSize.A4.getHeight()-image.getImageScaledHeight());

Чтобы включить масштабирование изображения, чтобы поместиться на странице, а также расположить их в нужном месте на странице, вам нужно

  1. Сначала масштабируйте изображение, используя метод image.scaleToFit(fitWidth, fitHeight) , а затем рассчитайте нижнее положение, используя scaled

  2. Рассчитайте нижнюю позицию, используя масштабированное изображение высотой (image.getImageScaledHeight()) и высотой страницы .

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

Решение № 1. Несколько изображений в PDF на отдельной странице вверху без полей

image.scaleToFit(pdfA4usableWidth, pdfA4usableHeight);
image.setFixedPosition(i + 1, 0, PageSize.A4.getHeight()-image.getImageScaledHeight());

Щелкните здесь, чтобы увидеть пример кода с консольным выходом

Решение № 2. Несколько изображений в PDF на отдельной странице вверху с полями

float leftMargin = document.getLeftMargin(), rightMargin = document.getRightMargin();
float topMargin = document.getTopMargin(), bottomMargin = document.getBottomMargin();
float pdfA4usableWidth = PageSize.A4.getWidth() - leftMargin - rightMargin;
float pdfA4usableHeight = PageSize.A4.getHeight() - topMargin - bottomMargin;

System.out.println("A4 usable width: "+pdfA4usableWidth+", usable height: "+pdfA4usableHeight);

image.scaleToFit(pdfA4usableWidth, pdfA4usableHeight);
image.setFixedPosition(i + 1, 0, PageSize.A4.getHeight()-image.getImageScaledHeight());

Щелкните здесь, чтобы увидеть пример кода с консольным выводом

PDF сгенерированных ...

Изображение добавлено в PDF без полей

Изображение добавлено в PDF с полями по умолчанию

Измерение полей в PDF [ 1111]

Примечания:

  1. На прикрепленных снимках экрана PDF-файлов серый цвет является просто фоном средства просмотра PDF.
  2. Файлы изображений представлены в виде test1.jpg и test2.jpg, чтобы этот пример кода был простым.
0
ответ дан Ganesh N. 5 March 2019 в 15:26
поделиться

Давайте внесем еще некоторые изменения в пример MultipleImages:

1) (незначительный) Нет необходимости создавать Document с нестандартным размером страницы, этого было бы достаточно: [112 ]

2) Давайте изменим нижний параметр метода setFixedPosition, извлекая высоту изображения из высоты страницы по умолчанию: image.setFixedPosition(i + 1, 0, PageSize.A4.getHeight()-image.getImageScaledHeight());

Результирующий файл PDF выглядит, как и ожидалось: [ 1110]

enter image description here

0
ответ дан Uladzimir Asipchuk 5 March 2019 в 15:26
поделиться
Другие вопросы по тегам:

Похожие вопросы: