我有一个现有功能来显示无法更改的pdf文件。
函数的输入是一个InputStream
变量。
过去,他们通常将pdf文件传递给它,并显示它。
但是现在他们要求我只显示pdf的前30页。因此,我正在使用iTextpdf
,并且执行以下操作:
PdfReader reader = new PdfReader (inputStream);
reader.selectPages("1-30");
现在我应该将结果作为InputStream
变量发送以显示方法。
我应该怎么做? 谢谢
答案 0 :(得分:2)
您可以使用PdfStamper
存储结果,如下所示:
PdfReader reader = new PdfReader (inputStream);
reader.selectPages("1-30");
ByteArrayOutputStream os = new ByteArrayOutputStream();
PdfStamper stamper = new PdfStamper(reader, os);
stamper.close();
byte[] changedPdf = os.toByteArray();
如果您希望结果再次出现在InputStream inputStream
变量中,只需添加一行
inputStream = new ByteArrayInputStream(changedPdf);
答案 1 :(得分:0)
通过以下方式获取现有pdf文件的读者
PdfReader pdfReader = new PdfReader("source pdf file path");
现在通过以下方式更新阅读器
reader.selectPages("1-5,15-20");
然后获取pdf压模对象,以将更改写入文件:
PdfStamper pdfStamper = new PdfStamper(pdfReader,
new FileOutputStream("destination pdf file path"));
通过以下方式关闭PdfStamper
pdfStamper.close();
它也会关闭PdfReader。