2010-08-03 6 views
1

나는 Prawn PDF를 사용하여 내 Rails 응용 프로그램에서 즉석에서 PDF 파일을 만듭니다.새우 PDF 및 빈 데이터베이스 셀?

나는 최근에 레일을 찾아 왔는데, 실제로 유용하다고 판명 된 함수는 표시 할 항목이 없다면 내가 원하는 모든 <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] 

나는 새우 구글 사용자 그룹 사이트를 검색했지만 내가 필요한 것을 찾을 수 없습니다.

미리 감사드립니다.

대니

답변

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 

은 속성을 사용할 수있는 경우 쉽게 수정할 수 있습니다.

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 

(힌트 : 당신이 원하는 방식으로 작동하는 경우 - 당신의 카운터 라인을 추가하고 향상 기능으로 리팩토링)? '빈'

+0

안녕하세요, "pdf.text_box"가있는 prawn.pdf 파일로 곧장 이동하게됩니까? 고마워, Danny – dannymcc

0
당신은 루비 사용할 수 있어야

메서드는 대부분의 데이터 구조와 문자열에서 문자열이나 데이터 구조에 내용이 있는지 여부를 확인하는 데 사용할 수 있습니다. 같은 뭔가 (나는 잘 새우 모르지만, 당신이 그것을 캐스팅해야 할 것 같아요 그래서 문자열 것 같은이 회사의 이름이 보인다) : 물론

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

+0

나는 빈 줄을 피하는 방법을 정말로 언급하지 않았다고 생각한다. 당신은 새 높이 pdf_text_box 옵션을 볼 수 있습니다. 기본 높이를 제공 할 수 있다고 생각하면 각 상자 새우의 y 위치를 지정해야 wouln't 할 수 있습니다. http://prawn.majesticseacreature.com /docs/0.8.4/prawn-core/Prawn/Text/Box.html –

+0

안녕하세요.이 말은 빈 줄을 지우지 않습니다. 아무 것도 없으면 콘텐츠가 표시되지 않습니다. 어쨌든 일어난다. 나는 pdf_text_box 문서를 살펴 봤지만 숨는 줄은 언급하지 않았다. – dannymcc

+0

네가 맞아, 나는 text_box가 아닌 bounding_box를 생각하고 있었다. 경계 상자의 높이를 특정 높이로 지정하지 않으면 적합하게 확장됩니다. http://prawn.majesticseacreature.com/docs/0.8.4/prawn-core/Prawn/Document.html#method-i-bounding_box (아래의 답변으로 편집 및 추가 - 주석에 구문 강조 표시 안 함) –

관련 문제