如何使用Rails中的打印样式表获取docraptor到pdf?

时间:2015-05-14 05:43:55

标签: css ruby-on-rails pdf princexml

所以我有一些Rails 3.2.x代码,它采用HTML视图页面并使用docraptor打印服务将其输出为PDF。唯一的问题是它不会缩小内容以适应PDF页面,因此存在溢出。

我最初尝试进行媒体查询以注入一些用于打印的CSS,但这似乎没有做任何事情。

尝试使这项工作有什么选择?

1)我考虑制作一个单独的打印样式表(而不是媒体查询),但是当我通过POST请求将docraptor发送给docraptor时,我不确定docraptor是否正在以“打印模式”处理HTML文档。

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

1 个答案:

答案 0 :(得分:2)

1)应该工作正常。 DocRaptor支持媒体查询,默认情况下使用打印样式表。唯一的障碍是它(目前)不支持条件表达式,如:

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

所有条件表达式都将返回false,因此您只想使用:

@media print { ... }

2)这也可以,但应该完全没必要。

如果您尝试控制页面大小,则需要使用@page规则。 DocRaptor的一大优势是所有这些都可以通过纯CSS设计,而不会弄乱代码配置。有关页面大小的详细信息,请访问:http://www.princexml.com/doc/page-size/

最后,DocRaptor支持服务可以帮助调试HTML到PDF的转换。只需转到文档日志,然后单击特定文档上的“请求帮助”。