Java 应用于段落的itext spacingBefore属性导致新页面

Java 应用于段落的itext spacingBefore属性导致新页面,java,pdf,itext,Java,Pdf,Itext,我对itext库有如下问题: 我想在第二段中使用spacingBefore属性在两段之间放置一个垂直空格 问题在于,从一定的空间单位值(默认为点单位)来看,itext会导致第二段显示在新页面上,即使明显有足够的空间将这两段放在同一页面上 此代码说明了这种情况: public static void main(String[] args) throws Exception { Document document = new Document(); OutputS

我对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();
}
有人解释过这种奇怪的行为吗


提前感谢

我已将您的代码复制到一个独立的示例中。您可以在此处找到此示例:

我不认为这与你所做的有什么不同,但在我的例子中,这两段是在同一页上。请自己查一下

可能您也在
第1段
之前应用了空格,或者您使用的是旧版本的iText(例如2.1.7,一个已过时且不应再使用的版本),或者您使用的是非正式版本的iText(例如iText 4,一个由第三方创建的版本,没有人知道使用它是否合法)


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

正如Bruno所说,我使用的是2012年发布的itext:5.1.2的“旧”错误版本。这个错误由5.5.1版本修复,如变更日志中所述:

修正了创建新页面前后的间距问题


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

请随意接受答案(您的或我的),这样人们就可以看到问题已经解决。
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();
}