2009-05-07 4 views
2

PDF 생성이 많이 논의되었습니다. 그러나 나는 아직 내가 필요한 것을 찾지 못했다.PDF 임의 표 (이유 있음) 너비

저는 파이썬에서 PDF 보고서 (주로 테이블)를 생성하려고합니다. 예, ReportLab과 Pisa를 사용해 보았습니다. 둘 다 생산에서 부딪 히기가 비현실적이고 비현실적이라고 생각하지 않는 상황에서 컬럼 내용이 "빠져 나왔다".

합리적인 말은 서로 다른 너비의 8-12 열을 의미합니다. 80 - 1200 또는 그와 같은 것이 아닙니다.

리눅스 명령 줄에서 스크립트를 실행할 수 있으므로 원시 파이썬 솔루션이 필요하지 않습니다.

나는이 보고서를 XHTML로 작업하고 있는데, 그 내용이 다소 완벽 해 보입니다.

내가 묻는 것은 누군가 XHTML 브라우저 렌더링과 비슷한 품질의 PDF로 임의의 크기의 테이블을 다시 렌더링하는 데 사용할 수있는 도구를 알고 있습니까?

PrinceXML과 같은 것을 사용하고 싶습니다. 그러나이 프로젝트의 규모는 그러한 도구의 비용을 정당화하지 못합니다.

나는 라텍스에서 내가 무엇을 필요로하는지 시험해 보았으나, 만약 내가 그럴만한 이유가 없다면, 좋은 생각이 들었다. 나는 예제를 고맙게 생각한다.

감사합니다. 미리 감사드립니다.

답변

1

독립 실행 형 프로그램 : wkhtmltopdf는 내가 필요한 것입니다. XHTML의 PDF 렌더링은 무료 도구에서 볼 때 가장 좋습니다.

2

TeX를 사용하면 좋은 결과를 얻을 수 있습니다. 나는 LaTeX를 피하기 위해 유혹을받을 것입니다. 그러나 그것은 정말로 복잡한 매크로 패키지이고 그것을 사용하려고 할 때 그것을 결코 이해하지 못했습니다. 게다가 적어도 내 취향을 감안할 때 필자는 평범한 TeX에서 사용했던 것과 비교하여 텍스트를 마크 업하는 데 매우 장황한 방법으로 보였다.

데이터가 포함될 수있는 모든 특수 문자를 피할 수있는 방법이 생겨나게 될 것입니다. 예를 들어 어딘가에 앰퍼샌드를 사용하고 TeX이 해석하기 때문에 TeX 소스 파일을 만들면 오류가 발생하지 않습니다. 그것은 out-of-place 명령입니다. TeXBook으로 30 분 동안 앉아서, 인용 기능이 완벽하게 작동 할 수있게 해줍니다.

그러나 데이터가 일반 문자열 일 경우 테이블없이 인쇄 할 수 있습니다. 다음은 예입니다 : (당신이 그것을 실행하고 살펴 보겠습니다 경우) 당신은 PDF에서이 제품을 볼 수있는,

#!/usr/bin/env python 

import os 

# Create a 2x3 PDF table of items, using TeX. 

format = r"# \hfil & \hfil #" 
data = [['Hydrogen', 1], 
     ['Silicon', 14], 
     ['Mercury', 80]] 

table_data = r'\cr '.join('&'.join(str(i) for i in row) for row in data) 

f = open('table.tex', 'w') 
f.write(r"\halign{" + format + r"\cr " + table_data + r"\cr}\end") 
f.close() 

os.system("tex table.tex") 
os.system("dvipdf table.dvi") 

큰 문제 표는 국경이 없다, 그리고, 당신이 ' TeXBook을 살펴보면 언제나 가능하지만 생산은 자연스럽고 명백한 작업이 아님을 알 수 있습니다.

어쩌면 LaTeX 이겠지요. 어쨌든 테두리가있는 테이블을 쉽게 만들 수있는 매크로가 있다면에 약간의 용도가 있습니다. :-)

WebKit이나 다른 브라우저 백엔드가 명령 줄에서 HTML에서 직접 PDF를 만들 수 있는지 확인해 보셨습니까? 그들은 인쇄를 위해 어떻게 든 PDF를 생성합니다. HTML을 PDF로 직접 변환하는 방법을 이용해야합니다.

+0

답장을 보내 주셔서 감사합니다. 나는 서버 모드에서 OpenOffice를 실행하는 것을 고려해 보았으나 현재의 프로덕션 설정으로는 비행하지 않을 것입니다 (다시이 프로젝트는 그다지 중요하지 않습니다). 웹킷에 대한 제안에서 방금 발견 한 내용은 http://code.google.com/p/wkhtmltopdf/ 이며 매우 흥미로 웠습니다. TeX 예제를 이용해 주셔서 감사합니다. 건배! –

+0

라텍스에서 표 테두리를 만드는 것은 간단합니다. 수평선은 \ hline을 사용하고, 수직선은 \ begin {tabular} 명령어 다음에 다음과 같이 파이프를 끼워 넣으십시오 : \ begin {tablabel} {| r | r | r |} 1 & 2 & 3 \ tabularnewline \ hline 4 & 5 & 6 \ tabularnewline \ hline \ end {tabular} 그리고 테두리가있는 표가 있습니다. – Mica

3

나는 Brandon Craig Rhodes의 대답에 완전히 동의한다. 고품질 출력이 필요한 경우 TeX, 일반 또는 LaTeX 또는 ConTeXt와 같은 매크로 패키지를 사용하는 것이 좋습니다. 그러나 TeX은

당신이 가벼운 대안을 찾고 있다면 무거운 의존성은 XSL-FO를 생성

  • 을 시도하고 아파치 FOP로 렌더링, 또는

  • 파이썬을 쓸 수있다 래퍼 주위 iText.

두 가지 모두 테두리가있는 임의의 너비 테이블을 수행 할 수 있습니다. xsl-fo는 배우기가 너무 어렵지 않고 XML에 익숙하다면 LaTeX 코드보다 을 생성하기가 쉽습니다.

iText는 MPL 및 LGPL에서 사용할 수있는 강력한 PDF 라이브러리입니다. Java 및 C#으로 작성된 버전이 있지만 불행히도 은 아직 Python에 존재하지 않습니다.