PDF文件空后输出与泽西



我正试图将我在服务器中生成的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%����50 obj& lt;>流x���1��g?�����endstreamendobj60 obj<>]/Intent/Perceptual/Subtype/Image/Height 600/Filter/FlateDecode/Type/XObject/Width 600/SMask 5 0 R/Length 23357/BitsPerComponent 8>>streamx���{pU��>拉钮¥E@����Bu8��ܔ!@ %�= P�H) j�Ns΀xAD8"IA��$��我�r�Ŋ0 ~ @�������7 @b。{��k = k������������我����_"�����nݺu͚5 k��;w��我��}��一个Æ�����ׯw���ݺuܹ年代ǎ۷oߪu�f͚5 n����뮫w ^ bbb | |�u ?������_____��!�年代�O��克p8v = DD�6�֯��{�����cƌy���克ao�> U nݸ����& lt; c����页8 t0�年代���k)"你��ȑ�7���L����R(���WIDD�(. .޾}{vvvfffZZZӦM =��LoB�P (EC��P@����C"����ӦM6lX�ػ�" PF % EaQ ^������B����jƌ�jܸ1{�

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

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

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

2)由于某种原因,邮差Chrome应用程序似乎受到同样的问题,我们的节点服务器。使用DHC插件Chrome后端测试修复了我的问题。

所以我犯了一个错误,假设问题是在代码的服务器端,因为邮差和客户端给出了相同的问题,而在现实中,结果是在邮差之间似乎也有一个问题。还不太确定,以后会调查为什么它在DHC上工作,而不是在Postman上。

最新更新