Caching 玩框架2.1.3 pdf问题

Caching 玩框架2.1.3 pdf问题,caching,pdf,playframework,Caching,Pdf,Playframework,所以我正在做一个学校的项目,我们设计了一个网络应用程序,它接收了很多用户信息,创建了一个pdf,然后应该向用户显示该pdf,以便他们可以打印或保存它。我们正在使用游戏!框架2.1.3作为我们的框架,服务器端使用Java。我使用Apache的PDFbox库创建pdf。在开发模式下,每件事情都能正常工作,即使用playsrun命令在本地主机上启动它。问题是,当我们将它放到服务器上并使用plays start命令I启动时,它似乎拍摄了我存放output.pdf文件的目录(或至少是资产/公用文件夹)的快

所以我正在做一个学校的项目,我们设计了一个网络应用程序,它接收了很多用户信息,创建了一个pdf,然后应该向用户显示该pdf,以便他们可以打印或保存它。我们正在使用游戏!框架2.1.3作为我们的框架,服务器端使用Java。我使用Apache的PDFbox库创建pdf。在开发模式下,每件事情都能正常工作,即使用playsrun命令在本地主机上启动它。问题是,当我们将它放到服务器上并使用plays start命令I启动时,它似乎拍摄了我存放output.pdf文件的目录(或至少是资产/公用文件夹)的快照(我已尝试将该文件移到其他位置,但这似乎仍然会导致404错误)。起初,我认为这是我们部署到的liunx机器造成的缓存问题,并尝试了许多技巧来阻止浏览器缓存pdf 就像使用javascript在文件名上附加时间戳一样

在游戏中使用此缓存控制指令!文档
“assets.cache./public/stylesheets/output.pdf”=“max age=0”

然后,我尝试每次将pdf保存为不同的文件名,并传回该文件的名称,并通过HTML中的文件结构直接调用它 这也适用于run命令,但不适用于start

最后我得出的结论是,当发出start命令时,它会聚集文件,因此只有在发出start命令时存在的文件才能被看到

我在这里读了文档

然后我注意到了这一部分

当您运行start命令时,Play分叉一个新的JVM并运行 默认的Netty HTTP服务器。标准输出流被重定向到 播放控制台,以便您可以监视其状态

因此,它派生出一个新的JVM这一事实似乎是造成我痛苦的原因

所以我的问题是,这是否可以通过某种方式让web应用程序创建和显示pdf表单?(如果我无法让它工作,我的唯一解决方案是 我能看到的是,我将不得不用HTML模拟表单,然后从那里填写它——我真的认为这是一种不好的方法

这似乎是应该有一个解决办法,但我似乎无法找到或想出一个请帮助

我在这里看过:


答案可能在那里,但我没有得到它的工作,我是这个游戏相当新手!Framework仍然

您试图将生成的PDF文件交付给用户,方法是将其放置在assets目录中,并在HTML中添加指向该文件的链接。这在开发模式下工作,因为Play在目录中查找资产。它在生产环境中不起作用,因为当您执行
playdist
时,项目被包装到一个jar文件中,并且play应用程序无法修改jar文件的内容。(在开发模式下,Play有一个目录的类路径条目。在生产模式下,类路径指向jar文件)

使用JavaStream,您的思路是正确的。前进的道路是:

  • 在本地文件系统的某个地方生成PDF(我建议使用temp目录)
  • 应用程序
    对象中编写一个新的
    操作
    ,用于打开生成的文件,并提供该文件而不是网页
  • 查看播放文档以了解更多信息。这种方法还有一个优点,即可以指定用户看到的文件名。有一个重载函数
    Controller.ok(文件文件,字符串文件名)
    用于执行此操作。(生成文件时,应为其指定一个唯一的名称,否则每个请求都将覆盖上一个请求中的文件。但您不希望用户看到唯一的名称)