2011-02-23 65 views
1

我有一个scala.xml树中的文档(这很容易转换为其他任何内容),并将它转换为一系列PNG文件。使用Java/Scala创建文档的格式化PNG'页面'

例如,该文件可能是这样的:

<doc 
    title="My Document" 
    author="John Doe" 
    created="1 July 1977" 
    published="19 July 1799" 
> 
    <section heading="An Analysis of Multiparticles"> <!-- Section 1 --> 
    <p>Paragraph one goes here</p> <!-- INTRODUCTION! --> 
    <p>Paragraph two goes here</p> 
    </section> 
    <section heading="Conclusion of Multiparticles"> <!-- Section 2 --> 
    <p>Paragraph one goes here</p> <!-- INTRODUCTION! --> 
    <p>Paragraph two goes here</p> 
    </section> 

</doc> 

我那么喜欢把这一文档转换为PNG,看起来像这样减下编造的话红线(I” ð提供规则的格式,字体使用,等等等等): Image

而且,如果可能的话,较长的文档应该能够成为“分页”到任何数量的PNG文件会后流入下一个击中说,500px的高度或东西。

如果有一个现有的Java库/软件包可以做到这一点,可以做到这一点的任何一部分(或一对夫妇可以将它们放在一起) - 非常棒!否则,我想知道我应该从哪里开始编写Scala(最好)或Java中的这样的代码。

谢谢!

+0

您目前是否以任何其他方式呈现文档 - 例如,在HTML或PDF中? – gutch 2011-02-23 00:36:41

+0

我可以在HTML中呈现它,减去分页。 – 2011-02-23 00:39:37

回答

0

您想使用iText库。这使您可以操纵文档,生成PDF以及其他任何您想要使用的功能,非常先进,功能非常强大,非常适合Java。一旦你有PDF文件,你可以将其内容导出为任何你想要的格式,在internet上有很多PDF - > PNG选项。

从头版:

开发人员可以使用的iText到:

* Serve PDF to a browser 
* Generate dynamic documents from XML files or databases 
* Use PDF's many interactive features 
* Add bookmarks, page numbers, watermarks, etc. 
* Split, concatenate, and manipulate PDF pages 
* Automate filling out of PDF forms 
* Add digital signatures to a PDF file 
0

我建议通过LaTeX,例如http://htmltolatex.sourceforge.net/。在那里,您可以设置合适的页面大小,转换为PDF,将PDF分解为单独的页面,然后将页面转换为所需大小的PNG。

或者你真的需要整个事情成为一个在JVM下运行的程序吗?

+0

我需要纯JVM代码。抱歉。 – 2011-02-25 23:16:20

+0

可惜。有很多非常强大的完全自动化的工具(尤其是Linux),它们能够以最小的努力一起完成您所需要的工作。 – 2011-02-25 23:33:21

1

我会建议PDF导出代替。其他人提到iText:我已经开始使用iText作为客户端(从Scala调用)。它似乎在PDFBox的低级单调和更高级别的Jasper Reports之间很好地保持一致。