簡體   English   中英

邪惡的PDF標頭未顯示

[英]Wicked PDF header not showing up

在已經檢查過Rails Gem存儲庫中的類似問題以及堆棧溢出之后,我找不到解決問題的答案。

我正在嘗試在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,而且我不知道為什么! 看:

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

這里是標題“ contents” 本身的內容:

header_pdf.html.haml

Test text

只是純文本。 我有一個Linux 16.04 x64 OS,wicked_pdf(1.1.0),wkhtmltopdf-binary(0.12.4)。 我該如何調試?

對於任何遇到這種情況的人,由於OP的答案不太准確,所以對我來說,要做的就是在頁眉/頁腳中包含DOCTYPE HTML標簽。 從不可見的標題(帶有可以使用搜索工具找到的文本)進入完全渲染。

對於到達這里的其他人……這是一個CSS問題。 標題在那里,但是“不可見”,無論我在渲染選項上設置了什么邊距,這都是CSS問題。 從頭啟動CSS之后,標題就會出現! 我無法使用標志show_as_html: true調試它show_as_html: true因為頁眉和頁腳不是在該模式下呈現,而是僅在正文中呈現。

如果有人讀過並且碰巧處於相同的情況,請使用PDF文檔中的搜索工具查找標題中您知道的單詞。 如果它找到了東西但它是不可見的,則說明您有CSS問題。 同樣不要忘記檢查標題HTML是否包含<!DOCTYPE html> 感謝@joaolell。

要檢查的另一件事是,您是否擁有支持頁眉和頁腳的wkhtmltopdf庫的qt修補版本(0.12.4及更高版本)。 以前的版本不會

將wkhtmltopdf二進制文件升級到至少版本“ 0.12.4(帶有修補的qt)”。 我花了半天的時間進行故障排除,因為我的0.12.1版本不支持頁眉和頁腳。

參考: Wicked PDF無法呈現頁眉/頁腳

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM