Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/398.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 将pdf附加到servlet内存中的itext pdf_Java_Servlets_Pdf_Itext - Fatal编程技术网

Java 将pdf附加到servlet内存中的itext pdf

Java 将pdf附加到servlet内存中的itext pdf,java,servlets,pdf,itext,Java,Servlets,Pdf,Itext,我正在创建一个系统,该系统使用iText for Java在servlet中使用ByteArrayOutputStream和PdfWriter动态创建PDF,以防止使用文件系统 我想能够附加一些现有的PDF文件页面的末尾动态创建的PDF一旦动态内容完成 我已经查看了使用iText连接PDF的示例代码,它们使用PdfCopy来实现这一点。PdfCopy的主要假设是,所有被连接的文件都存在于文件系统中 是否可以将现有文件连接到内存中PDF的末尾,该PDF以ByteArrayOutputStream的

我正在创建一个系统,该系统使用iText for Java在servlet中使用ByteArrayOutputStreamPdfWriter动态创建PDF,以防止使用文件系统

我想能够附加一些现有的PDF文件页面的末尾动态创建的PDF一旦动态内容完成

我已经查看了使用iText连接PDF的示例代码,它们使用PdfCopy来实现这一点。PdfCopy的主要假设是,所有被连接的文件都存在于文件系统中

是否可以将现有文件连接到内存中PDF的末尾,该PDF以ByteArrayOutputStream的形式存在

同时,我为初始动态文档使用了一个临时文件,但如果可能的话,我希望删除该依赖项

谢谢


Allen

拥有
输入流
(不同文档)的列表,您可以通过以下方式将它们附加到
输出流
(基于):

private void doMerge(列表列表,OutputStream OutputStream)
抛出DocumentException,IOException{
文档=新文档();
PdfCopy copy=新的PdfCopy(文档、输出流);
document.open();
int n;
用于(输入流输入:列表){
PdfReader读取器=新PdfReader(in);

对于(int i=1;i您假设只能使用文件路径创建一个
PdfReader
实例。这种假设是错误的。请参阅。如果
baos
是您的
ByteArrayOutputStream
,您可以像这样轻松创建您的读卡器实例:

PdfReader reader = new PdfReader(baos.toByteArray());

正如前面多次提到的,这不是将PDF.With
newdocument()连接起来的方式
,您创建了一个文档,其中所有页面的纵向尺寸均为A4。您如何知道每个PdfImportedPage的纵向尺寸也为A4?如果原始文档包含批注怎么办?当使用
PdfWriter
PdfImportedPage
组合使用时,它们都将丢失。请调整您的示例,以便t使用问题中指出的
PdfCopy
。我只是根据我实际拥有的代码提供了答案,很高兴了解新事物;-)+1谢谢!生成的PDF也更加健壮:导入的页面不再使用表单XObject,而是有了真正的页面字典和内容流。完美。这正是我想要的。我很快就会实现,希望明天能实现。谢谢Bruno。
PdfReader reader = new PdfReader(baos.toByteArray());