2012-07-30 3 views
6

저는 결과물로서 주로 텍스트와 테이블 인 완전한 새로운 pdf를 생성하는 작은 스크립트를 개발하려고합니다. 최선의 방법을 찾고 있습니다.파이썬으로 pdf를 생성하십시오.

저는 reportlab에 대해 읽었습니다. 꽤 좋아 보입니다. 내가 볼 수있는 한 단점이있다. 상업용 버전이 없으면 템플릿을 작성하기가 쉽지 않으며 코드를 유지 관리하기가 어려워 보입니다.

그래서 나는 더 충분한 방법을 찾고 xhtml2pdf를 찾았지만,이 소프트웨어는 조용하고 오래된 두 페이지 이상의 테이블을 생성 할 수 없습니다.

템플릿 프레임 워크로 tex-File을 생성하고 나중에 pdftex를 하위 프로세스로 호출하기위한 마지막 해결책입니다.

나는 마지막 하나를 구현하고 LateX를 지나칠 것이다. 그렇게하겠습니까, 더 좋은 아이디어가 있습니까?

+0

보고서 연구실의 무료 버전은 매우 호소력있게 작동합니다 ... 너무 어려운 일을하려고하지 않는 한 –

+0

예, 그렇지만 간단한 것을 생성하는 방법은 너무 복잡하고 "로우 레벨"입니다. 그리고 2 주 후 나는 코드가하는 일이나 정기적으로 reportlab을 쓰지 않는 사람을 보지 못했습니다. 어쨌든 도움 주셔서 감사합니다. – Johannes

+0

http://appyframework.org/pod.html 내가 직접 해보지는 않았지만 꽤 재미있어 보인다. 내 자신의 경험에 비추어 볼 때 ReportLab은 가치가 있다고 말할 수 있습니다. 문제가 발생하면 새로운 질문을 올릴 수도 있습니다. – George

답변

5

LaTeX 방식을 사용하는 것이 좋습니다. 그것은 크로스 플랫폼이며 다양한 언어로 작동하며 유지 보수가 쉽습니다. 게다가 비상업적입니다!

+0

LaTeX는 모든 PDF 요구 사항을 충족합니다. 복잡한 레이아웃 지향의 PDF는 LaTeX로는 불가능합니다 ...이 경우 잘못된 도구 ... 각 프로젝트에 맞는 도구 ... –

+0

@Maulwurfn LaTeX with [TikZ] (http://www.texample.net/ tikz /)는 복잡한 PDF 레이아웃에 이상적입니다 ... – Zenon

+0

감사합니다. Zenon, TikZ는 멋지게 보입니다. LateX-Template을 파싱하고 PDF 생성을 위해 pdftex의 하위 프로세스를 호출하기 위해 jinja2로 구현할 것입니다. – Johannes

3

Pisa은 Html/CSS to PDF 변환기입니다. Python을 사용하여 Pdf를 처음부터 개발할 수있는 훌륭한 도구입니다.

Pdf 페이지를 추가하거나 Pdf 데이터를 검색해야하는 경우 pyPdf은 무료이며 문서화가 잘되어 있고 사용하기 쉽습니다. 다운로드 할 수 있습니다 here

+0

죄송합니다.이 프레임 워크가 처음부터 새로운 PDF를 생성 할 수있는 방법을 알 수 없습니다. 귀하의 답변에 감사드립니다. – Johannes

+0

오, 내 잘못이 질문을 오해. 그래, 그렇다면 처음부터 PDF를 생성하는 데 "피사"를 사용하는 것이 좋습니다.피사는 html/css를 pdf로 변환 할 수 있으므로 pdf를 쉽게 양식화 할 수 있습니다. pyPdf는 Pdf를 추가하거나 데이터를 추출해야하는 경우 유용합니다. –

+0

피사 (Pisa)는 싼 PDF 파일을 만드는 데 적합한 허약 한 쓰레기입니다. 전문가 용으로는 전혀 쓸모가 없습니다. –

0

http://pypi.python.org/pypi/z3c.rml/ 패키지를 Reportlab의 RML 구현으로 검사 할 수 있습니다.

"최선의 방법"이란 의미입니까? 당신은 무엇입니까? 일부 PDF 요구 사항은 "저렴한"오픈 소스 생성기를 사용하여 수행 할 수 있거나 일부 상용 PDF 변환기로 끝낼 수 있습니다. 높은 품질은 높은 가격을 의미합니다.

+0

답변 해 주셔서 감사합니다. "가장 좋은 방법"은이 분야에서 더 많은 전문 지식을 가진 사람들이 어떻게 할 수 있는지를 의미합니다. 요구 사항은 매우 간단하고 테이블을 n 페이지 이상 사용할 수있는 텍스트 및 테이블이 포함 된 pdf를 생성하는 방법을 쉽게 유지할 수있는 가볍고 간편합니다. – Johannes