【问题标题】:Wicked PDF header not showing up邪恶的 PDF 标题未显示
【发布时间】:2018-08-01 16:18:22
【问题描述】:

在检查了 Rails Gem 存储库中的类似问题以及 Stack Overflow 之后,我找不到问题的答案。

我正在尝试在 Rails 控制器中使用 wicked_pdf 呈现 pdf,但无论我做什么或我遵循的类似问题的推荐解决方案都没有显示标题。

首先,这里是开发控制台输出:

***************WICKED***************
  Rendering biddings/show.pdf.html.haml within layouts/pdf
  Rendered biddings/show.pdf.html.haml within layouts/pdf (0.7ms)
  Rendering biddings/header_pdf.html.haml within layouts/pdf_header
  Rendered biddings/header_pdf.html.haml within layouts/pdf_header (1.9ms)
"***************[\"/home/tommy/.rvm/gems/ruby-
 2.5.1@igalbids/bin/wkhtmltopdf\", \"-q\", \"--encoding\", \"UTF-8\",
  \"--javascript-delay\", \"500\", 
  \"--disable-internal-links\", \"--disable-external-links\", 
  \"--orientation\", \"Portrait\", \"--margin-top\", 
  \"50\", \"--margin-bottom\", \"25\", \"--header-html\", 
  \"file:////tmp/wicked_header_pdf20180801-27285-b8y5sg.html\", 
  \"--footer-right\", \"Página [page] de [topage]\",
  \"file:////tmp/wicked_pdf20180801-27285-1jfgdd7.html\", 
  \"/tmp/wicked_pdf_generated_file20180801-27285-1bkrvhx.pdf\"]***************"
  Rendering text template
  Rendered text template (0.1ms)
Sent data Licitación_2524.pdf (0.6ms)
Completed 200 OK in 2334ms (Views: 0.5ms | ActiveRecord: 64.4ms)

如您所见,标题布局及其内容都在被渲染和处理,但是它们并没有生成最终的输出 PDF,我不知道为什么!看:

所以,这是我的控制器代码:

class Api::V1::Biddings::PdfBiddingsController < PdfController
  # JWT Authentication enforced
  before_action :authenticate_user!

  # GET /biddings/:id/pdf
  def show
    @bidding = scoped_collection.find(params[:id])

    authorize [:biddings, :pdf, @bidding]
    respond_to do |format|
      format.pdf do
        render(
          pdf: "#{Bidding.model_name.human}_#{@bidding.code}",
          disposition: "inline",
          orientation: "Portrait",
          template: 'biddings/show.pdf.html.haml',
          header: {
            html: {
              template: "biddings/header_pdf.html.haml",
              handlers: [:haml],
              layout: "pdf_header",
              formats: [:haml, :html]
            }
          },
          footer: {
            html: {
              handlers: [:haml],
              layout: "pdf",
              formats: [:haml, :html],
              encoding: 'UTF-8'
            },
            right: "#{I18n.t('pdf.page')} [page] #{I18n.t('pdf.of')} [topage]"
          },
          margin: { :top => 50, :bottom => 25},
          handlers: [:haml],
          layout: "pdf",
          javascript_delay: 500,
          encoding: 'UTF-8',
          show_as_html: false,
          disable_internal_links: true,
          disable_external_links: true) and return
      end
    end
  end

  protected
  def self.model
    Bidding
  end

  private
  def scoped_collection
    policy_scope([:biddings, :pdf, Bidding]).includes(:bidding_type, :client, :payment_condition, :price_list, :real_payment_condition, :sales_man, :user)
  end

  def records_per_page
    params[:per_page] || 10
  end
end

没什么特别的,在那里你可以看到所有的配置选项,非常标准。不用说,带有页码的页脚工作正常(屏幕截图太长无法显示,但相信我)。不能对标题说同样的话。

这是 PDF 标题布局文件:

pdf_header.html.haml

!!! 5
%html
  %head
    %meta{:content => "text/html; charset=utf-8", "http-equiv" => "content-type"}/
    = wicked_pdf_stylesheet_link_tag "bidding_pdf", media: :all
    = csrf_meta_tags
  %body.pdf
    = yield

这里是标题“内容”的内容本身

header_pdf.html.haml

Test text

只是纯文本。我有一个 Linux 16.04 x64 操作系统、wicked_pdf (1.1.0)、wkhtmltopdf-binary (0.12.4)。我该如何调试?

【问题讨论】:

    标签: ruby-on-rails ruby-on-rails-5 wkhtmltopdf wicked-pdf wkhtmltopdf-binary


    【解决方案1】:

    对于遇到此问题的任何人,由于 OP 的答案不太准确,我的工作是在您的页眉/页脚中包含一个 DOCTYPE HTML 标记。从不可见的标题(可以使用搜索工具找到的文本)到完全呈现。

    【讨论】:

    • 这解决了我的问题。将&lt;!DOCTYPE html&gt; 添加到文件顶部后,我的标题显示。
    • 谢谢,如果您在我的标头 html (haml) 代码中看到,文档类型在第一行通过:!!! 5
    【解决方案2】:

    对于其他到达这里的人......这是一个 CSS 问题。标题在那里但“不可见”,无论我在渲染选项上设置什么边距,这都是一个 CSS 问题。从头开始 CSS 后,标题出现了!我无法使用标志 show_as_html: true 对其进行调试,因为在该模式下不呈现页眉和页脚,仅呈现正文。

    如果有人读到这篇文章并且碰巧遇到了同样的情况,请使用 PDF 文档中的搜索工具来查找标题中您知道的单词。如果它找到了一些东西但它是不可见的,那么你就知道你有一个 CSS 问题。 另外不要忘记检查您是否在标题的 html 中包含&lt;!DOCTYPE html&gt;。感谢@joaolell。

    要检查的另一件事是,您拥有支持页眉和页脚的 wkhtmltopdf 库(0.12.4 及更高版本)的修补 qt 版本。以前的版本不会

    【讨论】:

      【解决方案3】:

      将 wkhtmltopdf 二进制文件升级到至少版本“0.12.4(带有修补的 qt)”。因为我的0.12.1版本不支持页眉页脚,所以才排了半天。

      参考:Wicked pdf not rendering header/footer

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-01-21
        • 1970-01-01
        相关资源
        最近更新 更多