如何解决使用CombinePDF向现有PDF添加文本时出现编码问题
(Rails 6.0.2.2,ruby 2.7.1,combine_pdf 1.0.18)
我目前正在尝试使用CombinePDF gem将一些文本写到现有的PDF中。不幸的是,我遇到了一些编码问题。
我正在加载现有的PDF:
pdf = CombinePDF.load "#{Rails.root}/public/pdf/base.pdf"
然后我要向其中添加文本:
pdf.pages[0].textbox "Straße",height: 20,width: 160,y: 527,x: 215,font_size: 12,box_color: nil,text_align: :left,text_padding: 0
从中生成新的pdf时:
send_data pdf.to_pdf,filename: "output.pdf",type: "application/pdf"
该字符串显示为StraˆŸe
,因此ß
不能正确显示。
我也试图用unicode文字(\xc3\x9f
)替换它,但没有任何效果。
有人知道还有什么可以尝试的吗?
解决方法
如果您使用HexaPDF,则可以执行以下操作:
require 'hexapdf'
require 'stringio'
doc = HexaPDF::Document.open("#{Rails.root}/public/pdf/base.pdf")
doc.pages[0].canvas.font("Helvetica",size: 12).text("Straße",at: [215,527])
outio = StringIO.new(''.b)
doc.write(outio)
只需确保您使用的字体包含要使用的所有字符的字形。因此,最好使用TrueType字体而不是内置的Helvetica(您可以只将TrueType字体的路径提供给#font
方法)。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。