gpt4 book ai didi

java - 使用 Jersey 输出后 PDF 文件为空

转载 作者:行者123 更新时间:2023-11-30 11:02:56 25 4
gpt4 key购买 nike

我正在尝试将我在服务器中生成的 PDF 文件发送到我的 Jersey 应用程序中的客户端。一代顺利,我在本地机器上创建了文件,没有问题。

当我尝试通过流发送它时出现问题。当我尝试读取输出的文件时,它完全是空的(有时,它只是损坏了,相同的文件相同的代码,但文件已损坏而不是空白)但是,页面数量是正确的,这真的很奇怪。然后我尝试使用流创建一个本地文件,它工作得很好,所以我很确定问题不在于我在流中放置的内容,而是在我将其发送到客户端的方法中。我也尝试了不同的、完全正常的 pdf,但我遇到了同样的问题。

一些代码示例

@Path("/produiretest/{id}")
@GET
@Produces("application/pdf")
public Response rapportStreamTest(@PathParam("id") Long id) throws Exception {
final StreamingOutput file = manager.produireRapportStreamingTest(id);
Response.ResponseBuilder response = Response.ok(file);
response.header("Content-Disposition", "attachment; filename=\"" + "previsualisationFicheSignaletique.pdf");
return response.build();
}

StreamingOutput 实现(即使我认为这是正确的)

StreamingOutput outStream = new StreamingOutput() {
@Override
public void write(OutputStream outputStream) {
try {
JasperExportManager.exportReportToPdfStream(jasperPrint, outputStream);
outputStream.flush();
outputStream.close();
}
catch (Exception ex) {

}
}
};
return outStream;

我戳服务器时得到的响应示例,显然已损坏。

%PDF-1.4 %���� 5 0 obj <>stream x���1 ��g ?����� endstream endobj 6 0 obj <>]/Intent/Perceptual/Subtype/Image/Height 600/Filter/FlateDecode/Type/XObject/Width 600/SMask 5 0 R/Length 23357/BitsPerComponent 8>>stream x���{pU��>pLB¥E@�� ��Bu8��ܔ!@% �=P�H)j�Ns΀xAD8"IA��$��i�r�Ŋ0@�~������7@B.{��k=k������������I����_"�����nݺu͚5K�.�;w��I��}��aÆ�����ׯw��ݺu�ܹsǎ۷oߪU�f͚5n���뮫W�^bbb||�U?������__ ___��!�s�G�O�p8v=DD�6�֯��{�����cƌy��G�ao�>U�nݸ���<�C��p�8T0�S���k)""�u�ȑ�7���L���R� (���WIDD�(..޾}{vvvfffZZZӦM=��LoB�P(�EC�P@����""�Ç���ӦM6lX�ػ� PF%EaQ^���""���B����jƌ� jܸ1{�

从现在开始不要真的去哪里,任何指点将不胜感激。

最佳答案

好的,在打了几个电话之后,我设法解决了我的问题,这个问题可以分为两部分:

1) 我们的应用程序结构的工作方式是,我们的客户端应用程序不会直接访问后端应用程序所在的 Tomcat 服务器。我们有一个 Node.js 服务器作为请求的调度程序。显然,节点中存在一个问题,试图用错误的编码或其他方式解释流。必须联系管理节点的团队。

2) 由于某种原因,Postman Chrome 应用程序似乎受到与我们的节点服务器相同的问题的困扰。使用 Chrome 的 DHC 插件进行后端测试解决了我的问题。

所以我错误地认为问题出在代码的服务器端,因为 Postman 和客户端给出了同样的问题,而实际上结果介于两者之间,而且 Postman 似乎也有问题。还不太确定,稍后将不得不调查为什么它适用于 DHC 而不是 Postman。

关于java - 使用 Jersey 输出后 PDF 文件为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30598111/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com