gpt4 book ai didi

java - IText PDF文档 - 旋转一些但不是所有页面

转载 作者:行者123 更新时间:2023-11-30 07:10:36 25 4
gpt4 key购买 nike

我正在使用适用于 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);

最佳答案

请查看 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); 就像在 PageRotation 示例中所做的那样在 the iText web site 上。

关于java - IText PDF文档 - 旋转一些但不是所有页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22051835/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com