我正在使用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
后才能检索输出。该问题与IT有关。 - mkl