You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Ruby on Rails在PDF上添加PNG图片?

在现有PDF上添加PNG图片的两种解决方案

方案一:将Prawn生成的带图PDF叠加到原PDF上

利用Prawn生成带透明背景的图片PDF,再用CombinePDF将其与原PDF叠加,完美保留原内容:

  1. 生成带透明背景的图片叠加层PDF
require 'prawn'

Prawn::Document.generate('overlay.pdf', background_color: 'transparent') do |pdf|
  # 按需调整图片的位置(at参数)和尺寸(width/height)
  pdf.image 'your_image.png', at: [50, 750], width: 100, height: 100
end
  1. 叠加到原PDF
require 'combine_pdf'

original_pdf = CombinePDF.load('original.pdf')
overlay_page = CombinePDF.load('overlay.pdf').pages[0]

# 将叠加层应用到原PDF的第一页,多页需求可循环处理pages数组
original_pdf.pages[0] << overlay_page

original_pdf.save('final_with_image.pdf')

方案二:直接用HexaPDF在原PDF上添加图片

HexaPDF支持直接编辑现有PDF,无需生成叠加层,一步完成:

  1. 安装gem
gem install hexapdf
  1. 编写代码添加图片
require 'hexapdf'

HexaPDF::Document.open('original.pdf') do |doc|
  target_page = doc.pages[0] # 指定要添加图片的页面
  image_obj = doc.add_image('your_image.png')

  # 调整图片位置(at参数为左下角坐标)和尺寸
  target_page.canvas.draw(image_obj, at: [50, 750], width: 100, height: 100)

  doc.save('final_with_image.pdf')
end

注意事项

  • PDF的坐标原点默认在页面左下角,需根据实际页面尺寸调整坐标值
  • 若要给多页添加图片,循环遍历doc.pages数组即可

内容的提问来源于stack exchange,提问作者Kilmer Luiz Aleluia

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.15 17:14:55