如何使用Ruby on Rails在PDF上添加PNG图片?
在现有PDF上添加PNG图片的两种解决方案
方案一:将Prawn生成的带图PDF叠加到原PDF上
利用Prawn生成带透明背景的图片PDF,再用CombinePDF将其与原PDF叠加,完美保留原内容:
- 生成带透明背景的图片叠加层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
- 叠加到原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,无需生成叠加层,一步完成:
- 安装gem
gem install hexapdf
- 编写代码添加图片
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
相关产品推荐
相关产品推荐

