Pau*_*ber 16 ruby pdf pdf-generation itext pdftk
如何在ruby中组合PDF?
我正在使用pdf-stamper gem填写PDF格式的表单.我想拍摄n个 PDF,在每个PDF中填写一个表格,并将结果保存为n页文档.
你能用像prawn这样的本地库来做到这一点吗?你能用rjb和iText做到这一点吗?pdf-stamper是iText的包装器.
如果可能的话,我想避免使用两个库(即pdftk和iText).
小智 20
截至2013年,您可以使用Prawn合并pdf.要点:https://gist.github.com/4512859
class PdfMerger
def merge(pdf_paths, destination)
first_pdf_path = pdf_paths.delete_at(0)
Prawn::Document.generate(destination, :template => first_pdf_path) do |pdf|
pdf_paths.each do |pdf_path|
pdf.go_to_page(pdf.page_count)
template_page_count = count_pdf_pages(pdf_path)
(1..template_page_count).each do |template_page_number|
pdf.start_new_page(:template => pdf_path, :template_page => template_page_number)
end
end
end
end
private
def count_pdf_pages(pdf_file_path)
pdf = Prawn::Document.new(:template => pdf_file_path)
pdf.page_count
end
end
Run Code Online (Sandbox Code Playgroud)
Mys*_*yst 16
经过长时间搜索纯Ruby解决方案后,我最终从头开始编写代码来解析和合并/合并PDF文件.
(我觉得现在的工具太混乱了 - 我想要一些原生的东西,但它们似乎都有不同的问题和依赖...甚至Prawn放弃了他们用来拥有的模板支持)
你可以安装它:
gem install combine_pdf
Run Code Online (Sandbox Code Playgroud)
它非常易于使用(有或没有将PDF数据保存到文件中).
例如,这是一个"单行":
(CombinePDF.load("file1.pdf") << CombinePDF.load("file2.pdf") << CombinePDF.load("file3.pdf")).save("out.pdf")
Run Code Online (Sandbox Code Playgroud)
如果您发现任何问题,请告诉我,我会解决问题.
0x4*_*672 11
使用ghostscript组合PDF:
options = "-q -dNOPAUSE -dBATCH -sDEVICE=pdfwrite"
system "gs #{options} -sOutputFile=result.pdf file1.pdf file2.pdf"
Run Code Online (Sandbox Code Playgroud)
我写了一个红宝石宝石来做到这一点 - PDF :: Merger.它使用iText.以下是您使用它的方式:
pdf = PDF::Merger.new
pdf.add_file "foo.pdf"
pdf.add_file "bar.pdf"
pdf.save_as "combined.pdf"
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
12927 次 |
| 最近记录: |