我想用 ActiveJob 生成 PDF,然后將其另存為記錄的附件。
當我從控制器操作生成 PDF 時,它看起來不錯:

當我將其移至后臺作業時,它會在 pdf 周圍創建此邊距。

這是怎么回事,如何去除邊距以使內容覆寫整個頁面?
代碼
按預期作業的控制器方法:
def renderCatalogOnServer
//declaring variables here -- removing to condense question
respond_to do |format|
format.html
format.pdf do
render pdf: "renderCatalogOnServer",
layout: "pdf",
page_size: "Letter",
margin: { :top => 0, :bottom => 0, :left => 0 , :right => 0}
end
end
end
在每個頁面周圍添加邊距的 Active Job 方法:
class CreatePdfJob < ApplicationJob
queue_as :default
def perform(catalog_id)
//declaring variables here -- removing to condense question
generatedPdf = WickedPdf.new.pdf_from_string(
ApplicationController.render(
template: 'catalog/renderCatalogOnServer',
layout: 'layouts/pdf',
page_size: "Letter",
margin: { :top => 0, :bottom => 0, :left => 0 , :right => 0},
locals: { catalog: @catalog, business_units: @business_units, brands: @brands },
)
)
overlay = Tempfile.new('overlay')
overlay.binmode
overlay.write(generatedPdf)
overlay.close
pdfPath = overlay.path # to get path
catalog_record.pdf.attach(io: URI.open(pdfPath), filename: "#{@catalog.name}.pdf")
end
end
我猜這是我必須ApplicationController.render在保存之前呼叫或創建臨時檔案的方式。我正在尋找如何從 PDF 中洗掉邊距,但也歡迎任何關于使用 ActiveJob 和 WickedPDF 生成 PDF 的更好方法的反饋。它現在的作業方式似乎有點矯枉過正,但這是我發現實際生成 PDF 的唯一方式(盡管邊距不正確)。
謝謝!
uj5u.com熱心網友回復:
現在您將 PDF 選項傳遞給ApplicationController#render它本質上只是忽略它們(處理它們),因為該方法不知道這些選項打算做什么。
相反,您需要將 PDF 選項傳遞給 ,WickedPdf#pdf_from_string以便它們可以控制 PDF 本身的生成方式。
要做到這一點,只需更改:
generatedPdf = WickedPdf.new.pdf_from_string(
ApplicationController.render(
template: 'catalog/renderCatalogOnServer',
layout: 'layouts/pdf',
page_size: "Letter",
margin: { :top => 0, :bottom => 0, :left => 0 , :right => 0},
locals: { catalog: @catalog, business_units: @business_units, brands: @brands },
)
)
到:
generatedPdf = WickedPdf.new.pdf_from_string(
ApplicationController.render(
template: 'catalog/renderCatalogOnServer',
layout: 'layouts/pdf',
locals: { catalog: @catalog, business_units: @business_units, brands: @brands}
),
page_size: "Letter",
margin: { :top => 0, :bottom => 0, :left => 0 , :right => 0}
)
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/402709.html
標籤:
