我有一个基于Java/Java EE的应用程序,其中我需要为将提供给用户的各种服务创建PDF证书。我正在寻找一种方法来创建PDF(现在不需要数字证书)。使用java创建复杂pdf
这样做最简单便捷的方法是什么?我一直在使用iText的尝试
- XSL转换为PDF
- HTML转换为PDF。
- 原油Java的方式(使用PDFWriter,PdfPCell等)
什么是最好的出路,这些或者是有哪些是比较容易和方便的任何其他方式?
我有一个基于Java/Java EE的应用程序,其中我需要为将提供给用户的各种服务创建PDF证书。我正在寻找一种方法来创建PDF(现在不需要数字证书)。使用java创建复杂pdf
这样做最简单便捷的方法是什么?我一直在使用iText的尝试
什么是最好的出路,这些或者是有哪些是比较容易和方便的任何其他方式?
当你谈论证书,我认为认准证书的每一个接收相同的,除了标准片:
如果是这样的话,我会用任何工具,它允许你创建一个奇特的证书(Acrobat中,开放式办公,Adobe InDesign中,...),并创建一个ST atic形式(有时称为AcroForm)包含三个字段:名称,课程,日期。
我会再使用iText的填写这样的字段:
PdfReader reader = new PdfReader(pathToCertificateTemplate);
PdfStamper stamper = new PdfStamper(reader, new FileOutputStream(pathToCertificate));
AcroFields form = stamper.getAcroFields();
form.setField("name", name);
form.setField("course", course);
form.setField("date", date);
stamper.setFormFlattening(true);
stamper.close();
reader.close();
从代码中创建此类证书是“辛苦”;从XML创建这样的证书是“一个痛苦”(因为XML不太适合定义布局),使用iText的XML Worker可以从(HTML + CSS)创建证书,但所有这些解决方案都有缺点确保正确定位每件物品,确保每件物品都放在同一页面上是很困难的工作,等等......
维护具有固定字段的模板要容易得多。这样,您只需编写一次代码。如果出于某种原因想要将字段移至其他地方,则只需更改模板,不必担心在代码,XML,HTML或CSS中发生混乱。
有关更多信息,请参阅http://www.manning.com/lowagie2/samplechapter6.pdf(第6.3.5节)。
使用iText pdf库创建PDF的文件从您的api文件生成pdf文件将很容易。这里是链接
文本®是,它允许你创建和操作PDF文档库。它使开发人员能够使用动态PDF文档生成和/或操作来增强Web和其他应用程序。
开发人员可以使用的iText到:
即成PDF的浏览器
生成XML文件或数据库
使用PDF的诸多互动功能动态文档
添加书签,页码,水印等
拆分,连接和操作PDF页面
自动化填写PDF的形成
添加数字签名到PDF文件
我认为这是@Ankit称为*粗糙的java方式(使用PDFWriter,PdfPCell等)*。 ;) – mkl
我推荐第一种方法:XSL到pdf转换,这是最强大的。我有经验可以使用Apache FOP优雅地制作大量的PDF报告(每篇都有数千页),我认为它很好,很容易(但它需要一些关于xsl-FO的知识)。
我也发现XSL转换为pdf格式,但我发现创建XSL是一项繁琐的任务,有没有更简单的方法来创建xsl或者它只能手动创建? – Ankit
XSL有点麻烦,但一旦完成,您可以重复使用它。此外,您可以选择一些优秀的编辑器(例如XMLSpy)来编辑XSL/XML文件,这可能会消除大量的手动输入。 –
您提到的PDF可能很复杂。如果这涉及可变性或布局,则提供合理复杂的基于模板的布局和控件的一个选项是Docmosis。您提供Docmosis作为模板的文档或odt文件,因此它们非常容易更改,Docmosis通过邮件合并来创建pdf或其他格式。请不要我为创建Docmosis的公司工作。
希望有所帮助。
即使这是老问题,我认为它应该是答案。
创建非常复杂的pdf,如证书,报告或付款单等。 您绝对可以使用动态报告库。这个库依赖于贾斯珀报告(这也是非常流行的旧库)。动态报告将为您提供使用Java代码设计您的文档,以便您可以根据需要轻松操作或进行更改。
在他们的网站上有很多可用的例子,并且很容易从这些例子中学习。
下面链接吧:
对于HTML到PDF,你应该尝试飞碟:http://code.google.com/p/flying-saucer/ – user1411778
的*最简单,最方便方式*取决于你想成为多么灵活。如果应该允许那些“证书”包含任何PDF格式的文件,那么您将不得不使用粗糙的Java方式,或者使用iText,这可以通过您引用的类名称或其他体面的PDF库来实现。如果“证书”只是简单的文本而没有小声和哨声,那么脚本解决方案可能更合适。 XSL或JasperReport都有其优点。在我看来,HTML-> PDF只有在您无法帮助获取HTMLn格式的证书模板时才是明智的。 – mkl