我尝试用apache PDFBox保存PDF文件,但出现错误
java.io.IOException:COSStream已关闭,无法读取。也许它所附的PDDocument已经关闭了?
出什么事了?
PDDocument document = PDDocument.load(new File(fileName));
try {
...
document.save(storeFileName);
} finally {
document.close();
}
即使正确关闭了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中添加了信任存储。 下面是应用程序属性文件 我已经尝试通过下面链接中给出的解决方案来解决这个问题,但是没有