Как установить угол поворота страницы в itext 7 - PullRequest
1 голос
/ 21 апреля 2020

Как я могу повернуть страницу на заданный угол (например, 25 градусов)?

PdfCanvas content = new PdfCanvas(pdfDoc.addNewPage());
 for (int i =1 ; i <= srcDoc.getNumberOfPages(); i++) {
 PdfFormXObject page = srcDoc.getPage(i).copyAsFormXObject(pdfDoc);
content.add(page...);

}

Могу ли я установить RotationAngle для работы с PdfFormXObject? Или есть другой способ?

1 Ответ

2 голосов
/ 22 апреля 2020

Самый простой способ - использовать AffineTransform (из com.itextpdf.kernel.geom):

PdfCanvas content = new PdfCanvas(pdfDoc.addNewPage());
PageSize pageSize = pdfDoc.getDefaultPageSize();
PdfFormXObject page = srcDoc.getPage(1).copyAsFormXObject(pdfDoc);
AffineTransform transform = AffineTransform.getRotateInstance(25 * Math.PI / 180, (pageSize.getLeft() + pageSize.getRight())/2, (pageSize.getBottom() + pageSize.getTop())/2);
content.concatMatrix(transform);
content.addXObject(page, 0, 0);

( RotatePageXObject test testAddPage25Degree)

AffineTransform.getRotateInstance задокументировано для

 * Get an affine transformation representing a counter-clockwise rotation over the passed angle,
 * using the passed point as the center of rotation

, поэтому мы передаем ему угол (преобразованный в радианы) и координаты центра страницы.

Применимо к этому источнику PDF создает этот результат:

sourceresult

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