【发布时间】:2020-04-17 11:25:54
【问题描述】:
我正在使用 itext 读取一个大的 pdf 文件并保存选定的页面。
PdfReader reader = null;
reader = new PdfReader("customPath/largePdf.pdf");
int pages = reader.getNumberOfPages();
List<Integer> pagesList = new ArrayList<Integer>();
pagesList.add(1);
pagesList.add(2);
reader.selectPages(pagesList);
String path;
PdfStamper stamper = null;
path = String.format("customerPath/split.pdf");
stamper = new PdfStamper(reader, new FileOutputStream(path));
到目前为止一切顺利,我可以打开 split.pdf 了。
现在,我不想将其保存到文件中,而是将其保存到字节数组中(以便以后可以将其保存为 blob)
试过这个:
PdfReader reader = null;
reader = new PdfReader("customPath/largePdf.pdf");
int pages = reader.getNumberOfPages();
List<Integer> pagesList = new ArrayList<Integer>();
pagesList.add(1);
pagesList.add(2);
reader.selectPages(pagesList);
ByteArrayOutputStream baos = new ByteArrayOutputStream();
PdfStamper stamper2 = new PdfStamper(reader, baos);
byte[] byteARy = baos.toByteArray();
为了确保它有效,我尝试将此字节数组写入文件:
OutputStream out = new FileOutputStream("customPath/fromByteArray.pdf");
out.write(byteARy);
out.close();
fromByteArray.pdf 无法打开且大小为零,您知道可能出了什么问题吗?
【问题讨论】:
-
您在创建
PdfStamper后立即检索baos.toByteArray()。那时输出中没有(旁边)任何内容。您必须等到关闭PdfStamper后才能检索输出。 -
完美!,你能把这个写成答案吗,我可以接受:)谢谢