Java 如何在数据库中自动保存pdf报告?
我的编程语言是java。我的应用程序是基于web的应用程序。我使用BIRT生成pdf报告,但要求在查看pdf报告后自动将其保存到数据库中。在BIRT中,pdf文档是从rpt模板动态生成的。当用户单击URL时,BIRT查看器应用程序将显示pdf文档 要求是一旦生成pdf,我需要在MySql数据库中保存pdf文件的副本。这应该自动发生。一旦用户查看pdf(在动态生成pdf时),pdf文件的副本应保存在数据库中Java 如何在数据库中自动保存pdf报告?,java,mysql,pdf,jakarta-ee,birt,Java,Mysql,Pdf,Jakarta Ee,Birt,我的编程语言是java。我的应用程序是基于web的应用程序。我使用BIRT生成pdf报告,但要求在查看pdf报告后自动将其保存到数据库中。在BIRT中,pdf文档是从rpt模板动态生成的。当用户单击URL时,BIRT查看器应用程序将显示pdf文档 要求是一旦生成pdf,我需要在MySql数据库中保存pdf文件的副本。这应该自动发生。一旦用户查看pdf(在动态生成pdf时),pdf文件的副本应保存在数据库中 请让我知道,我如何才能做到这一点?这取决于您如何使用数据库、direct jdbc、hib
请让我知道,我如何才能做到这一点?这取决于您如何使用数据库、direct jdbc、hibernate等等。。。但基本上你必须做到以下几点:
- 设计一个实体(和表)来保存blob
- 不要在MySQL中使用BLOB,它非常小,最好是LONGBLOB
- 从文件中创建
,通常必须从文件中获取inputstreamjava.sql.Blob
- 将blob附加到hibernate实体,查询参数
- 坚持
希望有帮助 除了malaguna的答案之外,关键是首先将PDF存储在数据库中,然后将其提供给客户端。这需要具备JDBC和web编程的基本知识。查看servlet示例应用程序的源代码(您似乎正在使用)。您只需将PDF输出保存为数据库中的一个BLOB(正如malaguna建议的那样),然后再将其返回给客户端。您好,我正在使用jdbc。不管你怎么描述,我已经在做这个过程了。如果有人在html表单中输入pdf,那么这将起作用。但我的问题是如何自动保存它们。如何获取在BIRT中动态生成的pdf的输入流?啊!好的,对不起。简单且不坏的选择是将PDF报告存储为tmp文件,获取输入流,执行Blob作业并删除临时文件。这听起来可能不太有效,但与将PDF转换为bytearray然后获取输入流相比,它需要的内存更少。如果您不想担心临时文件的删除,可以使用apache commons中的
FileCleaningTracker
。您不能编写一个在PDF生成的onRender事件中启动的脚本吗?或者制作一个自定义发射器,将PDF文件发送到某个地方。我认为问题不在于在哪里,而在于如何发送。要创建Blob,您需要一个输入流;要创建输入流,您需要一个源,即文件、字节数组。。。能否将内存中的PDF对象转换为bytearray或输入流?能否发布示例url以说明生成PDF报告的方式?