使用iTextpdf删除Java中的pdf页面

时间:2019-01-01 10:55:54

标签: java itext

我有一个现有功能来显示无法更改的pdf文件。

函数的输入是一个InputStream变量。 过去,他们通常将pdf文件传递给它,并显示它。

但是现在他们要求我只显示pdf的前30页。因此,我正在使用iTextpdf,并且执行以下操作:

PdfReader reader = new PdfReader (inputStream);
reader.selectPages("1-30");

现在我应该将结果作为InputStream变量发送以显示方法。

我应该怎么做? 谢谢

2 个答案:

答案 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。