【问题标题】:How set rotation angle a page in itext 7如何在itext 7中设置页面的旋转角度
【发布时间】:2020-04-21 18:09:27
【问题描述】:

如何以指定的角度(例如 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 一起使用吗?还是有别的办法?

【问题讨论】:

    标签: itext itext7


    【解决方案1】:

    最简单的方法是使用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 测试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,它会创建以下结果:

    【讨论】:

    • 我可以为倾斜定义页面大小吗?(pagesize + pagesizeTilt)?使内容适合当前区域。
    • 您使用pdfDoc.addNewPage() 创建一个具有文档默认页面大小的新页面。 addNewPage 的重载接受 PageSize 参数。使用该重载并指定在所有方向上适当放大的页面大小,而不仅仅是右侧和顶部。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-10
    • 1970-01-01
    • 2021-01-03
    • 2017-09-20
    • 2020-05-24
    相关资源
    最近更新 更多