我正在制定一个结算程序 - 现在当您点击相应的按钮时,它会生成一个显示各种费用的框架,基本上是一张发票。有没有办法让用户选择将该框架保存为文档Microsoft Word,Microsoft Works或PDF?
答案 0 :(得分:3)
一种方法是将帧保存为图像,您可以使用以下语法将其转换为图像。
BufferedImage myImage = new BufferedImage(size.width,size.height,
BufferedImage.TYPE_INT_RGB);
Graphics2D g2 = myImage.createGraphics();
myComponent.paint(g2);
然后您可以保存此图像并将其传递给jasper报告。然后,您可以从JasperPrint对象中以几种不同的格式保存,包括pdf。一个更好但相似的方法是将Graphics上下文传递给JasperReports(有一个渲染器在jasper中执行此操作,质量更好)。
答案 1 :(得分:2)
JFrame
中绘制BufferedImage
。 paint()
JFrame
方法
答案 2 :(得分:2)
我宁愿使用像iText这样的Java库来生成PDF文档(更便携),或者更好的是,可以输出报告的JasperReport报告库,而不是生成word文档。以bigbrother82在评论中建议的各种格式(PDF,XML,HTML,CSV,XLS,RTF,TXT)。这比使用图像更清晰,特别是对于打印(甚至没有提到您的发票可能是多页文档)。
答案 3 :(得分:0)
我可能会从一个稍微不同的方向看这个,而不是询问如何将GUI表格原样打印到PDF或word文档中,我会问如何将该内容转换为Word / PDF文档。
该问题的答案是Apache FOP。生成XSL-FO文件并要求FOP将其转换为RTF文档(扩展名为.DOC)或PDF。
通常,人们通过生成包含您需要打印的数据的XML文件来完成此操作。然后使用XSLT将该XML转换为XSL-FO。然而,我发现使用模板语言(例如Freemarker)直接生成XSL-FO文件更容易。
答案 4 :(得分:0)
您可能希望查看Docmosis的在线演示作为示例,该示例为用户提供了预先请求文档的选项。该演示进行了下载,但它可以将文档引导到框架中,然后将其留给浏览器进行显示。这种工作方式(正如其他人所说)从不同的角度看待问题并决定采用什么格式,而不是事后再尝试保存帧内容。