Django / Python에서 PDF 양식을 어떻게 자동으로 채울 수 있습니까?
Django 웹 애플리케이션의 데이터로 자동 입력 한 다음 사용자에게 다운로드하도록 제공하려는 PDF 양식이 있습니다. PDF 양식을 쉽게 미리 채울 수있는 파이썬 라이브러리는 무엇입니까? 이러한 양식은 인쇄용입니다.
Reportlab은 매우 동적 인 PDF를 생성하고 모든 데이터 및 레이아웃을 프로그래밍 방식으로 제어해야하는 경우 유용합니다.
기존 PDF에서 양식을 작성하려면 reportlab이 과도하며 기본적으로 이미 작성된 양식으로 PDF를 가져 오는 대신 reportlab에서 처음부터 PDF를 다시 작성해야합니다.
PDF 양식은 FDF 데이터로 작동 합니다. 이 작업을 수행해야 할 때 PHP FDF 라이브러리를 Python으로 포팅하고 fdfgen으로 릴리스했습니다 . 나는 그것을 사용하여 양식의 데이터로 fdf 파일을 생성 한 다음 pdftk 를 사용 하여 fdf를 PDF 양식으로 푸시하고 출력을 생성합니다.
전체 프로세스는 다음과 같이 작동합니다.
- 사용자 (또는 디자이너)는 Acrobat 등에서 PDF를 디자인하고 양식 필드를 표시하고 필드 이름을 기록합니다 (이 작업이 정확히 어떻게 수행되는지 확실하지 않습니다. 디자이너가이 단계를 수행합니다). 양식에 "이름"및 "전화"필드가 있다고 가정 해 보겠습니다.
fdfgen을 사용하여 FDF 파일을 만듭니다.
from fdfgen import forge_fdf fields = [('name','John Smith'),('telephone','555-1234')] fdf = forge_fdf("",fields,[],[],[]) fdf_file = open("data.fdf","w") fdf_file.write(fdf) fdf_file.close()
그런 다음 pdftk를 실행하여 병합하고 병합합니다.
pdftk form.pdf fill_form data.fdf output output.pdf flatten
채워지고 병합 된 (더 이상 편집 가능한 양식 필드가 없음을 의미 함) pdf는 output.pdf에 있습니다.
약간 복잡하고 pdftk는 설치가 어려울 수 있지만 (Java 스택이 필요하고 해결해야하는 Ubuntu 9.10에 버그가 있음) 아직까지 생각 해낼 수있는 가장 간단한 프로세스와 워크 플로입니다. 편리합니다 (즉, 디자이너가 원하는 PDF의 모든 레이아웃을 변경할 수 있으며 필드 이름을 변경하지 않는 한 새 필드를 놓아도 모든 것이 계속 작동합니다).
fdfgen에 대한 문서 부족에 대해 사과드립니다. forge_fdf ()는 실제로 필요한 유일한 함수이며 인수를 설명하는 독 스트링이 있습니다. 나는 그것으로 더 많은 일을 해본 적이 없습니다.
reportlab을 사용해보십시오 .
또한 PDF 출력을 살펴보십시오 .
편집하다
나는 또 다른 생각이 있었다 (그러나 이미 PDF 파일이 있고 @thraxil의 대답이 더 마음에 든다면 도움이되지 않을 것입니다).
올해 초 저는 평생 교육 과정에 대한 "수료 증명서"를 생성하는 프로젝트에서 일했습니다. 내가 살펴본 각도 중 하나는 적절한 스타일의 웹 페이지 (서버 측 "PDF로 인쇄"와 같은 것)에서 직접 PDF를 생성하는 것이 었습니다.
내가 찾은 도구 중 하나는 wkhtmltopdf 입니다. URL을 PDF로 변환하는 자체 포함 된 WebKit 브라우저이며 꽤 좋은 결과를 제공합니다.
아이디어는 django의 템플릿 엔진을 사용하여 원하는 내용 (이미지 포함)이 포함 된 페이지를 모으고 URL을 wkhtmltopdf로 전달하고 출력을 가져와 사용자에게 반환하는 것입니다.
구현이 매우 간단하고 (파이프를 열기 만하면) 소스 PDF 파일을 서버에서 액세스 할 수 있도록 유지하는 것에 대해 걱정할 필요가 없으며 HTML을 변경하여 PDF를 다시 디자인 할 수 있기 때문에 접근 방식이 마음에 들었습니다.
또한 위의 Thraxil 솔루션을 기반으로하는 django에서 pdf보기를 만들기위한 준비된 솔루션 인이 코드 세그먼트를 살펴보십시오. github 사용자 zyegfryed에게 감사드립니다.
https://gist.github.com/918403
참조 URL : https://stackoverflow.com/questions/1890570/how-can-i-auto-populate-a-pdf-form-in-django-python
'development' 카테고리의 다른 글
가장 좋아하는 Grails 디버깅 트릭은 무엇입니까? (0) | 2020.12.30 |
---|---|
WPF에서 트리거의 순서가 중요합니까? (0) | 2020.12.30 |
Linux에서 현재 사용되는 MySQL 구성 파일의 위치를 찾는 방법 (0) | 2020.12.30 |
Python 프로그램 내에 대화 형 Python 셸 포함 (생성) (0) | 2020.12.30 |
Java : HashMap을 통한 반복, 어느 것이 더 효율적입니까? (0) | 2020.12.30 |