HTML в PDF рельсы

Я пробовал PDFKit и wicked_pdf.

PDFKit почти привел меня туда, куда я хотел, но у него не было поддержки правила css, чтобы я мог исправить нижний колонтитул внизу:

position: fixed;
bottom: 0;

Любые обходные пути, чтобы исправить это?

Поиск в Google по теме не дает многого, кроме других, таких как креветки и тому подобное, без поддержки html.

Для тех, кому интересно. wkhtmltopdf установлен и работает, поэтому работает PDFKit.

respond_to do |format|
  format.html {render :layout => nil}
  format.pdf do
    render :pdf => "file_name.pdf",

    :save_to_file => Rails.root.join('public/uploadedfiles', "filename")  
  end
end 

person MattiasB    schedule 19.01.2012    source источник


Ответы (4)


В CSS3 вы можете использовать правило @page для включения нижних колонтитулов следующим образом:

@page {
  @bottom-center {
    content: "foo";
  }
}

Это поддерживается во многих платных PDF-решениях, например. PDFReactor и я думаю Принц.

Однако Webkit (на котором основан wkhtmltopdf) не поддерживает правила постраничного мультимедиа CSS3 так что нужен запасной вариант.

В документации Wicked PDF указан параметр :footer, который можно использовать для передачи фрагментов HTML для отображения на определенных страницах. . Это похоже на лучший вариант для вас.

person Gareth    schedule 20.01.2012

Я не пробовал ни PDFKit, ни wicked_pdf, поэтому мне просто интересно. Но, возможно, это могло бы помочь. Вы пытались вместо этого использовать хак Sticky Footer?

http://ryanfait.com/sticky-footer/

person Sauco82    schedule 19.01.2012

Я действительно не уверен, почему вы хотите, чтобы элемент был исправлен в документе PDF, это действительно то, что вы хотите? Кроме того, оба драгоценных камня используют wkhtmltopdf, утилиту, которая использует webkit для рендеринга своего html и в конечном итоге конвертирует его в pdf. Как только он будет отлично выглядеть в webkit, он должен отлично выглядеть и в формате pdf. Но я не думаю, что pdf поддерживает «фиксированные» элементы, как в CSS.

person Kristian Hildebrandt    schedule 19.01.2012
comment
Чтобы быть более конкретным. Моя проблема заключается в том, что на каждой сгенерированной странице мне нужен специальный нижний колонтитул, который идентичен и прикрепляется к каждой новой странице. с фиксированной позицией он работал так же, как html, а затем печатал, но не в формате pdf. :( - person MattiasB; 19.01.2012

Я бы порекомендовал изучить DocRaptor. Судя по моему опыту, у него лучшая поддержка CSS, чем у аналогичных программ.

DocRaptor

Вот ссылка на код использования DocRaptor с Rails:

пример DocRaptor Rails

person illbzo1    schedule 19.01.2012
comment
Есть одна проблема с DocRaptor. Это не открытый исходный код, поэтому мой босс, вероятно, не хочет тратить на него такие деньги, поэтому я не звоню туда. :( - person MattiasB; 20.01.2012
comment
Во сколько ваш начальник оценивает ваше время? Сколько времени потребуется, прежде чем вы потратите больше денег, чем просто используя хостинговое решение, такое как DocRaptor? - person Gareth; 20.01.2012