是否可以在不使用gem的情况下在rails中渲染/生成pdf?

San*_*yal 0 pdf ruby-on-rails

有些宝石可以生成pdf。但是我不想使用宝石。我尝试了以下方法:

def show
    respond_to do |format|
       format.html
       format.pdf
    end
end
Run Code Online (Sandbox Code Playgroud)

对于链接:

link_to show_path(@show, format: :pdf)
Run Code Online (Sandbox Code Playgroud)

我可以得到pdf输出,但它表示pdf文档可能无法正确显示。

Vas*_*fed 5

Rails不会立即生成pdf。PDF是7位文本格式,具有二进制部分,因此从技术上讲,您可以使用ERB模板手动生成它show.pdf.erb

%PDF-1.1
%¥±ë

1 0 obj << /Type /Catalog /Pages 2 0 R >>
endobj

2 0 obj << /Type /Pages /Kids [3 0 R] /Count 1 /MediaBox [0 0 300 300] >>
endobj

3 0 obj << /Type /Page /Parent 2 0 R
    /Resources
     << /Font
         << /F1
            << /Type /Font /Subtype /Type1 /BaseFont /Times-Roman >>
         >>
     >>
    /Contents 4 0 R
  >>
endobj

4 0 obj << /Length 90 >>
  stream
    BT
      /F1 18 Tf
      90 150 Td
      (Hello World!) Tj
    ET
  endstream
endobj

trailer << /Root 1 0 R /Size 4 >>
%%EOF
Run Code Online (Sandbox Code Playgroud)

某些应用程序可以查看此最小的PDF,但其中有错误,因为没有xref节,并且对象字节数将是错误的。同样,一旦您需要比单页带有几个文本标签更复杂的内容,它将变得难以维护。

更好的生成方式实际上是使用虾或wicked_pdf之类的宝石