gpt4 book ai didi

java - 在Java中使用itext将pdf保存到bytearray

转载 作者:行者123 更新时间:2023-12-04 10:12:13 25 4
gpt4 key购买 nike

我正在使用 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 未打开且大小为零,您知道可能有什么问题吗?

最佳答案

创建 baos.toByteArray() 后立即检索字节数组(使用 PdfStamper ) .

PdfStamper stamper2 = new PdfStamper(reader, baos);
byte[] byteARy = baos.toByteArray();

那时输出中(旁边)没有任何内容。您必须等到关闭您的 PdfStamper 之后。检索输出。
PdfStamper stamper2 = new PdfStamper(reader, baos);
...
stamper2.close();
byte[] byteARy = baos.toByteArray();

现在字节数组应该包含完整的、加盖戳的 PDF。

关于java - 在Java中使用itext将pdf保存到bytearray,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61270495/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com