Techioz Blog

PDFファイルとPrawnを結合する

概要

複数の PDF ファイルを組み合わせるときに問題が発生します。

「表示」アクションで PrawnPDF を使用して PDF を生成しています。

選択した複数のアイテムを 1 つの PDF に結合できるようにしたいと考えています。

私はcombine_pdf geamを使用してこの方法でそれを解決しようとしています

def nested_jobs_multiply_pdf
  pdf_file_paths  = params[:items]
  pdf_file_paths  = pdf_file_paths.map! do |x|
    x.to_s + ".pdf"
  end

  @pdfForms = CombinePDF.new
  pdf_file_paths.each do |x|
    @pdfForms << CombinePDF.parse(nested_job_path(x, format: "pdf"))
  end
  @pdfForms.save "combined.pdf"

  flash[:notice] = "Combined PDF successful"
  redirect_to nested_jobs_path
end

残念ながらエラーが発生します

RuntimeError in NestedJobsController#nested_jobs_multiply_pdf
Unknown PDF parsing error - malformed PDF file?

Extracted source (around line #89):
87   @pdfForms = CombinePDF.new
88    pdf_file_paths.each do |x|
89    @pdfForms << CombinePDF.parse(nested_job_path(x, format: "pdf"))
90   end
91  @pdfForms.save "combined.pdf"
92

解決策

これが機能するか試してください:

pdf_file_paths.each do |path|
  @pdfForms << CombinePDF.load(path) #path is relative path to pdf file stored locally like path/to/801.pdf
end