输出泽西岛

时间:2015-06-02 13:54:11

标签: java pdf jersey

我正在尝试将我在服务器中生成的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   <>流   X1 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=kI_“Nݺu͚5K;加权像} AAEׯW¯¯ݺüܹsǎ7oߪUf͚5n뮫w ^ ^ BBB ||ú?__   !___ sGOp8v = DD6 ֯ {cƌyGao>的Unݸ< C p 8T0 S k)“” u ȑ 7 L R ( WIDD (..޾} {vvvfffZZZӦM= LoB P (ECP @ “” ÇӦM6lXػ   PF%蒽醌^ “” Bjƌ   Ĵܸ1{

从现在开始不要去哪里,任何指针都会受到赞赏。

1 个答案:

答案 0 :(得分:1)

好几下电话后,我设法解决了我的问题,可分为两部分:

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

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

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

相关问题