减少行间垂直间距的Java代码

标签 java pdf itext

我正在创建一个包含一些内容的 PDF。我的要求是在创建 PDF 时减少行间距,以便在单页中容纳更多行。如何减少行间距?

    Document document = null;
    PdfWriter.getInstance(document,new FileOutputStream("Paragraph2.pdf"));
    document.open();
    
    Font font = new Font(Font.FontFamily.COURIER,12);
   
    //code to get the content to show in the document
       .....
   for (final MyDocument document: doc)
   {
    if (doc.getDocumentLines() != null)
    {
    final DocumentLines documentLines = doc.getLetterLines();
    for (final String line : documentines.getDocumentLine())
    {
       document.add(new Paragraph(line,font));
    } 
    }
   }

更新

我使用了下面的行来减少行与行之间的空间。

Paragraph p = new Paragraph(12,line,font);

当我在我的代码中使用值为 12 的前导时,行之间的空白空间减少了,更多的行从 page2 转移到了 page1。但问题是当我给 Paragraph p = new Paragraph(12,line,font) 行转移到 page1 但我可以看到 page2 中有空格/空行,如下图所示。

enter image description here

在上图中,ADDITIONAL INFORMATION 行应该从页面顶部开始打印,我们可以注意到上图中第 2 页的空白区域。

当我将前导值设置为 11 Paragraph(11,line,font) 时,我注意到它们没有剩余空间,如下图所示。但是 ADDITIONAL INFORMATION 行也在 page1 中,而我期望在 page2 中。对我来说,以 12 开头会给出预期的输出,但如图 1 所示,page2 中有空行,这是一个需要解决的问题。我该如何解决这个空白问题?

enter image description here

最佳答案

两行之间的空间称为前导

您可以使用 setleading() 方法更改它。

例如:

p.setleading(15);

注意:默认情况下,iText 占用字体大小的 1.5 倍。如果字体大小为 12,则行距默认为 18。

也可以在构造函数中设置行距:http://itextsupport.com/apidocs/itext5/latest/com/itextpdf/text/Paragraph.html#Paragraph-float-java.lang.String-com.itextpdf.text.Font-

document.add(new Paragraph(15, line, font));

关于减少行间垂直间距的Java代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39256646/

相关文章:

java - 在浏览器中渲染 docx 文件

java - 将页面的多个副本插入 PDF

java - 无法从 ZIP 文件输入流读取文件

java - 在哪里记录了重载方法的首选参数转换(如果有的话)?

java - 为什么 Spring Boot 不从默认的 application.properties 文件中读取

java - 使用 Tika 解析 PDF 区域

java - lib 升级后 iText pdf 功能损坏 - 无法合并表格

java - 使用运算符 "length"无法在类 "java.lang.String"的对象中找到 "."的值

ios - uiwebview显示pdf文档的安全问题

node.js - 如何将 PDF 附加到从 Express 应用程序发送的电子邮件中