Mac M1环境更换java-pdftk后Rails5中pdf-forms执行报错
解决M1 Mac上pdf-forms调用pdftk-java的报错问题
1. 先确认pdftk-java本身能正常运行
打开终端,跑which pdftk确认路径是/opt/homebrew/bin/pdftk,接着直接输入pdftk回车,要是能输出一堆帮助信息,说明pdftk-java本身没问题;如果报错,先检查arm64版Java有没有装(比如Azul Zulu的arm64 JDK),确保Java环境正常。
2. 给pdf-forms指定正确的pdftk配置
pdf-forms默认适配原生pdftk,对Java版的支持需要手动指定参数。在Rails项目的config/initializers目录下新建pdf_forms.rb,内容如下:
PdftkWrapper = PdfForms.new( pdftk_path: '/opt/homebrew/bin/pdftk', java_path: '/opt/homebrew/bin/java' # 不确定Java路径就用`which java`查询后替换 )
之后调用填充表单时,用这个初始化好的实例:
PdftkWrapper.fill_form('public/data.pdf', pdf_name_with_path, data, flatten: true)
3. 排查文件权限和路径问题
- 确认
public/data.pdf存在,且Rails进程有读取权限 - 输出文件的路径
pdf_name_with_path所在目录要能写入,尽量避免用带空格或特殊字符的路径,先简化路径测试
4. 实在不行就换回原生pdftk
如果Java版适配还是有问题,用Rosetta 2装原生非Java版pdftk:
arch -x86_64 brew install pdftk
然后在pdf-forms里指定x86版本的pdftk路径:
PdftkWrapper = PdfForms.new(pdftk_path: '/usr/local/bin/pdftk')
内容的提问来源于stack exchange,提问作者Chakreshwar Sharma
相关产品推荐
相关产品推荐

