【问题标题】:itext spacingBefore property applied to Paragraph causes new page应用于段落的 itext spacingBefore 属性会导致新页面
【发布时间】:2015-10-05 09:56:21
【问题描述】:

我对 itext 库有一个问题,可以描述如下:

我想通过使用第二个段落的 spacingBefore 属性在两个段落之间放置一个垂直间距。

问题在于,从某个空间单位值(默认为点单位)开始,itext 会导致第二个段落显示在新页面上,即使显然有足够的空间将两个段落放在同一页面上。

这段代码说明了这种情况:

    public static void main(String[] args) throws Exception {
       Document document = new Document();
       OutputStream result = new FileOutputStream("output.pdf");
       PdfWriter.getInstance(document, result);
       document.open();

       Paragraph paragraph1 = new Paragraph("First paragraph");

       Paragraph paragraph2 = new Paragraph("Second paragraph");
       //380 causes the new page...
       paragraph2.setSpacingBefore(380f);

       //...whereas 370 does not
       //  paragraph2.setSpacingBefore(370f);

       document.add(paragraph1);
       document.add(paragraph2);

       document.close();
}

有人解释过这种奇怪的行为吗?

提前致谢

【问题讨论】:

    标签: java pdf itext


    【解决方案1】:

    我已将您的代码复制到一个独立的示例中。你可以在这里找到这个例子:ParagraphSpacingBefore

    public void createPdf(String filename) throws IOException, DocumentException {
        Document document = new Document();
        PdfWriter.getInstance(document, new FileOutputStream(filename));
        document.open();
        Paragraph paragraph1 = new Paragraph("First paragraph");
        Paragraph paragraph2 = new Paragraph("Second paragraph");
        paragraph2.setSpacingBefore(380f);
        document.add(paragraph1);
        document.add(paragraph2);
        document.close();
    }
    

    我认为这与您正在做的事情没有什么不同,但就我而言,这两个段落在一个页面上。请查看paragraph_spacebefore.pdf 自行查找。

    也许您还在 paragraph1 之前应用了间距,或者您使用的是旧版本的 iText(例如 2.1.7,一个已过时且不应再使用的版本),或者您使用的是非官方的iText 的版本(例如 iText 4,由第三方创建的版本,没有人知道它是否合法使用)。

    简而言之:问题无法解释,因为问题无法重现。

    【讨论】:

      【解决方案2】:

      正如 Bruno 所说,我使用的是 itext 的“旧”错误版本:2012 年发布的 5.1.2。此错误已由 5.5.1 版本修复,如更新日志http://itextpdf.com/changelog/551 中所述:

      关于创建新页面前后间距的错误修正。

      当使用较新的版本时,一切正常:)

      【讨论】:

      • 随意接受一个答案(无论是你的还是我的),这样人们就可以看到问题已经解决了。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-02
      • 1970-01-01
      • 2016-06-09
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多