使用iTextpdf删除java中的pdf页面

使用iTextpdf删除java中的pdf页面,java,itext,Java,Itext,我有一个现有的功能来显示我无法更改的pdf文件 函数的输入是一个InputStream变量。 在过去,他们常常向它传递一个pdf文件,它会显示出来 但现在他们要求我只显示pdf的前30页。所以我使用的是iTextpdf,我会这样做: PdfReader reader = new PdfReader (inputStream); reader.selectPages("1-30"); 现在我应该将结果作为InputStream变量发送给show方法 我该怎么做? 谢谢您可以使用PdfStampe

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

函数的输入是一个
InputStream
变量。 在过去,他们常常向它传递一个pdf文件,它会显示出来

但现在他们要求我只显示pdf的前30页。所以我使用的是
iTextpdf
,我会这样做:

PdfReader reader = new PdfReader (inputStream);
reader.selectPages("1-30");
现在我应该将结果作为
InputStream
变量发送给show方法

我该怎么做?
谢谢

您可以使用
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);

您可以使用
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);

通过获取现有pdf文件的读取器

PdfReader pdfReader = new PdfReader("source pdf file path");
现在通过以下方式更新读者

 reader.selectPages("1-5,15-20");
然后获取pdf stamper对象,通过

PdfStamper pdfStamper = new PdfStamper(pdfReader,
                new FileOutputStream("destination pdf file path"));
通过以下方式关闭PdfStamper

pdfStamper.close();

它也将关闭pdf阅读器。

通过以下方式获取现有pdf文件的阅读器:

PdfReader pdfReader = new PdfReader("source pdf file path");
现在通过以下方式更新读者

 reader.selectPages("1-5,15-20");
然后获取pdf stamper对象,通过

PdfStamper pdfStamper = new PdfStamper(pdfReader,
                new FileOutputStream("destination pdf file path"));
通过以下方式关闭PdfStamper

pdfStamper.close();
它也将关闭PdfReader