【发布时间】:2017-06-20 10:13:32
【问题描述】:
我正在尝试在写入之前将现有的 pdf 复制到另一个中。 这是我将现有 pdf 复制到 ByteOutputStream 的代码:
documentPDF.open()
for(int i=0;i<nbPages;){
copy.addPage(copy.getImportedPage(reader, ++i))
}
documentPDF.close()
copy.close()
PdfReader reader= new PdfReader("DocDeBase30.pdf");
reader.selectPages("1-5")
def documentPDF =new Document()
ByteArrayOutputStream baos = new ByteArrayOutputStream()
PdfCopy copy = new PdfCopy(documentPDF, baos)
documentPDF.open()
for(int i=0;i<nbPages;){
copy.addPage(copy.getImportedPage(reader, ++i))
}
documentPDF.close()
copy.close()
reader.close();
return baos
然后我使用此步骤将 pdf 文件呈现到我的视图中:
response.setContentType("application/pdf")
response.setHeader('Content-disposition', "attachment; filename=intercalaire.pdf")
response.outputStream << result
response.outputStream.flush()
result.close()
其中 result 是返回的 baos。
该文件在我的浏览器中正确打开,但它是空白的,没有任何内容被复制。
供您参考,当我使用物理路径而不是使用 ByteArrayOutputStream 时它工作正常,但我必须在我的应用程序中使用动态文档,因此物理路径不是一个选项。
有什么想法吗?
提前谢谢
【问题讨论】:
-
也许您正在按照此处的说明刮掉字节:itext.2136553.n4.nabble.com/… 没有看到 PDF,我们几乎无法告诉您有关此问题的其他信息。如果页面存在,但页面内容为空,则您的服务器配置为提供纯文本且无法提供二进制数据。