【问题标题】:Delete pdf pages in java with iTextpdf使用 iTextpdf 删除 java 中的 pdf 页面
【发布时间】:2019-01-01 10:55:53
【问题描述】:

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

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

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

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

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

我应该怎么做? 谢谢

【问题讨论】:

    标签: java itext


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

      获取现有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。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-11-10
        • 1970-01-01
        • 1970-01-01
        • 2023-03-18
        • 2023-01-24
        • 2017-01-27
        • 1970-01-01
        相关资源
        最近更新 更多