【问题标题】:Cannot rotate a PDF iText page无法旋转 PDF iText 页面
【发布时间】:2016-09-06 16:48:28
【问题描述】:

我想旋转几个 PDF 页面以获得 SEASCAPE 或 LANDSCAPE 肖像,但我无法弄清楚我缺少什么。这是我的代码

public void createSizedPdf(String dest) throws IOException, DocumentException {
    Rectangle one = new Rectangle(290,120);
    one.setBackgroundColor(BaseColor.YELLOW);

    Document document = new Document(one,5,5,5,5);
    PdfWriter writer = PdfWriter.getInstance(document, new FileOutputStream(dest));

    Rotate event = new Rotate();
    event.setOrientation(PdfPage.SEASCAPE);
    writer.setPageEvent(event);
for (int i = 0; i < 5; i++) {

    // add some paragraphs and imgs here

    if(i != 0){
        event.setOrientation(PdfPage.SEASCAPE);
        document.newPage();             
    }           
    document.add(img);
   }        
    document.close();
}

public class Rotate extends PdfPageEventHelper {

     protected PdfNumber orientation = PdfPage.PORTRAIT;

    public void setOrientation(PdfNumber orientation) {
        this.orientation = orientation;
    }

    @Override
    public void onStartPage(PdfWriter writer, Document document) {
        writer.addPageDictEntry(PdfName.ROTATE, orientation);
    }
}

提前致谢。

【问题讨论】:

  • 查看这个问题:link和iText的官方文档link

标签: java pdf itext


【解决方案1】:

您忘记打开文档。设置事件后需要添加以下行:

document.open();

因为您忘记了这一行,所以当您添加图像时,您会收到一个异常通知,通知您文档未打开。

请在下次发布问题时更加具体。例如:共享运行代码时引发的异常。当我第一次阅读您的代码时,我想:这段代码是从官方文档中直接摘录的,为什么它不起作用?

我以为是页面旋转有问题,但是第三遍看了你的问题后,我意识到你没有告诉我们哪里出了问题,所以我又看了一下你的代码,然后我看到了罪魁祸首: ;issing open() 声明。如果你分享了抛出的异常,我会立即看到它。

【讨论】:

  • 实际上我没有忘记 document.open() 语句所以我没有遇到任何错误,当我复制/粘贴代码时它被错误地删除了,是的,这些行来自文档Rotate event = new Rotate(); event.setOrientation(PdfPage.SEASCAPE); writer.setPageEvent(event); 和 Rotate 类也是如此。我无法理解的是,我没有得到应有的 SEASCAPE 页面,并且在我尝试过的一些简单示例中它确实可以正常工作。
  • 好的,那么您应该解决您的问题:添加document.open(),说明您没有收到任何错误,并说明页面没有旋转。理想情况下,您还应该添加一个显示行为的 PDF,以便我们可以检查页面字典(不是屏幕截图,而是实际的 PDF)。没有它,没有人可以帮助您,因为正如您自己所承认的,这些示例可以完美运行。只有您的特定代码不起作用。根据您损坏的复制/粘贴示例,我们看不到您的代码的具体内容。
【解决方案2】:

这样试试

Document document = new Document(PageSize.A4_LANDSCAPE.rotate(),5,5,5,5);

【讨论】:

    猜你喜欢
    • 2013-01-13
    • 1970-01-01
    • 2021-02-10
    • 1970-01-01
    • 1970-01-01
    • 2019-10-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多