Наложение альбомной страницы с поворотом на 90 градусов на альбомную страницу с поворотом на 0 - PullRequest
0 голосов
/ 17 февраля 2020

Я использовал пример наложения для наложения одного pdf на другой. У меня возникают некоторые проблемы при попытке наложить страницу из исходного файла с поворотом на 90 градусов на целевую страницу, которая имеет нулевое вращение, но имеет альбомную ориентацию (она шире, чем высокая).

Когда я сначала попытался поставить отметку на контенте, как в примере, он повернул содержимое на -90, как в левом примере на рисунке ниже. Когда я попытался установить поворот целевой страницы, исходный контент был расположен в правильной ориентации, но целевая страница имела поворот (правый пример на рисунке ниже).

var sourcePageRotation = sourcePage.GetRotation();
destinationPage.SetRotation(sourcePageRotation);

Как я могу манипулировать исходную или целевую страницу для изменения значения поворота без фактического изменения способа его отображения?

enter image description here

1 Ответ

1 голос
/ 18 февраля 2020

(Поскольку вы ссылались на пример Java, я также буду ссылаться на iText для Java.)

В примере SuperImpose страницы для наложения добавляются с использованием

canvas.addXObject(page, 0, 0);

, но существуют и другие перегрузки PdfCanvas.addXObject, в частности

public PdfCanvas addXObject(PdfXObject xObject, float a, float b, float c, float d, float e, float f)

6 float представляют аффинное преобразование, применяемое к объект XObject, например, вращение. Таким образом, вы можете повернуть импортированный XObject страницы из исходного документа в соответствии с ориентацией страницы документа назначения, например, заменить

canvas.addXObject(page, 0, 0);

на

canvas.addXObject(page, 0, 1, -1, 0, page.getHeight(), 0);

или, если это делает содержимое страницы перевернуто вверх ногами, на

canvas.addXObject(page, 0, -1, 1, 0, 0, page.getWidth());

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...