当前位置: 首页 > 知识库问答 >
问题:

java.io.IOException:COSStream已关闭,无法读取。也许它所附的PDDocument已经关闭了?

后焕
2023-03-14

我尝试用apache PDFBox保存PDF文件,但出现错误

java.io.IOException:COSStream已关闭,无法读取。也许它所附的PDDocument已经关闭了?

出什么事了?

PDDocument document = PDDocument.load(new File(fileName));
try {
    ...
    document.save(storeFileName);
} finally {
    document.close();
}

共有1个答案

慎俊艾
2023-03-14

即使正确关闭了PDDoc,我也看到了上面的错误。可能是什么问题。

我的代码是:

public PDPage addPageWithSVG(PDDocument document, String svg) throws IOException {
    log.debug("addPageWithSVG");

    // Ensure Fop don't auto system scan font to avoid RHEL pitfall link with legit infinite path
    PDFTranscoder transcoder = new PDFTranscoder();
    transcoder.addTranscodingHint(PDFTranscoder.KEY_AUTO_FONTS, false);
    // end of correction

    TranscoderInput transcoderInput = new TranscoderInput(new StringReader(svg));
    ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
    TranscoderOutput transcoderOutput = new TranscoderOutput(byteArrayOutputStream);
    PDDocument source = null;
    PDPage newPage = null;
    try {
        transcoder.transcode(transcoderInput, transcoderOutput);
        byte pdfData[] = byteArrayOutputStream.toByteArray();
        source = PDDocument.load(pdfData);
        PDPage sourcePage = source.getPage(0);
        newPage = document.importPage(sourcePage);

    } catch (TranscoderException | IOException e) {
        e.printStackTrace();
    } finally {
            if(source !=  null){
                source.close();
            }
    }
    return newPage;
}
 类似资料:
  • 本质上,我试图用Java创建一个小工具,从某种用户输入中获取文本,想象一个普通的文本框,并用它创建一个PDF文件。 到目前为止,我用我对pdfbox的基本知识很快地学到了一些东西。 在我的应用程序中,我在另一个带有GUI元素的应用程序中实例化这个类(如下所示),如果我输入文本,比方说在一个文本框中,并且运行这个脚本一次--它运行起来非常好,但是第二次运行它,它就会崩溃,并给我带来这个恼人的错误:

  • 我在我的项目中有下一个代码,它时不时地与

  • 我做过研究,在运行workingdocument.save(文件名)命令之前,似乎有一个PDDocument正在关闭。我不是很确定如何修复这个,我也有点迷路如何找到一个变通办法。我对我的编程有点生疏,所以任何帮助都将非常感谢!此外,任何关于如何使未来的帖子更多信息的反馈都将是很好的。 提前致谢

  • 我正在用Java生成一个PDDocument,代码如下... 然后保存并关闭文档,如下所示... 有没有一种方法可以关闭流并创建多个PDF,而不会出现抓取文件错误?

  • 我正在尝试用PDFBOX填充重复的表单。我正在使用树状图并用单个记录填充表单。pdf表格的格式是在第一页列出六个记录,在第二页插入一个静态页。(对于大于6条记录的树映射,该过程重复)。Im获得的错误与TreeMap的大小有关。这就是我的问题所在。我不明白为什么当我用35个以上的条目填充TreeMap时,我会得到以下警告: 2018年4月23日2:36:25 AM org.apache.pdfbox

  • 我在springboot应用程序中使用webclient来调用外部restful web服务。间歇性地获取此异常。 在收到此异常之前,我在日志中看到以下警告。 这是完整的堆栈跟踪: 这是MessageServiceImpl.java 这里是客户端组件类 在下面的配置中,我在SSLContext中添加了信任存储。 下面是应用程序属性文件 我已经尝试通过下面链接中给出的解决方案来解决这个问题,但是没有