使用Prawn PDF生成的PDF中链接如何在浏览器新标签页打开
问题原因
Prawn 内置的 formatted_text_box link 参数不支持配置链接打开方式,你传入的 target 属性不会被映射到PDF规范的对应字段中,因此所有target相关写法都无效。
可行解决方案
通过手动添加链接注释的方式,指定PDF标准的OpenInNewWindow属性实现新标签页跳转,代码示例如下:
# 第一步:先渲染无链接属性的文本,保留你需要的文本样式 pdf.formatted_text_box [{ text: t('link'), align: :center, valign: :center }], at: [5, 17], width: 155, height: 25 # 第二步:在文本相同区域添加链接注释,配置新窗口打开属性 pdf.link_annotation( # 坐标参数格式为[左下x, 右上y, 右上x, 左下y],和你的文本区域完全重合 [5, 17 + 25, 5 + 155, 17], Border: [0,0,0], # 去掉链接默认的边框,保持和普通文本样式一致 A: { Type: :Action, S: :URI, URI: @object.attribute.first.link, OpenInNewWindow: true # 该属性为PDF标准字段,主流浏览器PDF阅读器均会识别,触发新标签打开 } )
补充说明
如果有大量同类需求,可以把上述逻辑封装为自定义辅助方法,减少重复代码。如果需要给链接加下划线,直接在第一步formatted_text_box的文本样式中配置underline: true即可。
内容的提问来源于stack exchange,提问作者nkhape
相关产品推荐
相关产品推荐

