gpt4 book ai didi

ruby-on-rails - wicked_pdf 多页文档

转载 作者:太空宇宙 更新时间:2023-11-03 17:47:34 25 4
gpt4 key购买 nike

我有一个场景,我需要根据对象数组生成多页 pdf。

以下是我的模型:

# Member has_many certificates

class Member < ActiveRecord::Base

has_many :certificates, dependent: :destroy

before_save :set_expiry

def self.delete_expired
where(expire_at: Date.today).destroy_all
end

private
def set_expiry
self.expire_at = 15.days.from_now
end
end

# certificate belongs_to member
class Certificate < ActiveRecord::Base
belongs_to :member
belongs_to :certificate_type
belongs_to :company

def company_name
company.name
end

def page_orientation
company_name == 'CompanyA' ? 'Landscape' : 'Portrait'
end

def page_height
company_name == 'CompanyA' ? '10.5in' : '11in'
end

def page_width
company_name == 'CompanyA' ? '7in' : '8.5in'
end
end

# each type can have many certificates
class CertificateType < ActiveRecord::Base
has_many :certificates
end

用户流程如下:

  • 用户上传包含成员(member)记录的 Excel 文件。系统存储记录。
  • 然后用户可以为单个成员生成证书。 (已经在工作)。
  • 用户可以为多个上传的成员批量生成证书。

我有一个自定义表单,我在其中创建证书对象(复选框选择)然后提交表单。 Controller 接收证书对象的散列。我必须一个一个地遍历所有对象来为它的关联成员创建证书。问题是每个证书都有自己的模板和一些自定义页面布局设置,如方向、宽度和高度。我想生成一个包含多个页面的单个 pdf 文件,其中每个页面都是一个证书。我被困在我应该在哪里以及如何为每个单独的证书传递页面布局设置。我在我的 Controller 中尝试了 render_to_string 并尝试在那里设置页面布局选项,但它似乎不起作用。我在这里需要一些建议或指示。

最佳答案

基于@fdisk 的回答,但使用 Ruby native combine_pdf gem ...你可以试试:

require 'combine_pdf'

merged_certificates = CombinePDF.new

@member.certificates.each do |certificate|
pdf_data = WickedPdf.new.pdf_from_string(render_to_string(something, layout: some_layout))
merged_certificates << CombinePDF.parse(pdf_data)
end

send_data merged_certificates.to_pdf, filename: 'mypdf.pdf' #...

关于ruby-on-rails - wicked_pdf 多页文档,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32435588/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com