Ruby on Rails Wikiはいくつかのライブラリをリストします s[〜#〜] pdf [〜#〜]Railsでの生成アドレスラベル(レター形式、つまり1ページあたり12〜15個のアドレス)を印刷する必要がありますどちらを使用するか決定できません。
確かにエビとエビ。 DSLは本当の扱いであり、PDFをresponse_to形式ブロック内の他の形式として扱うことができるという単純さもそうです:
respond_to do |format|
format.pdf { render :layout => false }
エビのチュートリアルビデオ here :
PDFKit もあります。なかなか面白いです。
複雑すぎない場合は、基本的なHTMLをPDFに変換するHTMLDOCを使用することもできます。これにより、(エビの場合のように)独自のレイアウト構文を学ぶ必要がなくなります。それはあなたにいくつかの頭痛を救うかもしれません:)
これは、HTMLDOCのRuby gemへのリンクです。
また、RailsでHTMLDOCを使用してPDFにビューをレンダリングするための良いガイドは次のとおりです。
エビは行く方法です。本当に簡単なエビのラベルが付いた。
プロジェクトのREADMEここをチェックしてください:
https://github.com/jordanbyron/prawn-labels#readme
これは、Railsコントローラで使用されている非常に単純な例です。gem 'prawn-labels'
をGemfileに追加することを忘れないでください。
names = %w{Jordan Kelly Greg Bob}
labels = Prawn::Labels.render(names, :type => "Avery5160") do |pdf, name|
pdf.text name
end
send_data labels, :filename => "names.pdf", :type => "application/pdf"
私はPDF :: Writerとエビの両方を使用しましたが、エビの方がはるかに快適です。 Ruby Mendicant をチェックして、PDF :: Writerを使用したエビの喜びを示す comparison を確認してください。
実際には、Rubyとにかくメンディカントをチェックして、すばらしい デザインパターン の開発者としての正しい生計を求めてください。
私はHTMLからPDFを生成するために空飛ぶ円盤を使用しました。これはJavaライブラリですが、Ruby-Java Bridge gemを使用してRailsアプリでアクセスできます。css2.1に準拠しており、 css3を使用してページングをさらに制御できます。htmlに「pdfコード」を配置する必要がないため、PDFを生成する場合と同じビューとパーシャルを使用してブラウザーに表示できます。 。
フライングソーサー: https://github.com/flyingsaucerproject/flyingsaucer
Ruby Javaブリッジ: http://rjb.rubyforge.org/
このモジュールコードを使用してPDFを生成します
require 'rubygems'
require 'rjb'
module Html2Pdf
def self.included(controller)
controller.send :helper_method, :create_pdf
end
def create_pdf(options = {})
itext = "#{Rails_ROOT}/lib/html2pdf/jars/iText-2.0.8.jar"
core_renderer = "#{Rails_ROOT}/lib/html2pdf/jars/core-renderer.jar"
xerces = "#{Rails_ROOT}/lib/html2pdf/jars/xml-apis-xerces-2.9.1.jar"
joinchar = (Ruby_PLATFORM.include? 'mswin') ? ';' : ':'
classpath = [itext, core_renderer, xerces].join(joinchar)
Rjb::load(classpath, jvmargs=['-Djava.awt.headless=true'])
if options[:htmlstring].nil?
options[:layout] ||= false
options[:template] ||= File.join(controller_path,action_name+".pdf.erb")
html_string = render_to_string(:template => options[:template], :layout => options[:layout])
else
html_string = options[:htmlstring]
end
# Make all paths relative, on disk paths...
html_string.gsub!(".com:/",".com/") # strip out bad attachment_fu URLs
html_string.gsub!( /src=["']+([^:]+?)["']/i ) { |m| "src=\"file:///#{Rails_ROOT}/public/" + $1 + '"' } # re-route absolute paths
html_string.gsub!( /url\(["']+([^:]+?)["']/i ) { |m| "url\(\"file:///#{Rails_ROOT}/public/" + $1 + '"' } # re-route absolute paths
# Remove asset ids on images with a regex // tbh i can't remember what this line is for but i'm sure it did something awesome
html_string.gsub!( /src=["'](\S+\?\d*)["']/i ) { |m| 'src="' + $1.split('?').first + '"' }
filename = "#{Rails_ROOT}/public/pdfs/"+options[:filename]+".pdf"
fileOutputStream = Rjb::import('Java.io.FileOutputStream')
iTextRenderer = Rjb::import('org.xhtmlrenderer.pdf.ITextRenderer')
renderer = iTextRenderer.new
renderer.setDocumentFromString(html_string)
os = fileOutputStream.new(filename)
renderer.layout()
renderer.createPDF(os)
os.close()
end
end
次のようなコードでそれを呼び出す:
def generate_pdf
htmlsrc = render_to_string(:partial => 'invoice', :layout => false)
rnd = Time.now.to_s(:datentime).gsub!(/[\/ \.:]/,'')
filename = "docstore/tmp_#{rnd}"
create_pdf(:htmlstring => htmlsrc, :filename => filename)
contents = open("#{Rails_ROOT}/public/pdfs/#{filename}.pdf", "rb") { |io| io.read }
File.delete("#{Rails_ROOT}/public/pdfs/#{filename}.pdf")
respond_to do | wants |
wants.html { render :text => contents, :content_type => 'application/pdf' }
end
end
あなたのユースケースでは、出力をピクセルレベルで制御する必要があるため、 prawn
が正しい選択であるという他のほとんどの回答に同意します。
PDF組み込みの(意見)テーブルスタイル、ヘッダーなどを含むレポートを生成するために、 report
gem-check out-を使用できます。 Rails 3-どのツールを選択するか? からPDFを生成する方法の例については、.
完全にRubyではありませんが、OpenOffice .odtを使用して、静寂とdocsplitを組み合わせてPDFを生成できます。
http://github.com/kremso/serenity
http://documentcloud.github.com/docsplit/
または、odtとcups-pdfを使用してPDFを生成するぎこちない宝石を使用することもできます。