如何在 Java/Scala 中创建 PDF/DOCX 个文件?

How to create a PDF/DOCX files in Java/Scala?

我正在创建一个 Web 应用程序,它将接受用户的一些输入(如姓名、年龄、地址等)并生成一些预定义的表格,其中包含供用户下载和打印的填充信息。

例如,驾驶执照申请表或类似的东西。后端将具有有关要生成的文档的格式信息,其他信息将从前端的用户那里收集。

我将为此使用 Play Framework 2.5Java/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"));
}