在现有pdf中的itext中追加数据

2023-12-20

我正在与文本 pdf图书馆。我想在现有 pdf 的末尾添加内容。

举例来说,现有的 pdf(例如 Original.pdf)有 4 页,所以我想添加另一页,即第 5 页的内容你好世界我添加了内容并将其保存在同一个 pdf 中,即原件.pdf

所以关闭后我的 Original.pdf 将包含5页面即4 页(默认内容已有)+ 1 页有内容你好世界我添加了内容

我正在使用这段代码但显示异常

        String in="Original.pdf";
        String out="Original.pdf";        

        PdfReader reader = new PdfReader(in);
        PdfStamper stamper = new PdfStamper(reader,new FileOutputStream(out));

        int totalPages=reader.getNumberOfPages();
        stamper.insertPage(totalPages+1, PageSize.A4);
        stamper.addAnnotation(
                                PdfAnnotation.createText(
                                                            stamper.getWriter(),
                                                            new Rectangle(30f, 750f, 80f, 800f),
                                                            "inserted page", "This page is the title page.",
                                                            true,
                                                            null)
                                ,
                                reader.getNumberOfPages()
                             );
        stamper.close();

java.io.EOFException

提前致谢。


我认为问题出在你正在使用的事实FileOutputStream and a FileInputStream在同一个文件上。

我建议将 pdf 保存在 ByteArrayOutputStream 上,关闭压模,然后保存ByteArrayOutputStream在你的文件中。

我用过IOUtils.write(byte[]数据,OutputStream输出) http://commons.apache.org/io/api-1.4/org/apache/commons/io/IOUtils.html方法来保存ByteArrayOutputStream in the FileOutputStream .

我已经测试过这个并且它有效:

    String in = "Original.pdf";
    String out = "Original.pdf";

    PdfReader reader = new PdfReader(in);

    ByteArrayOutputStream baos = new ByteArrayOutputStream();
    PdfStamper stamper = new PdfStamper(reader, baos );

    int totalPages = reader.getNumberOfPages();
    stamper.insertPage(totalPages + 1, PageSize.A4);
    stamper.addAnnotation(PdfAnnotation.createText(stamper.getWriter(), new Rectangle(30f, 750f, 80f, 800f), "inserted page", "This page is the title page.", true, null),
            reader.getNumberOfPages());
    stamper.close();

    FileOutputStream fileOutputStream = new FileOutputStream(out);
    IOUtils.write(baos.toByteArray(), fileOutputStream);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在现有pdf中的itext中追加数据 的相关文章

随机推荐

  • 具有类型 nat 的向量的应用实例

    我目前正在与善良的人玩耍 并在尝试定义矢量数据类型的应用实例时陷入困境 我认为一个合理的例子是pure 1 Vec 3 Int会给我一个长度为 3 的向量 所有元素均为值 1 和 lt gt 运算符将函数与值压缩在一起 我陷入困境的问题是它
  • 使用 pandas 将过滤器列表应用到来自列表的数据帧

    我有一个列列表 用于在来自列表的数据框中应用过滤器 过滤器值来自另一个列表 早些时候 当列表固定时 我使用以下语句来完成工作 df result df df filterfieldList 0 filterValuesList 0 df f
  • Elasticsearch 独奏 与 Couchbase+Elasticsearch

    让我描述一下这个问题 现在我正处于架构变革的阶段 我曾经使用 Elasticsearch 作为聚合和搜索工具 但现在我正在考虑使用它作为主要数据库 我读到不建议使用 Elasticsearch 作为主数据库 仅作为索引 所以我阅读了有关将其
  • IBM/AS400 上是否安装了 git

    我在 AS400 上运行 PHP AS400 上也可以安装 Git 吗 我想用它来维护版本控制 YiPs 网站提供了有关如何在 PASE 中运行它的说明 你可以在这里找到它 http youngiprofessionals com wiki
  • ng-build 上的端口和代理配置

    例如 我有一个前端在 int myapp com 上运行 它的后端在 int backend myapp com 上运行 我想我可以像这样使用 proxy config json 进行代理 api target https int back
  • 不清楚如何使用 python elasticsearch 更新插入 ElasticSearch

    在这里查看类似的示例 https stackoverflow com a 33247409 1575066 https stackoverflow com a 33247409 1575066 from elasticsearch impo
  • 为什么
    会清除浮动?

    考虑以下测试用例 其中浮动元素和内联元素放置在 fieldset 与一个 div float float right background color red height 200px h1 With fielset h1 fieldset
  • 搜索文件中的单词列表,然后在另一个文件中找到这些单词,将整行替换为 Class=ShipDummy,替换其下面的 2 行

    我想从外部列表 简单地一行中的每个单词 中搜索单词列表 我们将其称为 List txt 并在文件中搜索它们 C Users P Ditty 文件 SH3 data cfg Backups SCR clg 匹配整个单词 即使它在另一个单词中
  • ReferenceEquals 在处理字符串时出错

    为什么在这种情况下ReferenceEquals对象的方法有不同的行为吗 string a fg string b fg Console WriteLine object ReferenceEquals a b 所以在这种情况下会得到一个结
  • WordPress - 没有此类文件或目录问题

    当我加载我的 WordPress 网站时收到此错误 警告 include once plugins acf location field master acf location php function include once 未能 打开
  • 库里的“readline”(或“haskeline”)?

    编写程序最实用的方法是什么柯里编程语言 http en wikipedia org wiki Curry programming language会有一个带有不错的行编辑功能的控制台用户界面吗 实际上 我需要传递一个字符串作为用户输入的建议
  • add_dependency 和 add_runtime_dependency 之间的区别?

    使用有什么区别add dependency and add runtime dependency在 Rails 引擎的 gemspec 中 例如 Gem Specification new do s s add dependency jqu
  • 在 Asp Mvc 网站中显示默认路由的完整 url

    我想当有人导航到我网站的根目录时显示完整的 URL 如果他们导航到 www mysite com 默认路由会正确处理它并显示正确的页面 问题是浏览器中的 URL 显示为 www mysite com 而不是 www mysite com u
  • 如何在不影响 MySQL 数据库的情况下跟踪页面浏览量

    我正在尝试使用以下查询跟踪 MySQL DB 中的页面浏览量 UPDATE table SET pageviews pageviews 1 WHERE page id 1 这对于中低流量来说是很好的 然而 在高流量下 对数据库的持续写入将导
  • glTexImage2D完成上传时如何收到通知?

    我想在纹理上传到 OpenGL 后进行渲染 但我无法收到有关完成的通知 我确实想避免使用动画或任何类型的重复渲染 glTexImage2D 到底是异步的吗 据我所知 几乎每个 OpenGL 调用都是异步的 无论如何 如果我也能知道 glDr
  • IoC 容器示例 [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 使用 Pytest 运行文档测试和普通测试

    在我的 Python 项目中 我使用 Pytest 目录结构为 src docs test 我有不同类型的测试 正常测试 在test 源代码中的文档测试 src 文档中的文档测试 docs rst 狮身人面像 我想一次运行所有这些 这样我就
  • 在magento布局xml中使用条件

    想知道是否有人在 magento 的布局 XML 中为自定义模块使用过 or 语句 我意识到我可以检查模块控制器或块本身中的值 但它似乎是逻辑所在的逻辑位置 Mage Core 将它们用于catalog xml测试 JavaScript 谢
  • 是否将可重入锁设为静态并使其成为互斥锁?

    在 Brian Goetz 的 Java Concurrency in Practice 一书中 他的可重入锁示例的编程如下 Lock lock new ReentrantLock 但是 我很好奇是否将上面的代码更改为 private st
  • 在现有pdf中的itext中追加数据

    我正在与文本 pdf图书馆 我想在现有 pdf 的末尾添加内容 举例来说 现有的 pdf 例如 Original pdf 有 4 页 所以我想添加另一页 即第 5 页的内容你好世界我添加了内容并将其保存在同一个 pdf 中 即原件 pdf