如何在 Java/Scala 中创建 PDF/DOCX 个文件?
How to create a PDF/DOCX files in Java/Scala?
我正在创建一个 Web 应用程序,它将接受用户的一些输入(如姓名、年龄、地址等)并生成一些预定义的表格,其中包含供用户下载和打印的填充信息。
例如,驾驶执照申请表或类似的东西。后端将具有有关要生成的文档的格式信息,其他信息将从前端的用户那里收集。
我将为此使用 Play Framework 2.5 和 Java/Scala 作为编程语言。但是现在我不知道是否有任何免费的 libraries/APIs 可以用来实现此文档生成。
我应该能够处理 字体大小、样式、缩进、段落、页面边框、页码、对齐方式、文档页眉和页脚、页面大小(A4、Legal 等) 其他一些基本的东西。我需要格式广泛支持编辑和打印的文档。例如 PDF、DOCX。 DOCX 是首选,因此用户可以在下载文档后进行编辑,然后再进行打印。
我已经使用apache POI库解析和创建ms word文档(包括docx)文件:
http://www.tutorialspoint.com/apache_poi_word/apache_poi_word_quick_guide.htm
它并不令人惊奇,但它是我发现的最好的:)
我使用了 docx4j.jar,它只是将 xhtml 转换为 docx。
根据您的要求,您可以将格式信息保存为 xhtml 模板,并在运行时将来自表单的输入(如姓名、年龄、地址等)放入模板。
这是参考的示例代码 link
public static void main(String[] args) throws Exception
{
String xhtml=
"<table border=\"1\" cellpadding=\"1\" cellspacing=\"1\" style=\"width:100%;\"><tbody><tr><td>test</td><td>test</td></tr><tr><td>test</td><td>test</td></tr><tr><td>test</td><td>test</td></tr></tbody></table>";
// To docx, with content controls
WordprocessingMLPackage wordMLPackage = WordprocessingMLPackage.createPackage();
XHTMLImporterImpl XHTMLImporter = new XHTMLImporterImpl(wordMLPackage);
wordMLPackage.getMainDocumentPart().getContent().addAll(
XHTMLImporter.convert( xhtml, null) );
wordMLPackage.save(new java.io.File("D://sample.docx"));
}
我正在创建一个 Web 应用程序,它将接受用户的一些输入(如姓名、年龄、地址等)并生成一些预定义的表格,其中包含供用户下载和打印的填充信息。
例如,驾驶执照申请表或类似的东西。后端将具有有关要生成的文档的格式信息,其他信息将从前端的用户那里收集。
我将为此使用 Play Framework 2.5 和 Java/Scala 作为编程语言。但是现在我不知道是否有任何免费的 libraries/APIs 可以用来实现此文档生成。
我应该能够处理 字体大小、样式、缩进、段落、页面边框、页码、对齐方式、文档页眉和页脚、页面大小(A4、Legal 等) 其他一些基本的东西。我需要格式广泛支持编辑和打印的文档。例如 PDF、DOCX。 DOCX 是首选,因此用户可以在下载文档后进行编辑,然后再进行打印。
我已经使用apache POI库解析和创建ms word文档(包括docx)文件:
http://www.tutorialspoint.com/apache_poi_word/apache_poi_word_quick_guide.htm
它并不令人惊奇,但它是我发现的最好的:)
我使用了 docx4j.jar,它只是将 xhtml 转换为 docx。
根据您的要求,您可以将格式信息保存为 xhtml 模板,并在运行时将来自表单的输入(如姓名、年龄、地址等)放入模板。
这是参考的示例代码 link
public static void main(String[] args) throws Exception
{
String xhtml=
"<table border=\"1\" cellpadding=\"1\" cellspacing=\"1\" style=\"width:100%;\"><tbody><tr><td>test</td><td>test</td></tr><tr><td>test</td><td>test</td></tr><tr><td>test</td><td>test</td></tr></tbody></table>";
// To docx, with content controls
WordprocessingMLPackage wordMLPackage = WordprocessingMLPackage.createPackage();
XHTMLImporterImpl XHTMLImporter = new XHTMLImporterImpl(wordMLPackage);
wordMLPackage.getMainDocumentPart().getContent().addAll(
XHTMLImporter.convert( xhtml, null) );
wordMLPackage.save(new java.io.File("D://sample.docx"));
}