【发布时间】:2015-04-22 05:30:57
【问题描述】:
我有一个jtable 用来显示一些数据。假设我有大约 200 行数据。我可以使用iText library 生成pdf,但我面临的问题是所有行都没有生成。如何动态添加new page 以便生成所有行?请看下面的代码,请在这里帮助我。
Document doc = new Document(new Rectangle(1350, 1450));
PdfDestination pdfDest = new PdfDestination(PdfDestination.XYZ, 0, 800, 0.50f);
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
java.util.Date date = new java.util.Date();
String generatedDate = formatter.format(date);try {
PdfWriter writer;
writer = PdfWriter.getInstance(doc, new FileOutputStream(save_pdf.getSelectedFile().getAbsoluteFile() + ".pdf"));
writer.setViewerPreferences(PdfWriter.PageLayoutSinglePage);
doc.open();
PdfAction action = PdfAction.gotoLocalPage(1, pdfDest, writer);
writer.setOpenAction(action);
doc.add(new Paragraph("REPORTS", f));
doc.add(new Paragraph("Document Generated On - " + generatedDate, f));
PdfContentByte cb = writer.getDirectContent();
cb.saveState();
Graphics2D g2;
g2 = cb.createGraphics(1350, 1275);
Shape oldClip = g2.getClip();
g2.clipRect(0, 0, 1350, 1275);//1275
table1.print(g2);
JTableHeader h = table1.getTableHeader();
h.print(g2);
g2.setClip(oldClip);
writer.newPage();
g2.dispose();
cb.restoreState();
} catch (DocumentException | FileNotFoundException e) {
}
doc.close();
【问题讨论】:
-
我会考虑 JasperReports 甚至是
JTable#print方法之一(并打印到 PDF) -
您可以通过表格的
Printable“伪造”打印JTable,参见JTable#getPrintable -
我一定会通过
Jasper Reports。但是没有其他选择吗?另外,我没有打印JTable。我只需要将Jtable内容生成到pdf。 -
你有一个
Graphics上下文(我假设它是一个java.awt.Graphics),Printable将接受一个Graphics上下文,它可以为你做分页 -
Printable将接受Graphics上下文是什么意思?我只需要将jtable数据生成为PDF格式。