itextpdf-PdfStamper写入文件流到ByteArrayOutputStream注意事项

itextpdf-PdfStamper写入文件流到ByteArrayOutputStream注意事项

1、前情提要

最近做项目时有个需求,把图片合成pdf并且加水印,然后通过base64返回到前端。本来想的很简单,使用PdfStamper,把参数FileOutputSteam换成ByteArrayOutputSteam。之后通过toByteArray()返回字节数组。最后在转成base64字符串。

java 复制代码
baos = new ByteArrayOutputStream();
stamper = new PdfStamper(reader, baos );
...一系列其他操作
bytes = baos .toByteArray();

2、通过上述代码获取到的byte[]数组一直为空,可是当我使用FileOutputStream时,又能正确的输出文件,百思不得其解,折腾了好几个小时。
3、通过我不断努力,不停的搜来搜去,终于找到了一个靠谱的回答,创建PdfStamper之后,立即

获取字节数组baos .toByteArray(),是获取不到的,需要先执行stamper.close()操作。

java 复制代码
baos = new ByteArrayOutputStream();
stamper = new PdfStamper(reader, baos );
...一系列其他操作
// 执行关闭操作
stamper.close()
bytes = baos .toByteArray();

参考

https://stackoverflow.com/questions/61270495/save-pdf-to-bytearray-using-itext-in-java
小尾巴~~

只要有积累,就会有进步

相关推荐
S. Dylan7 小时前
Edge浏览器打开PDF无法显示电子签章
edge·pdf
一马平川的大草原7 小时前
如何基于pdf2image实现pdf批量转换为图片
计算机视觉·pdf·文件拆分
m0_594526307 小时前
Python批量合并多个PDF
java·python·pdf
hairenjing11237 小时前
将图片添加到 PDF 的 5 种方法
pdf
✿゚卡笨卡7 小时前
pdf 添加页眉页脚,获取前五页
java·pdf
blegn7 小时前
PDF编辑工具Adobe Acrobat DC 2023安装教程(附安装包)
pdf·办公软件·office
patrickpdx9 小时前
如何调整pdf的页面尺寸
pdf
星月前端12 小时前
【vue-pdf】简单封装pdf预览组件
javascript·vue.js·pdf
Eiceblue16 小时前
Python 在PDF中绘制形状(线条、矩形、椭圆形等)
vscode·python·pycharm·pdf
有过~16 小时前
免费且强大的PDF转换工具——PDFgear
pdf