在 iText PDF 文档中安装 JTable
Fitting a JTable in an iText PDF Document
我有一个有四列的 JTable
。我正在使用 iText 库打印包含来自 JTable 的数据的 PDF 文档。问题是 JTable 在 PDF 中没有正确显示。我在 Google 上搜索过 the same situation here. The code is similar to mine as well as the output. I have also tried this example using Templates,但是,结果没有改变。
我们如何解决这个问题?请协助。如果代码是必需的,我会 post 但它们太多了 类 - 我正在开发一个大型应用程序。 我想要的概念是使 JTable 适合文档。
经过长期的奋斗,我终于做到了,如下图。万一有人遇到这种情况,这是救了我的想法:
public void actionPerformed(ActionEvent e) {
try {
Document doc = new Document();
PdfWriter.getInstance(doc, new FileOutputStream("table.pdf"));
doc.open();
PdfPTable pdfTable = new PdfPTable(table.getColumnCount());
//adding table headers
for (int i = 0; i < table.getColumnCount(); i++) {
pdfTable.addCell(table.getColumnName(i));
}
//extracting data from the JTable and inserting it to PdfPTable
for (int rows = 0; rows < table.getRowCount() - 1; rows++) {
for (int cols = 0; cols < table.getColumnCount(); cols++) {
pdfTable.addCell(table.getModel().getValueAt(rows, cols).toString());
}
}
doc.add(pdfTable);
doc.close();
System.out.println("done");
} catch (DocumentException ex) {
Logger.getLogger(MainWindow.class.getName()).log(Level.SEVERE, null, ex);
} catch (FileNotFoundException ex) {
Logger.getLogger(MainWindow.class.getName()).log(Level.SEVERE, null, ex);
}
}
};
我有一个有四列的 JTable
。我正在使用 iText 库打印包含来自 JTable 的数据的 PDF 文档。问题是 JTable 在 PDF 中没有正确显示。我在 Google 上搜索过 the same situation here. The code is similar to mine as well as the output. I have also tried this example using Templates,但是,结果没有改变。
我们如何解决这个问题?请协助。如果代码是必需的,我会 post 但它们太多了 类 - 我正在开发一个大型应用程序。 我想要的概念是使 JTable 适合文档。
经过长期的奋斗,我终于做到了,如下图。万一有人遇到这种情况,这是救了我的想法:
public void actionPerformed(ActionEvent e) {
try {
Document doc = new Document();
PdfWriter.getInstance(doc, new FileOutputStream("table.pdf"));
doc.open();
PdfPTable pdfTable = new PdfPTable(table.getColumnCount());
//adding table headers
for (int i = 0; i < table.getColumnCount(); i++) {
pdfTable.addCell(table.getColumnName(i));
}
//extracting data from the JTable and inserting it to PdfPTable
for (int rows = 0; rows < table.getRowCount() - 1; rows++) {
for (int cols = 0; cols < table.getColumnCount(); cols++) {
pdfTable.addCell(table.getModel().getValueAt(rows, cols).toString());
}
}
doc.add(pdfTable);
doc.close();
System.out.println("done");
} catch (DocumentException ex) {
Logger.getLogger(MainWindow.class.getName()).log(Level.SEVERE, null, ex);
} catch (FileNotFoundException ex) {
Logger.getLogger(MainWindow.class.getName()).log(Level.SEVERE, null, ex);
}
}
};