Можно ли рендерить / генерировать PDF в рельсах без использования драгоценного камня? - PullRequest
0 голосов
/ 24 февраля 2019

Есть несколько драгоценных камней, которые могут генерировать PDF.Но я не хочу использовать драгоценный камень.Я попробовал следующее:

def show
    respond_to do |format|
       format.html
       format.pdf
    end
end

И для ссылки:

link_to show_path(@show, format: :pdf)

Я могу получить вывод PDF, но он говорит, что документ PDF может отображаться неправильно.

1 Ответ

0 голосов
/ 24 февраля 2019

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

Этот минимальный PDF-файл доступен для просмотра в некоторых приложениях, но содержит ошибки вэто потому, что нет секции xref, и объект bytecounts будет неправильным.Также, если вам понадобится что-то более сложное, чем одна страница с парой текстовых меток на ней, поддерживать ее будет сложно.

На самом деле, лучший способ генерации - это использование драгоценного камня, такого как prawn или wicked_pdf

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...