【问题标题】:Fill PDF AcroForm text field with boldface text using HexaPdf使用 HexaPdf 用粗体文本填充 PDF AcroForm 文本字段
【发布时间】:2021-09-21 09:00:21
【问题描述】:

我有一个看似简单的问题,但我找不到答案。我有一个预先存在的 pdf 表格。手动填写表单,其中一个文本字段以粗体显示其值。使用 HexaPdf 填充此字段时,文本也应以粗体显示,但以常规类型显示。

我在字段中填写

doc.acro_form.field_by_name('text1').field_value = @record.value

为了让它以粗体显示,我尝试了以下方法,但无济于事:

doc.acro_form.field_by_name('text1').set_default_appearance_string(font: 'Helvetica-Bold', font_size: 0)

这会收到错误消息“找不到变体'none'中的请求字体'Helvetica-Bold'”。

然后我尝试了:

doc.acro_form.field_by_name('text1').set_default_appearance_string(font: 'Helvetica', variant: :bold, font_size: 0)

这得到:“未知关键字:变体”。

为文档配置的字体是:

{"Times"=>[:none, :bold, :italic, :bold_italic], "Helvetica"=>[:none, :bold, :italic, :bold_italic], "Courier"=>[:none , :bold, :italic, :bold_italic], "符号"=>[:none], "ZapfDingbats"=>[:none]}

所以应该可以使用带有变体 :bold 的 Helvetica。

有人可以告诉我正确的语法吗?提前致谢!

【问题讨论】:

  • 也许@gettalong 可以给我一个提示如何做到这一点?如果是,非常感谢!
  • @K J:我相信情况不一样。在您提到的链接中,问题是字体不可用。不过,就我而言,我只想使用标准字体。不幸的是,gitter 的链接似乎不起作用 - 那里会有更多信息吗?
  • 在我提出问题之前,我想确定这不仅仅是我的疏忽。如果我理解正确, set_default_appearance_string 需要一个字体参数,该参数应该是一个字符串。根据 hexapdf/lib/hexapdf/type/font_type1.rb 第 58 行,我希望字体名称“Helvetica-Bold”可用。在我的情况下没有办法使用它吗?还是我错过了一些正确的语法?
  • @K J,感谢您和我一起思考这个问题!这种语法的问题是我收到错误“未知关键字:变体”。

标签: ruby pdf


【解决方案1】:

我从 github 上的 @gettalong 得到这个答案:

“这确实是一个问题,因为目前无法使用该方法执行此操作 - 我将在下一个版本中修复它。在此之前您可以使用以下解决方法:”

name = doc.acro_form.default_resources.add_font(doc.fonts.add('Helvetica', variant: :bold).pdf_object)
doc.acro_form.field_by_name('text1')[:DA] = "0 g /#{name} 0 Tf"

非常感谢!

【讨论】:

    【解决方案2】:

    在 HexaPDF 0.18.0 版本中,现在可以通过使用 #set_default_appearance_stringfont_options 参数直接实现这一点。无需更多变通方法!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-01-31
      • 1970-01-01
      • 1970-01-01
      • 2021-09-19
      • 2011-02-21
      • 2021-11-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多