使用HexaPdf填充PDF AcroForm文本域时如何设置内容为粗体
HexaPDF PDF表单文本域粗体填充正确实现
正确写法
先获取字段,指定字体变体通过font_options参数传递,再赋值即可:
field = doc.acro_form.field_by_name('text1') # 设置默认外观:Helvetica字体、粗体变体、字体大小为0继承原有配置 field.set_default_appearance_string( font: 'Helvetica', font_size: 0, font_options: { variant: :bold } ) # 填充字段值 field.field_value = @record.value # 可选:强制生成字段外观,避免部分PDF阅读器不自动刷新样式 field.create_appearances
报错原因说明
- 第一种写法报错是因为HexaPDF内置字体配置中,
Helvetica-Bold不是独立注册的字体名称,粗体是Helvetica字体的变体属性,不能直接作为字体名传入。 - 第二种写法报错是因为
variant不是set_default_appearance_string方法的顶层参数,必须放在font_options哈希中作为字体加载参数传递。
备选兼容方案
如果上述写法仍不生效,可以手动给表单注册粗体字体资源并设置外观字符串:
field = doc.acro_form.field_by_name('text1') # 加载Helvetica粗体字体并添加到表单资源中 bold_font = doc.acro_form.resources.add_font(doc.fonts.load('Helvetica', variant: :bold)) # 手动设置字段默认外观字符串,格式为「/字体名 字号 Tf 颜色配置」,字号为0继承原有大小 field[:DA] = "/#{bold_font.name} 0 Tf 0 g" field.field_value = @record.value field.create_appearances
内容的提问来源于stack exchange,提问作者JRSeabird
相关产品推荐
相关产品推荐

