0
我現在已經有了這個問題。我正在爲該文檔繪製一個pie chart
並顯示jtable data
。我無法align
中的內容pdf file
。如何將jtable data
以及pie chart
與此pdf
對齊。我在下面提到了我的code
,其中有image
。 正如你所看到的,我需要將我的jtable data
稍微調整到頂部,並且它必須符合page
的width
。使用java中的itext對齊PDF中的內容
private void graphical_to_pdf() {
graph_table.setSize(graph_table.getPreferredSize());
JTableHeader th = graph_table.getTableHeader();
th.setSize(th.getPreferredSize());
PdfDestination pdfDest = new PdfDestination(PdfDestination.XYZ, 800, 800, 0.65f);
com.itextpdf.text.Font f = new com.itextpdf.text.Font(com.itextpdf.text.Font.FontFamily.TIMES_ROMAN, 18.0f, com.itextpdf.text.Font.NORMAL, BaseColor.BLACK);
Document doc = new Document(new com.itextpdf.text.Rectangle(900, 900));
//Creating a paper to store the jtable contents
Paper paper = new Paper();
paper.setSize(800, 800);
paper.setImageableArea(0, 100, 800, 800);
PageFormat pf = new PageFormat();
pf.setPaper(paper);
Printable printable = graph_table.getPrintable(JTable.PrintMode.NORMAL, null, null);
try {
PdfWriter writer;
writer = PdfWriter.getInstance(doc, new FileOutputStream(save_pdf.getSelectedFile().getAbsoluteFile() + ".pdf"));
writer.setViewerPreferences(PdfWriter.PageLayoutSinglePage);
doc.open();
int width = 375;
int height = 300;
JFreeChart chart = create_pie_chart_count();
doc.add(new Paragraph("Some TExt", f));
doc.add(new Paragraph("Some Text", f));
doc.add(new Paragraph("Document Generated On - " + generatedDate, f));
BufferedImage bufferedImage = chart.createBufferedImage(width, height);
Image image = Image.getInstance(writer, bufferedImage, 1.0f);
image.scalePercent(100f);
image.setAlignment(image.MIDDLE);
doc.add(image);
PdfAction action = PdfAction.gotoLocalPage(1, pdfDest, writer);
writer.setOpenAction(action);
BufferedImage img = new BufferedImage(1, 1, BufferedImage.TYPE_INT_ARGB);
Graphics2D g = img.createGraphics();
int page = 0;
int result = Printable.NO_SUCH_PAGE;
PdfContentByte cb = writer.getDirectContent();
do {
result = printable.print(g, pf, page);
if (result == Printable.PAGE_EXISTS) {
cb.saveState();
Graphics2D g2 = cb.createGraphics(650, 225);
result = printable.print(g2, pf, page);
g2.dispose();
cb.restoreState();
page++;
doc.newPage();
}
} while (result == Printable.PAGE_EXISTS);
g.dispose();
} catch (Exception e) {
} finally {
doc.close();
}
}
嗯,這確實幫助。我不得不改變完整的東西,它運作良好。但我從來沒有使用任何'PdfTemplate'。相反,只是從我的'jtable'中提取數據並將其添加到'PdfCell'中。謝謝 :) – Rajeev