我正在生成一个文档,就像下面的代码一样,当然除了表格的内容,这些内容是不同的。我需要做的是确保该表格的大小永远不会超过一页,无论单元格中的内容量如何。有没有办法做到这一点?
导入 com.itextpdf.text.Phrase; 导入com.itextpdf.text.Document; 导入 com.itextpdf.text.DocumentException; 导入com.itextpdf.text.PageSize; 导入com.itextpdf.text.pdf.PdfPCell; 导入com.itextpdf.text.pdf.PdfPTable; 导入 java.awt.Desktop; 导入java.io.File; 导入 java.io.FileNotFoundException; 导入 java.io.FileOutputStream; 导入 java.io.IOException;public void createTemplate() 抛出 DocumentException、FileNotFoundException、IOException{ 字符串目标 = System.getProperty("user.home")+"\temp.pdf";
文档 document = new Document(PageSize.A4); PdfWriter writer = PdfWriter.getInstance(document, new FileOutputStream(TARGET)); 文档.open();PdfPTable table = new PdfPTable(7); for (int i = 0; i < 105; i++) { Phrase p = new Phrase("some text"); PdfPCell cell = new PdfPCell(); cell.addElement(p); table.addCell(cell); } table.setTotalWidth(PageSize.A4.getWidth()-10); table.setLockedWidth(true); PdfContentByte canvas = writer.getDirectContent(); PdfTemplate template = canvas.createTemplate(table.getTotalWidth(),table.getTotalHeight()); table.writeSelectedRows(0, -1, 0, PageSize.A4.getHeight(), template); Image img = Image.getInstance(template); img.scaleToFit(PageSize.A4.getWidth(), PageSize.A4.getHeight()); img.setAbsolutePosition(0, PageSize.A4.getHeight()); document.add(img); document.close(); Desktop desktop = Desktop.getDesktop(); File file = new File(TARGET); desktop.open(file); }
编辑:@Bruno Lowagie。包含在图像中的模板的提示对我来说听起来恰到好处,我据此更改了代码,但我现在得到的只是一个空的 PDF。我做错了什么,或者这完全是错误的方法?