使用 java 创建(复杂?)doc/pdf 文档 - 最好的方法是什么?

发布于 2024-11-04 13:48:53 字数 507 浏览 0 评论 0原文

我们需要创建一个包含部分模型数据的 pdf 或 doc 文档。每个模型对象都包含单个值,加上一些相关数据的集合,它们的长度不同。现在,可以禁用模型数据的某些部分,以便它们不应该包含在最终文档中。我需要一种巧妙的方法来仅使用模型数据的选定部分来创建文档,并且我不想遇到诸如以下的混乱:

if (DATA_TITLE is selected)
   add DATA_TITLE to document
if (DATA_AUTHOR is selected)
   add DATA_TITLE to document
etc..

如何以优雅的方式避免这种情况?

另一件事:目前我想“以编程方式”创建文档,例如使用 Apache POI lib。但是,也许还有其他方法,我可以使用文档模板并用 EL 表达式填充数据,从而在模板中使用 ${data.author} 字段。但是,如何管理这样一个事实:并非所有数据元素都可能被选择用于文档导出,并且相关数据的集合可能具有不同的长度。

我需要你宝贵的知识:)

we need to create a pdf or doc document contaning some portion of model data. Each model object contains single values, plus few collections of related data, they are of various length. Now, some portions of the model data can be disabled, so that they should not be included in the final document. I need a clever way to creating a document using only selected parts of model data, and I don't wont to run into mess like:

if (DATA_TITLE is selected)
   add DATA_TITLE to document
if (DATA_AUTHOR is selected)
   add DATA_TITLE to document
etc..

How can I avoid this in a elegant way?

And the other thing: at the moment I wanted to create the document "programatically", using for example Apache POI lib. But, maybe there is some other way, where I can use document templates and fill the data wit EL expressions, thus with using ${data.author} fields withing the template. But then, how to manage the fact, that not all the data elements may be selected for document export, and that collections of related data may be of various length.

I need your precious knowledge :)

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

悲欢浪云 2024-11-11 13:48:53

如果您不想以编程方式进行转换,则可以使用 XSL-FO 转换。

我仍然推荐 iText。

You can use XSL-FO transformations if you don't want to do it programmatically.

I'd still recommend iText.

狼亦尘 2024-11-11 13:48:53

为了回答您的第一个问题,仅当以编程方式更改受影响的字段时,我才会使用观察者设计模式来更新文档模型。

对于第二个问题,如果您使用带有观察者的文档模型,您可以简单地为您的字段创建一个默认实现,该实现只能通过您编码到观察者中的事件来更改。

查看该模式:观察者模式

To answer your first question, I would use the Observer design pattern to update a document model only when the affected fields are changed programmatically.

For your second question, if you used a document model with an observer, you could simply create a default implementation for your fields which would only be changed through events that you code into your observer.

Check out the pattern: Observer Pattern

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文