如何将字节数组转换为PDF文件?

时间:2014-12-10 15:43:17

标签: java java-ee pdf pdf-generation inputstream

尝试从Web服务输出对象恢复的字节数组创建PDF时出现以下问题。

所以我有以下情况:

OutFat outFat = callServizioContabRighe(dataEM, esercizio, importo, bolla, numDoc, oda, pIva, contratto);

byte[] pdfByteArray = outFat.getPDF();
ByteArrayOutputStream osPdf  = new ByteArrayOutputStream();

if(pdfByteArray != null) {
    InputStream is = new ByteArrayInputStream(pdfByteArray);
    sun.misc.BASE64Decoder base64Decoder = new BASE64Decoder();
    byte[] byteArray64DecodePdf = null;

    try {
        byteArray64DecodePdf =  base64Decoder.decodeBuffer(is);
    } catch (IOException e) {
        e.printStackTrace();  //To change body of catch statement use File | Settings | File Templates.
    }

    try {
        osPdf.write(byteArray64DecodePdf);
    } catch (IOException e) {
        e.printStackTrace();  //To change body of catch statement use File | Settings | File Templates.
    }
}

if(osPdf != null && pdfByteArray != null){
    req.getSession().setAttribute("PdfEM", osPdf);       // Usa il PDF recuperato dal WS
}
else {
    req.getSession().setAttribute("PdfEM", createPdfEM.createPdf());    // Crea il PDF
}

if(osPdf != null && pdfByteArray != null){
    this.baos = osPdf;
}
else {
    this.baos = createPdfEM.createPdf();                    // CREA IL PDF
}

好的,我有 pdfByteArray ,它是从outFat对象(webservice输出对象)检索到的字节数组,代表我的PDF。

现在我必须使用它来构建PDF并将其显示在视图中。

因此,要创建PDF,请执行以下步骤:

  1. 我使用WS检索到的 pdfByteArray 创建 InputStream 对象。
  2. 我解码它(它在base64中,所以我需要解码它)。
  3. 我将解码后的 byteArray64DecodePdf 写入 osPdf outpustream对象。
  4. 然后,如果前面的步骤成功,我将它放入我的视图中(否则我以另一种方式创建我的PDF,但这与此问题无关)。

    问题在于,在我看来,我无法看到我的PDF内容,但我只看到一个灰色方块而不是它。

    可能是什么问题?

    如何保存我的PDF的本地副本以尝试在我的本地系统上看到它而不是浏览器?所以我可以理解问题是在转换中还是其他地方

    TNX

0 个答案:

没有答案