恶意PDF在OS X上默默失败

时间:2014-11-18 07:13:08

标签: ruby-on-rails macos wicked-pdf

使用相同的代码和gem版本,它在Ubuntu(14.04,64bit)中运行良好。目前我正在使用:

  • wkhtmltopdf-binary gem v0.9.9.1
  • wicked_pdf gem v0.10.2
  • Rails 4.1.1
  • Ruby 2.1.3
  • OS X 10.10, 64位

当我尝试从Rails生成PDF时,收到错误消息:wkhtmltopdf_darwin_386 quit unexpectedly。这是完整的错误消息:

Process:               wkhtmltopdf_darwin_386 [1208]
Path:                  /Users/USER/*/wkhtmltopdf_darwin_386
Identifier:            wkhtmltopdf_darwin_386
Version:               ???
Code Type:             X86 (Native)
Parent Process:        ruby [1207]
Responsible:           Terminal [560]
User ID:               502

Date/Time:             2014-11-18 13:57:49.082 +0700
OS Version:            Mac OS X 10.10 (14A389)
Report Version:        11
Anonymous UUID:        FE32CAE5-D54C-30C5-5D5E-6B3F12C58027

Sleep/Wake UUID:       83991D0B-AAA7-4EE0-8FF7-5034B78B788F

Time Awake Since Boot: 8000 seconds
Time Since Wake:       1100 seconds

Crashed Thread:        Unknown

Exception Type:        EXC_BAD_ACCESS (SIGBUS)
Exception Codes:       KERN_PROTECTION_FAILURE at 0x0000000000000001

Backtrace not available

Unknown thread crashed with X86 Thread State (32-bit):
  eax: 0x015382c8  ebx: 0x00d8c971  ecx: 0x00000001  edx: 0x00000000
  edi: 0x00000000  esi: 0x015382b4  ebp: 0xbfff6428  esp: 0xbfff6040
   ss: 0x00000023  efl: 0x00010246  eip: 0x00d8e3c2   cs: 0x0000001b
   ds: 0x00000023   es: 0x00000023   fs: 0x00000000   gs: 0x0000000f
  cr2: 0x00000001

Logical CPU:     3
Error Code:      0x00000004
Trap Number:     14


Binary images description not available


External Modification Summary:
  Calls made by other processes targeting this process:
    task_for_pid: 1
    thread_create: 0
    thread_set_state: 0
  Calls made by this process:
    task_for_pid: 0
    thread_create: 0
    thread_set_state: 0
  Calls made by all processes on this machine:
    task_for_pid: 3109
    thread_create: 0
    thread_set_state: 0

我在标题中说默默的原因是因为当我检查服务器日志时它运行得很好。这是一个摘录:

"***************\"/Users/david/.rbenv/versions/2.1.3/bin/wkhtmltopdf\" -q  --footer-html \"file:////var/folders/4w/fybp8mln1pn91cqrxq6z2kcc0000gp/T/wicked_footer_pdf20141118-1102-1uce4hg.html\"     --margin-bottom 13    \"file:////var/folders/4w/fybp8mln1pn91cqrxq6z2kcc0000gp/T/wicked_pdf20141118-1102-1jrv3s8.html\" \"/var/folders/4w/fybp8mln1pn91cqrxq6z2kcc0000gp/T/wicked_pdf_generated_file20141118-1102-qu51nc.pdf\" ***************"
  Rendered text template (1.1ms)
Sent data test.pdf (8.4ms)
Completed 200 OK in 6516ms (Views: 7.5ms | ActiveRecord: 6.8ms)

正在运行which wkhtmltopdf会给我/Users/david/.rbenv/shims/wkhtmltopdf ..当我单独运行经过测试的wkhtmltopdf时(如在wkhtmltopdf test1.html test1.pdf中),它运行得很完美。

wkhtmltopdf_darwin_386是否有可能在基于64位的架构中运行良好? (即使我的Ubuntu也是基于64位的。)

感谢任何帮助。

1 个答案:

答案 0 :(得分:1)

你做到了吗? :

创建/编辑文件:

<强>配置/初始化/ wicked_pdf.rb

If your wkhtmltopdf executable is not on your webserver's path, you can configure it in an initializer:

WickedPdf.config = {
  :exe_path => '/Users/USER/*/wkhtmltopdf_darwin_386'
}

soure