1

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

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

我有哪些选择可以尝试使这项工作发挥作用?

1)我考虑过制作一个单独的打印样式表(而不是媒体查询),但我不确定当我通过 POST 请求将 HTML 文档发送给 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
4

1 回答 1

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 的转换。只需转到文档日志并单击特定文档上的“请求帮助”。

于 2015-05-14T12:07:23.453 回答