1

我在 jscrollpane 中有一个 jpanel,我想将所有内容jpanel(包括一些label, textarea)导出为 pdf 格式。目前我正在使用此代码jbutton

Document document = new Document(PageSize.A4.rotate(),50,50,50,50);
try {
PdfWriter writer = PdfWriter.getInstance(document, new FileOutputStream("C:\\Users\\Admin\\Desktop\\test1.pdf"));
document.open();
PdfContentByte contentByte = writer.getDirectContent();
//jp is the jpanel
PdfTemplate template = contentByte.createTemplate(jp.getWidth(), jp.getHeight());
Graphics2D g2 = template.createGraphics(jp.getWidth(),jp.getHeight());
g2.scale(0.8, 1);
        jp.printAll(g2); // also tried with jp.paint(g2), same result
        g2.dispose();

        //document.close();
contentByte.addTemplate(template, 5, 60);
} catch (Exception e) {
e.printStackTrace();
}
finally{
if(document.isOpen()){
    document.close();
}

}

输出:我得到了jpanelpdf 的下半部分...(我制作了 jpanel 的快照,但我的声誉不允许发布图像),上半部分被丢弃。我认为最后一部分被导出为单页用来。第一部分被覆盖(这只是一个猜测!)为了查看jpanel我们需要滚动的整体......如何将整个面板(从上到下)导出为 pdf 到多个页面,因为 jpanel 的高度超过A4 页。请帮忙。提前致谢。

注意:我正在使用 netbeans 来开发我的 gui,itextpdf-5.4.1我是 java 编程的初学者。

4

1 回答 1

0

您需要关闭PrintWriter并尝试添加 addNotify,validate

jp.addNotify();
jp.setSize();
jp.validate();
于 2013-04-29T12:04:18.630 回答