【问题标题】:IText PDF document - rotate some but not all pagesIText PDF 文档 - 旋转部分但不是所有页面
【发布时间】:2014-02-26 19:53:16
【问题描述】:

我正在使用适用于 Java 的 iText API,但在尝试将多个 TIFF 合并为 PDF 时遇到了问题。有些是旋转的,有些不是。我不太清楚如何旋转和保留页面的宽度/高度。

此 SO 很有帮助,但仅用于旋转整个文档

iText Document : Rotate the page

这是我用来测试人为旋转图像的一些代码。这有效,但会切断图像。例如,如果原始图像是 1000(宽)x2000(高),它会旋转它,但一半的图像会丢失,因为页面大小仍然是 1000x2000。希望这是有道理的。

Image img = Image.getInstance(part);  //part is a string pointer to a file.
Rectangle imgPageSize;

if (i == 0) {// testing - rotate first page
   img.setRotationDegrees((float) 90.0); //testing
   imgPageSize = new Rectangle(img.getHeight(), img.getWidth());
}

TiffToPDF.setPageSize(imgPageSize);  // this does not work
if (!TiffToPDF.isOpen())
   TiffToPDF.open();
TiffToPDF.add(img);

【问题讨论】:

    标签: java pdf itext


    【解决方案1】:

    请查看rotate_pages.pdf 文档。在此示例中,我们从纵向页面开始,然后是横向页面,然后是倒置纵向页面,海景页面,最后是纵向页面。

    使用页面事件更改页面方向:

    public class Rotate extends PdfPageEventHelper {
        protected PdfNumber rotation = PdfPage.PORTRAIT;
        public void setRotation(PdfNumber rotation) {
            this.rotation = rotation;
        }
        public void onEndPage(PdfWriter writer, Document document) {
            writer.addPageDictEntry(PdfName.ROTATE, rotation);
        }
    }
    

    如您所见,我们在结束页面之前将/Rotate 条目添加到页面字典中。旋转的可能值是:

    • PdfPage.PORTRAIT
    • PdfPage.LANDSCAPE
    • PdfPage.INVERTEDPORTRAIT
    • PdfPage.SEASCAPE

    我们这样使用页面事件:

    PdfWriter writer = PdfWriter.getInstance(document, new FileOutputStream(filename));
    Rotate rotation = new Rotate();
    writer.setPageEvent(rotation);
    

    当我们想改变旋转时,我们简单地使用事件类中的setRotation() 方法。例如:

    rotation.setRotation(PdfPage.LANDSCAPE);
    document.add(new Paragraph("Hello World!"));
    document.newPage()
    

    无需旋转图像。如果您想在下一页返回纵向,只需在 document.newPage() 行之后使用 setRotation(PdfPage.PORTRAIT);,就像在 the iText web site 上的 PageRotation 示例中所做的那样。

    【讨论】:

    • 谢谢,我认为这会起作用,如果我能得到它,我会发布代码,非常感谢精彩的细节。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-13
    • 2021-02-10
    • 1970-01-01
    • 2017-09-20
    相关资源
    最近更新 更多