java - 如果pdf是从java代码生成的,如何解决损坏的pdf文件?

标签 java pdf buffer inputstream fileinputstream

我使用java语言来生成pdf报告,但是我的报告来自jasper。 java代码将通过调度程序运行,这是我的pdf报告将在清晨由服务器调度程序自动生成。问题是,我的一些已生成的 pdf 无法打开。它是腐败的。并非所有 pdf 都会遇到此问题,只有一两个 pdf 会被损坏。

下面的代码是生成我的 pdf 的部分。

public static void saveFileFromUrlWithJavaIO(String fileName, String fileUrl)
        throws MalformedURLException, IOException {
    BufferedInputStream in = null;
    FileOutputStream fout = null;

    try {
        in = new BufferedInputStream(new URL(fileUrl).openStream());
        fout = new FileOutputStream(fileName);

        byte data[] = new byte[1024];
        int count;
        while ((count = in.read(data, 0, 1024)) != -1) {
            fout.write(data, 0, count);

        }
        fout.flush();
        logger.debug("ADD FLUSH");
    }catch(IOException e) {

        logger.debug("For exception: {}", e);
    }catch(Exception e) {
        logger.debug("For exception 123: {}", e);
    }  finally {
        if (in != null) {
            in.close();
        }
        if (fout != null) {
            fout.close();
        }
    }
}

作为信息,我已经将刷新插入到代码中,但文件仍然损坏。 任何人都可以帮助我,我真的很感激。 谢谢

最佳答案

您无法在 PDF 查看器中打开这些“PDF 文件”的原因(至少对于您的示例文件而言)是因为该文件不是 PDF 文件首先,它是一个 HTML 文件!

更确切地说,它是TIBCO Jaspersoft:JasperReports服务器错误页面显示

Error Message

There was an error on the server. Try again or contact site administrators. (Error UID: fcefabf1-6158-4549-969c-25c9ec4f9ba2)

因此,当您的 Java 代码尝试检索报告时,有时计划报告的生成可能会失败或根本尚未完成。

关于java - 如果pdf是从java代码生成的,如何解决损坏的pdf文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60628024/

相关文章:

java - parboiled 中的类型参数 V 的用途是什么

java - 将用户输入的数字列表放入数组中

java - 我们如何在 MySQL 表格单元格中以类似列表的格式存储文本?

c - 关闭(STDOUT_FILENO)行为后到终端的标准输入输出

python - 在 Python 中切片文件

java - Android应用程序推送器的实现

javascript - 使用 PDF-LIB 合并 PDF

java - Doc4j - 使用文档中的表格将 docx 转换为 PDF 时遇到问题

perl - Perl 的最佳 XSLT 引擎是什么?

连接丢失后 iOS AVPlayer 缓慢重新缓冲