如何使用 Ruby 在现有 PDF 上编辑或书写?

2024-04-20

我有几个 PDF 模板文件,其中包含复杂的内容和几个空白区域/区域。我需要能够在这些空白区域写入文本并将生成的 PDF 保存在文件夹中。

我在谷歌上非常集中地搜索了这个问题的答案,但没有找到明确的答案。更好的解决方案之一是PDF::工具包 http://pdf-toolkit.rubyforge.org/,但需要购买 Adob​​e Acrobat 才能向现有 PDF 文档添加可替换属性。

PHP 世界充满了祝福FPDI http://www.setasign.de/products/pdf-php-solutions/fpdi/它可用于简单地打开 PDF 文件并在现有内容上书写/绘图。有一个该库的 Ruby 端口 https://github.com/jeremydurham/ruby-fpdi,但它的最后一次提交发生在 2009 年初。而且该项目看起来并没有被广泛使用和支持。

问题是:在现有 PDF 上编辑、书写或绘图的更好的 Ruby 方式是什么?

这个问题在这里似乎也没有答案。这些问题是相关的,但并不完全相同:

  • Prawn gem:如何从*现有*文件(.xls)创建.pdf https://stackoverflow.com/questions/3148370/prawn-gem-how-to-create-the-pdf-from-an-existing-file-xls
  • 使用 ruby​​ 对现有 pdf 进行水印 https://stackoverflow.com/questions/2716148/watermark-existing-pdf-with-ruby
  • 用于操作现有 PDF 的 Ruby 库 https://stackoverflow.com/questions/2458472/ruby-library-for-manipulating-existing-pdf
  • 如何使用 Ruby Prawn 替换现有 PDF 中的单词? https://stackoverflow.com/questions/4869879/how-to-replace-a-word-in-an-existing-pdf-using-ruby-prawn

你一定要检查一下Prawn http://prawn.majesticseacreature.com/gem,您可以通过它生成任何自定义 pdf 文件。实际上,您可以使用 prawn 将文本写入现有 pdf,将现有 PDF 视为新 Prawn 文档的模板。

例如:

filename = "#{Prawn::DATADIR}/pdfs/multipage_template.pdf"
Prawn::Document.generate("full_template.pdf", :template => filename) do
  text "THis content is written on the first page of the template", :align => :center
end

这会将文本写入旧 pdf 的第一页。

在这里查看更多内容:http://prawn.majesticeacreature.com/manual.pdf http://prawn.majesticseacreature.com/manual.pdf

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

如何使用 Ruby 在现有 PDF 上编辑或书写? 的相关文章

  • jQuery 的 event.stopPropagation() 导致 Rails 出现问题:remote => true

    我创建了一些自定义 弹出窗口 最初使用 display none 样式 它们通过相邻的 popup trigger 链接进行切换 具有以下汇总功能 public javascripts application js jQuery docum
  • Rails 数据库默认值和布尔字段的模型验证

    在 Rails 模型中我有一个属性is subscriber 当我构建数据库迁移以将此列添加到数据库时 我指定默认值为 false t boolean is subscriber default gt false 我还在模型中指定了该属性需
  • 保护客户端 API 的安全

    我正在为基于 JavaScript 的游戏构建服务器端 API 和客户端库 其中必须确保两个非常重要的功能的安全 用户每次游玩都必须扣款 我们必须确保提交的分数是玩家实际获得的分数 解决第一个问题看起来很简单 在每次游戏开始时 我们都会调用
  • 选择预先选择多个值的标签 - 在数据库中手动插入的值

    我需要在 select tag 中预先选择多个值 但我在空缺表中 手动 添加空缺 如下所示 我的控制器 def create hr curriculum generic HrCurriculumGeneric new params hr c
  • 如何使用 WEBrick 执行 Ruby 代码而不是将代码转储到浏览器?

    当我在浏览器中运行程序时遇到问题WEBrick服务器 http ruby doc org stdlib 2 1 1 libdoc webrick rdoc WEBrick html 它显示了 2loop rb 文件中编写的代码 当我跑步时r
  • 您是否在版本控制中添加公共/资产?

    在rails 3 1中 当您预编译资产时 rails会创建public assets目录并在其中添加文件 你对 public assets 进行版本控制吗 我使用 Capistrano 进行部署 最后一步是编译资产 类似的事情不会被检查到版
  • 文件上传字段导致 ActionController::InvalidAuthenticityToken 异常

    使用 Rails 4 并尝试使用 simple form 和回形针将文件字段添加到现有表单 这是表格的关键部分 一切正常 除非我实际提交带有上传文件的表单 然后 我得到这个 ActionController InvalidAuthentic
  • 我可以实施对半取偶吗?

    我需要去做四舍五入到偶数 https en wikipedia org wiki Rounding Round half to even在浮子上 即 如果该值是两个整数之间的中间值 打破平局 y 的小数部分正好是 0 5 则四舍五入到最接近
  • 在 selenium webdriver 中使用 phantomjs 代理

    我正在尝试在 selenium webdriver 2 25 的 ruby 1 8 7 脚本中使用 PhantomJS 1 9 1 配置代理 我看到了一些使用 Firefox 的例子 我用这个浏览器成功地做到了 我使用了这段代码 profi
  • 在 sorbet 中,你能指定一个类型是一个类的后代吗?

    我有一个方法返回一个对象 该对象可能是许多不同类型的对象之一 但它们都是同一祖先类的一部分 精确的对象类型是动态推断的 但是 我对签名中返回值的内容感到困惑 我在下面使用了一个占位符instance of来说明问题 sig params i
  • 如何使用 ActionText 显示嵌入视频

    我正在尝试在 Rails 6 上使用 ActionText 显示嵌入式视频 无论是在 WYSIWYG Trix 中还是在渲染的内容中 但是 ActionText 渲染器会过滤所有原始 html 代码 并强制我使用 JS 在渲染内容中显示 i
  • ruby 1.9 如何将数组转换为不带括号的字符串

    我的问题是关于如何在 ruby 1 9 中将数组元素转换为字符串而不需要括号和引号 我有一个数组 数据库提取 我想用它来创建定期报告 myArray Apple Pear Banana 2 15 12 在 ruby 1 8 中我有以下行 r
  • JQuery 文件上传:在 data.submit() 上发送两个请求

    我正在尝试使用在我的应用程序中上传视频回形针 and jquery 文件上传 rails 我跟着使用回形针和 jquery 上传文件 https 5minutenpause com blog 2013 09 04 multiple file
  • 从 Restful 身份验证迁移到 Devise

    许多 Rails 2 3 应用程序正在使用 Restful Authentication 但该插件似乎与 Rails 3 存在一些问题 在升级到 Rails 3 时 我一直在使用 Devise 有什么办法可以顺利地从 Restful Aut
  • 使用 cURL 设计身份验证

    如何使用 Devise 从终端使用 cURL 验证我的 Ruby on Rails 应用程序 我想 curl user email password http domain bla api auth sign in 并正在回应 您要查找的页
  • 如何在 Ruby 数组的所有元素之间插入新元素?

    我有一个数组 想在所有元素之间插入一个新元素 就像join方法 例如 我有 1 333 我需要的是 1 333 请注意 在所有元素之间插入了一个新的空哈希 编辑 目前我所拥有的是 irb main 028 0 gt a 1 333 gt 1
  • 如何默认选中collection_check_boxes?

    我试图默认选中这一行 In db t text committed 我尝试过的变体checked true 但也许我忽略了一些事情 这是Gist http gist github com RallyWithGalli c66dee6dfb9
  • 如何在中间人的部分内容中渲染部分内容

    我有一些 Haml 部分 其中许多包含样板 container row col lg 12 当我尝试将其抽象出来时 partial site section I get syntax error unexpected keyword end
  • 如何使用 Fabrication 定义特质

    我正在学习如何使用制造 http www fabricationgem org getting started in Rails我们决定更换所有factory girl代码与制造 假设我们有这段代码factory girl FactoryG
  • 有没有办法从 UTF-8 编码的文件中删除 BOM?

    有没有办法从 UTF 8 编码的文件中删除 BOM 我知道我所有的 JSON 文件都是以 UTF 8 编码的 但是编辑 JSON 文件的数据录入人员将其保存为带 BOM 的 UTF 8 当我运行 Ruby 脚本来解析 JSON 时 它失败并

随机推荐

  • 使用 jQuery 重定向[重复]

    这个问题在这里已经有答案了 所以我将 jquerymobile 用于我正在创建的应用程序 我有一个链接 如果所有验证都通过 我想通过 但如果失败 我想重定向 在 jquery 中是这样的 由于它是 jquerymobile 因此链接将是同一
  • 用于调用 REST 服务的 Java API [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 有人可以建议一种更好的开源 Java API 来调用 REST 服务吗 还想知道 Restlet AP
  • 使用 javascript 屏幕延迟抓取网站 [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我正在尝试抓取一个有瞬间 JavaScript 延迟的网站 我目前正在使用 python 进行抓取 每当我 获取 页面时 JavaSc
  • Silverlight NavigationFramework 在导航时不会更改地址栏(不显示主题标签)

    我正在使用导航框架 基本上得到了一个用于导航的框架 我试过玩mainFrame JournalOwnership因为我想也许改变它可能与此有关 但没有任何改变 由于与导航相关的类结构非常小 因此我对我做错了什么感到有点困惑 因为我想不出可以
  • 赫尔姆出了什么问题?为什么它没有被广泛采用并优先用于 k8s 应用程序? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 到目前为止 Helm 是我所知道的唯一 K8s 包管理器 它可以帮助无缝部署和管理 k8s 应用程序依赖项 为什么这么多 K8s 应用程序仍然没
  • 从 pyinstaller 包访问 python 解释器 #2

    我正在尝试执行一个包含在 datas 中的 python 脚本 并捆绑到 pyinstaller 可执行文件中 在 Mac 上 我需要将参数传递给这个脚本 所以我不能只是 exec open read 在 pyinstaller 之外 sy
  • PayPal Webhook 验证 Java SDK

    我目前正在将 PayPal 智能支付按钮 集成到 Web 应用程序中 传递自定义字段并接收带有此数据的 Webhook 购买确认效果非常好 我在验证收到的 Webhook 时遇到问题 文档很差 导致 v1 已弃用 或 v2 Java SDK
  • .htaccess 中的多个 mod_rewrite 规则

    我很难让多个 mod rewrite 规则在我的 htaccess 文件中协同工作 在整个网站中 我想删除 www 来自所有 URL 我在文档根目录中使用以下内容 Options FollowSymLinks RewriteCond HTT
  • jsfiddle如何标记代码?有这个库吗?

    如果您曾经使用过 www jsfiddle net 您可能会注意到它用适当的颜色标记代码 以及各种其他帮助程序 例如将制表符转换为四个空格或shift tab 通过 Firebug 我看到它是通过 iFrame 来完成此操作的 有没有开源库
  • Clock_nanosleep() 尚不支持 CLOCK_MONOTONIC_RAW。这该如何处理呢?

    现在clock nanosleepDebian Jessie 上的 CLOCK MONOTONIC RAW 返回 EOPNOTSUPP 如何解决该问题并补偿可能应用于计时器循环中的 CLOCK MONOTONIC 的 NTP 调整 Is c
  • Oracle/SQL中ROWID的数据类型

    Oracle SQL中ROWID的数据类型是什么 这个值是如何存储的 以下链接解释了 ROWID 的数据类型是什么 ROWID 数据类型 http docs oracle com cd B19306 01 server 102 b14200
  • 如何在 emacs 中对多种语言进行拼写检查?

    我主要使用 HTML 编写文档emacs作为我的主要编辑 Emacs 允许您使用以下命令以交互方式对当前缓冲区进行拼写检查ispell buffer 由于我在多种语言之间切换 因此我在文件末尾有一个 HTML 注释 指定该文件的主词典和个人
  • Github 贡献日历日开始时间

    几天前 Github 推出了他们的新功能 贡献 https github com blog 1360 introducing contributions 我有一个疑问 这个日历的一天开始时间是几点 是使用我的本地时间还是 UTC 如果它使用
  • C语言中如何将负零转换为正零?

    你好 我正在学习 Objective C 我正在做经典的计算器示例 问题是 当我将零乘以任何负数时 我得到负零 并将结果放入 双 类型 为了看看发生了什么 我使用了调试器 这就是我得到的结果 gdb 打印 2 0 1 0 gdb 打印 双精
  • Jquery 搜索 - 不区分大小写

    我在 Jquery 脚本上获得了一些帮助 该脚本创建了可搜索 可切换的常见问题解答 代码可以在这里看到 http jsfiddle net pT6dB 62 http jsfiddle net pT6dB 62 问题是 如果单词 How 带
  • JBoss AS 6 中的 QuartzScheduler 注入

    如何将 QuartzScheduler 服务注入 JBoss AS 6 上的无状态 bean 中 Quartz 服务在 JBoss AS 6 启动期间启动 00 58 38 025 INFO QuartzScheduler Schedule
  • Glassfish 4 中的密码加密算法

    我最近将 Glassfish 从 3 1 2 更新到 4 0 并希望设置一个我之前在我的应用程序上使用过的 JDBCRealm 该应用程序使用基于 FORM 的身份验证 密码在数据库中使用 SHA 256 进行哈希处理 这是默认的摘要算法选
  • 查找目录中最新的文件而不读取其所有内容

    我试图在一个巨大的文件系统中找出最新的文件 一种方法是浏览所有目录 一次一个 读取其内容 选择最新文件等 明显的缺点是我必须得到all特定目录中的文件 我想知道 Python 1 中是否有一个 Unix 支持的 神奇 调用来获取目录中的最新
  • Lua中如何获取目录列表

    我需要 LUA 中的目录列表 假设我的目录路径为 C Program Files 我需要该特定路径中所有文件夹的列表以及如何搜索该列表中的任何特定文件夹 Example 需要路径 C Program Files 中所有文件夹的列表 以下是上
  • 如何使用 Ruby 在现有 PDF 上编辑或书写?

    我有几个 PDF 模板文件 其中包含复杂的内容和几个空白区域 区域 我需要能够在这些空白区域写入文本并将生成的 PDF 保存在文件夹中 我在谷歌上非常集中地搜索了这个问题的答案 但没有找到明确的答案 更好的解决方案之一是PDF 工具包 ht