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



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

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

我将为此使用Play Framework 2.5Java/Scala作为编程语言。但是现在我不知道是否有任何免费的库/API 可以用来实现此文档生成。

我应该能够操作字体大小,样式,缩进,段落,页面边框,页码,对齐方式,文档页眉和页脚,页面大小(A4,法律等)其他一些基本的东西。我需要广泛支持编辑和打印目的的格式的文档。比如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 模板,并在运行时将表单中的输入(如姓名、年龄、地址等)放入模板中。

这是从此链接引用的示例代码

 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"));
}