如何在PDF中插入空行?

我正在使用iText创buildPDF。 我想在段落和表格之间插入空行。

我怎样才能做到这一点?

您可以通过将Chunk.NEWLINE插入文档来触发换行。 这是一个例子。

 public static void main(String args[]) { try { // create a new document Document document = new Document( PageSize.A4, 20, 20, 20, 20 ); PdfWriter.getInstance( document, new FileOutputStream( "HelloWorld.pdf" ) ); document.open(); document.add( new Paragraph( "Hello, World!" ) ); document.add( new Paragraph( "Hello, World!" ) ); // add a couple of blank lines document.add( Chunk.NEWLINE ); document.add( Chunk.NEWLINE ); // add one more line with text document.add( new Paragraph( "Hello, World!" ) ); document.close(); } catch (Exception e) { e.printStackTrace(); } } 

下面是一个屏幕截图,显示了上面的代码生成的PDF的一部分。

你好PDF插入空白行

而要在表格之间插入空行,您可以使用这两种方法

 table.setSpacingBefore(); table.setSpacingAfter(); 

你可以尝试一个空白的短语:

 document.add(new Phrase("\n")); 
 you can add Blank Line threw PdfContentByte class in itextPdf package com.pdf.test; import java.io.FileOutputStream; import java.io.IOException; import java.net.URL; import com.itextpdf.text.Chunk; import com.itextpdf.text.Document; import com.itextpdf.text.DocumentException; import com.itextpdf.text.Element; import com.itextpdf.text.Font; import com.itextpdf.text.Image; import com.itextpdf.text.Paragraph; import com.itextpdf.text.Phrase; import com.itextpdf.text.Rectangle; import com.itextpdf.text.pdf.PdfContentByte; import com.itextpdf.text.pdf.PdfPCell; import com.itextpdf.text.pdf.PdfPTable; import com.itextpdf.text.pdf.PdfWriter; public class Ranvijay { public static final String RESULT = "d:/printReport.pdf"; public void createPdf(String filename) throws Exception { Document document = new Document(); PdfWriter writer = PdfWriter.getInstance(document, new FileOutputStream(filename)); document.open(); Font bold = new Font(Font.FontFamily.HELVETICA, 8f, Font.BOLD); Font normal = new Font(Font.FontFamily.HELVETICA, 8f, Font.NORMAL); PdfPTable tabletmp = new PdfPTable(1); tabletmp.getDefaultCell().setBorder(Rectangle.NO_BORDER); tabletmp.setWidthPercentage(100); PdfPTable table = new PdfPTable(2); float[] colWidths = { 45, 55 }; table.setWidths(colWidths); String imageUrl = "http://ssl.gstatic.com/s2/ozhttp://img.dovov.comlogo/2x/googleplus_color_33-99ce54a16a32f6edc61a3e709eb61d31.png"; Image image2 = Image.getInstance(new URL(imageUrl)); image2.setWidthPercentage(60); table.getDefaultCell().setBorder(Rectangle.NO_BORDER); table.getDefaultCell().setHorizontalAlignment(Element.ALIGN_RIGHT); table.getDefaultCell().setVerticalAlignment(Element.ALIGN_TOP); PdfPCell cell = new PdfPCell(); cell.setBorder(Rectangle.NO_BORDER); cell.addElement(image2); table.addCell(cell); String email = "ranvijay9286@gmail.com"; String collectionDate = "09/09/09"; Chunk chunk1 = new Chunk("Date: ", normal); Phrase ph1 = new Phrase(chunk1); Chunk chunk2 = new Chunk(collectionDate, bold); Phrase ph2 = new Phrase(chunk2); Chunk chunk3 = new Chunk("\nEmail: ", normal); Phrase ph3 = new Phrase(chunk3); Chunk chunk4 = new Chunk(email, bold); Phrase ph4 = new Phrase(chunk4); Paragraph ph = new Paragraph(); ph.add(ph1); ph.add(ph2); ph.add(ph3); ph.add(ph4); table.addCell(ph); tabletmp.addCell(table); PdfContentByte canvas = writer.getDirectContent(); canvas.saveState(); canvas.setLineWidth((float) 10 / 10); canvas.moveTo(40, 806 - (5 * 10)); canvas.lineTo(555, 806 - (5 * 10)); canvas.stroke(); document.add(tabletmp); canvas.restoreState(); PdfPTable tabletmp1 = new PdfPTable(1); tabletmp1.getDefaultCell().setBorder(Rectangle.NO_BORDER); tabletmp1.setWidthPercentage(100); document.add(tabletmp1); document.close(); } /** * Main method. * * @param args * no arguments needed * @throws DocumentException * @throws IOException */ public static void main(String[] args) throws Exception { new Ranvijay().createPdf(RESULT); System.out.println("Done Please check........"); } } 

您可以在段落中使用“\ n”

 document.add(new Paragraph("\n\n")); 

你可以添加空行;

  Paragraph p = new Paragraph(); // add one empty line addEmptyLine(p, 1); // add 3 empty line addEmptyLine(p, 3); private static void addEmptyLine(Paragraph paragraph, int number) { for (int i = 0; i < number; i++) { paragraph.add(new Paragraph(" ")); } } 
 document.add(new Paragraph("")) 

以上是无效的,必须加一个空白string,如下所示:

 document.add(new Paragraph(" ")); 

而不是使用:

 document.add( Chunk.NEWLINE ); 

用这个:

 document.add(new Paragraph("")); 

它使小空间

我不得不在桌子后面添加空白行,我pipe理它添加很多div,因为我需要它与填充顶部的CSS样式设置它,像这样。 我使用了一个模板引擎(下划线)来遍历我需要添加的行数。

  <% var maxRow = 30; var pos = items.models.length; %> <% for( pos; pos < maxRow; pos++ ){ %> <div class="blankRow"></div> <% }; %> 

我的CSS文件:

  .blankRow:{ padding-top: 15px;} 

希望这对你有所帮助。

你也可以使用

 document.add(new Paragraph()); document.add(new Paragraph()); 

在分开之前,如果你使用的也是好的。

我发布了另一个问题,但我发现与iTextSharp使用表提供了一个很高的精度水平。

 document.Add(BlankLineDoc(16)); public static PdfPTable BlankLineDoc(int height) { var table = new PdfPTable(1) {WidthPercentage = 100}; table = BlankLineTable(table, height); return table; } public static PdfPTable BlankLineTable(PdfPTable table, int height, int border = Rectangle.NO_BORDER) { var cell = new PdfPCell(new Phrase(" ")) { Border = border, Colspan = table.NumberOfColumns, FixedHeight = height }; table.AddCell(cell); return table; } 

使用表格时,可以直接使用BlankLineTable