【问题标题】:Append Rails partial to existing PDF将 Rails 部分附加到现有 PDF
【发布时间】:2013-02-08 19:43:20
【问题描述】:

我有一个 Rails 项目,我正在使用 wicked_pdf 从生成的 html 生成 PDF,并且我在该 pdf 的每一页都附加了一个漂亮的页脚。很多这些转换为 pdf 的页面实际上来自已解析的 .doc 或 .txt 文件,然后我在下载时使用此页脚将它们转换为 PDF。

但是... PDF 也正在上传到系统,虽然没有在应用程序中解析和显示,但我需要它们在下载时将页脚作为上面的其他文件。有没有办法做到这一点?

我不需要编辑 PDF 中的任何内容,只需添加此页脚即可。

非常感谢!

【问题讨论】:

    标签: ruby pdf ruby-on-rails-3.2 pdf-generation wicked-pdf


    【解决方案1】:

    如果它已经是 PDF,那么 wicked_pdf 在这里帮不了你,但你可以使用 Prawn 或 PDFtk。

    您可以使用以下内容在现有 pdf 的每一页底部区域的顶部放置一些内容:

    require 'prawn'
    require 'pdf-reader'
    
    respond_to do |format|
      format.pdf {
        input_filename = Rails.root.join('input.pdf')
    
        page_count = PDF::Reader.new(input_filename).page_count
    
        file = Prawn::Document.new(:skip_page_creation => true) do |pdf|
    
          page_count.times do |num|
            pdf.start_new_page(:template => input_filename, :template_page => num+1)
            pdf.move_down(700)
            pdf.text('FOOTER TEXT')
          end
    
        end
        send_data file.render
      }
    end
    

    【讨论】:

    • 感谢您的回复。所以要输出下载我需要做file = Prawn::Document.generate() do |pdf| and so on吗?然后send_file file?
    • @Sparkmasterflex 我建议您将其作为上传过程的一部分,因此转换只发生一次并存储在磁盘上,而不是每次下载。也许在观察者中;然后在 output_filename 上使用 send_file,但我已经更新了答案以即时生成它,前提是您知道 input_filename 的来源。
    猜你喜欢
    • 2013-08-08
    • 2018-04-04
    • 2021-11-20
    • 2012-10-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-27
    • 2014-02-28
    相关资源
    最近更新 更多