Как получить docraptor в pdf, используя таблицу стилей печати в Rails?

Итак, у меня есть код Rails 3.2.x, который берет страницу просмотра HTML и выводит ее в PDF с помощью службы печати docraptor. Единственная проблема заключается в том, что он не сжимает содержимое, чтобы оно поместилось на странице PDF, поэтому происходит переполнение.

Сначала я пытался сделать медиа-запрос, чтобы ввести CSS для печати, но это, похоже, ничего не дало.

Каковы мои варианты, чтобы попытаться заставить это работать?

1) Я думал о создании отдельной таблицы стилей печати (вместо медиа-запроса), но я не уверен, что docraptor обрабатывает HTML-документ в «режиме печати», когда я отправляю его в docraptor через запрос POST.

2) Я также мог бы создать отдельное представление Rails для печати с более узкой шириной (скажем, 500 пикселей), чтобы гарантировать, что все содержимое помещается на странице PDF при выводе. Это больше работы, поэтому я пытаюсь сделать что-то вроде # 1, но мне не повезло.

class PdfMaker
  include HTTParty
  def make_pdf
     options = {
          :document_url => url,
          :document_type => "pdf",
          :name => "mydocument.pdf",
          :test => false,
          :async => false,
          :prince_options => {:baseurl => 'http://www.example.com'}
      }

      response = post("/docs", :body => {:doc => options}, :basic_auth =>{:username => "secure_stringXXXX"})
  end
end

person Nona    schedule 14.05.2015    source источник


Ответы (1)


1) Должно работать нормально. DocRaptor поддерживает мультимедийные запросы и по умолчанию использует таблицы стилей печати. Единственная загвоздка в том, что он (в настоящее время) не поддерживает условные выражения, такие как:

@media print and (min-width:700px) { ... }

Все условные выражения вернутся как ложные, поэтому вам просто нужно использовать:

@media print { ... }

2) Это тоже будет работать, но совершенно не нужно.

Если вы пытаетесь контролировать размер страницы, вам следует использовать правила @page. Одним из больших преимуществ DocRaptor является то, что все это можно стилизовать с помощью чистого CSS, не вмешиваясь в настройку кода. Подробная информация о размере страницы доступна здесь: http://www.princexml.com/doc/page-size/

Наконец, служба поддержки DocRaptor может помочь с отладкой преобразования HTML в PDF. Просто зайдите в журнал документов и нажмите «Запросить помощь» в конкретном документе.

person jamespaden    schedule 14.05.2015