2012-12-19 3 views
16

내 Django 응용 프로그램에서 Pisa/xhtml2pdf을 사용하여 HTML 소스에서 pdf 파일을 생성합니다. 즉 : Django/Python : 적절한 언어로 된 PDF 파일을 생성하십시오.

  1. 내가 모든 '인쇄'거즈로 포맷 된 HTML 파일을 생성 (예 : 페이지 나누기, 머리글, 바닥 글 등)
  2. 내가
피사 사용하여 PDF로이 HTML로 변환

이 과정은 괜찮지 만 느리지 만 (특히 긴 표를 다룰 때) 피사 기능/제한 사항에 따라 HTML/CSS를 사용해야합니다.

질문 : 웹 응용 프로그램에서 pdf를 생성하는 올바른 방법 (즉, HTML을 만든 다음 pdf로 변환) 또는 더 직접적인 방법이 있습니다. 즉, pdf를보다 적합한 방식으로 "작성"하는 것입니다 언어?

+0

추가 정보 : 완벽한 픽셀 보고서를 위해 우리는 전용 보고서 디자이너 (Pentaho)에게 부탁하기로 결정했습니다. – Don

답변

9

WeasyPrint 작성자는 여기입니다. HTML/CSS를 사용하여 PDF를 생성 할 때 (더 낮은 수준의 PDF 라이브러리를 직접 사용하는 것보다) 자동 레이아웃을 얻는 것이 중요합니다. h1 { page-break-after: avoid }과 같은 높은 수준의 제약 조건을 지정하고 레이아웃 엔진이 모든 것을 절대 위치로 지정하지 않고 파악하도록 할 수 있습니다. 전자는 문서를 변경할 때 훨씬 유지 보수가 용이합니다.

rst2pdf와 같은 일부 도구는 their own stylesheet syntax이지만 CSS를 다시 발명하는 나쁜 방법 일뿐입니다.

그러나 예, 복잡한 스타일 시트를 덤핑하면 결과가 좋지 않을 수 있습니다. 스타일 시트를 인쇄물로 만들거나 CSS에 @media print 또는 HTML에 <link media="print">과 완전히 다른 스타일 시트를 사용하는 것이 좋습니다.

4

피사는 다양한 문제가있는 것으로 알려져 있습니다. 특히 긴 테이블의 경우. 일반적으로 PISA 사용을 피해야합니다. 다른 옵션은 다음과 같습니다

  • PrinceXML이
  • PDFreactor

: Reportlab 직접

  • z3c.rml (Reportlab 템플릿 언어 클론)
  • 상업 대안을 사용

    • PDF producti에 관한 일반적인 규칙 on : 당신이 지불하는 것을 얻습니다.

      피사 (Pisa) 또는 Apache FOP와 같은 변환기는 간단한 경우에는 작동하지만 일반적으로는 흡인하는 반 굽기 솔루션입니다.

  • +0

    감사합니다. 그러나 HTML을 pdf로 변환하는 것이 좋은 방법이라고 생각하십니까? – Don

    +0

    이상한 후속 질문 ... 무엇을하기에 좋은 방법입니까? 입력 데이터로 무엇을 가지고 있습니까? –

    +0

    내 말은 : 내 애플 리케이션에서 데이터를 추출하고 PDF로 넣어; HTML은 데이터와 PDF 사이의 매개체 일뿐입니다. 나는 pdf를 직접 쓰거나 다른 매체를 사용할 수 있는지 궁금합니다. – Don

    6

    나는 pisa 또는 http://weasyprint.org/과 같은 라이브러리를 사용하여 HTML에서 pdf를 생성하는 것이 가장 간단한 방법이라고 생각합니다. 이미지, CSS, 바코드 (피사) 등을 삽입하는 데주의를 기울이기 때문에 나에게 큰 도움이됩니다.

    마찬가지로 앞에서 말했듯이 PDF를 직접 작성하려면 Reportlab을 사용해보십시오. 구현하는데 오래 걸린다. 두 경우 모두 항상 최적화를 위해 셀러리 또는 python-rq를 사용하여 백그라운드에서 pdf를 생성하는 것이 좋습니다.

    2

    QT 웹킷 렌더링 엔진을 사용하여 http://code.google.com/p/wkhtmltopdf/ 및 django-wkhtmltopdf를 사용하여 HTML에서 PDF를 만들 수도 있습니다.

    웹킷과 마찬가지로 일반적으로 HTML과 CSS를 작성할 수 있다는 장점이 있습니다. 이것은 기존 웹 페이지를 출력하고 있지만 처음부터 PDF를 생성하는 경우 적합하지 않을 수 있습니다.