1

私は Prawn PDF を使用して、Rails アプリケーションでオンザフライで PDF ファイルを作成しています。

私は最近 Rails 関数に出くわしましたcell.blank?。これは本当に便利であることが証明されています。<li>表示するものが何もない場合は、必要な行を非表示にすることができます。これは、しばらく疑問に思っていたことです。

エビで同じことをすることは可能ですか?空の行を非表示にしますか?

現時点では、次のものがあれば:

Contact Name
Address Line 1
Address Line 2
Address Line 3
Postcode
Phone Number
Fax Number

たとえば、ユーザーが連絡先の名前と郵便番号のみを入力した場合、住所行の 1、2、および 3 があるべき場所に大きなギャップが生じます。

これらの行が空であるため無視して、次のように表示できるとします。

Contact Name
Postcode

それは私のPDFを整理し、ユーザーが間違ったフィールドを使用して住所がPDFで正しく見えるようにする必要をなくします。

これは私のエビのコードがどのように見えるかです:

pdf.text_box "Client", :size => 9, :at => [50,673]
    pdf.text_box "#{@kase.company.companyname}", :size => 9, :at => [100,673]
    pdf.text_box "#{@kase.company.companyaddressline1}", :size => 9, :at => [100,665]
    pdf.text_box "#{@kase.company.companyaddressline2}", :size => 9, :at => [100,655]
    pdf.text_box "#{@kase.company.companyaddressline3}", :size => 9, :at => [100,645]
    pdf.text_box "#{@kase.company.companyaddresscity}", :size => 9, :at => [100,635]
    pdf.text_box "#{@kase.company.companyaddresspostcode}", :size => 9, :at => [100,625]

Prawn の Google ユーザー グループ サイトを検索しましたが、必要なものが見つからないようです。

前もって感謝します!

ダニー

4

3 に答える 3

1

pdfバウンディングボックス(エビのドキュメントから恥知らずにヤンクされました)。

   pdf.bounding_box([100,400], :width => 400) do
     pdf.text("The height of this box is #{pdf.bounds.height}")
     pdf.text('this is some text')
     pdf.text('this is some more text')
     pdf.text('and finally a bit more')
     pdf.text("Now the height of this box is #{pdf.bounds.height}")
   end

属性が使用可能な場合は、印刷するように簡単に変更できます。

于 2010-08-04T01:35:55.623 に答える
0

現在のアドレス行の y 座標にカウンターを使用します。行を追加する場合は 10 減らします。行が空の場合は追加せず、y 座標を増やしません。

y = 673
if @line1 then 
  pdf.text_box "#{@line1}", :size => 9, :at => [100,y]
  y+= 10
end 
if @line2 then 
  pdf.text_box "#{@line2}", :size => 9, :at => [100,y]
  y+= 10
end 

(ヒント: 希望どおりに動作する場合は、行を追加してカウンターを増やす関数にリファクタリングします)

于 2010-08-03T11:06:35.903 に答える
0

Ruby の「empty?」を使用できるはずです。このメソッドは、文字列またはデータ構造にコンテンツがあるかどうかを判断するために、ほとんどのデータ構造と文字列で使用できます。次のようなものです (エビについてはよくわかりませんが、この会社名は文字列のように見えるので、キャストする必要はないと思います):

pdf.text_box @kase.company.companyname, :size => 9, :at => [100,673] unless @kase.company.companyname.empty?

もちろん、それをヘルパーメソッドにすることもできます

def my_text_box (var, x, y)
  pdf.text_box var, :size => 9, :at => [x,y] if unless var.empty?
end

エビのドキュメントを呼び出します

my_text_box @kase.company.companyname, 100, 673

おっと、参照を空に追加するのを忘れましたか? http://apidock.com/ruby/String/empty%3F

于 2010-08-03T12:34:12.080 に答える