Python에서 PDF 파일을 만드는 방법
저는 사용자로부터 몇 개의 이미지를 가져온 다음 이 모든 이미지가 포함된 PDF 파일을 만드는 프로젝트를 진행하고 있습니다.
파이썬에서 이것을 할 수 있는 방법이나 도구가 있습니까?예: image1 + image2 + image3에서 PDF 파일(또는 eps, ps)을 생성하려면 -> PDF 파일을 선택하십시오.
여기 이 페이지의 힌트를 본 후의 제 경험이 있습니다.
pyPDF는 이미지를 파일에 포함할 수 없습니다.분할 및 병합만 가능합니다.(출처:설명서 페이지를 통해 Ctrl+F)PDF에 포함되지 않은 이미지가 있는 경우에는 그렇지 않습니다.
pyPDF2에는 pyPDF 외에 추가 설명서가 없는 것 같습니다.
ReportLab은 매우 광범위합니다. (사용자 가이드)그러나 Ctrl+F를 약간 사용하고 소스를 훑어보면 다음과 같은 결과를 얻을 수 있습니다.
제가 필요로 하는 것은 PDF로 이미지 묶음을 가져와서 이미지가 어떻게 보이는지 확인하고 인쇄할 수 있도록 하는 것입니다.그 목표를 달성하기 위해서는 위의 내용으로 충분합니다.
ReportLab은 훌륭하지만, 위와 같은 헬로 월드를 문서에 두드러지게 포함시키면 도움이 될 것입니다.
그것은 html 파일에서 pdf를 만듭니다.Python Pyramid 스택에서 pdf를 2단계로 생성하기 위해 선택했습니다.
- pdf 문서에 대해 원하는 스타일과 마크업이 있는 mako 템플리트로 서버측 렌더링
- 을 실행하는 중
pdfkit.from_string(...)
html을 전달하는 입니다.
이렇게 하면 스타일과 이미지가 지원되는 PDF 문서를 얻을 수 있습니다.
다음과 같이 설치할 수 있습니다.
파이프를 사용하여
pip install pdfkit
- 또한 wkhtmltopdf(Ubuntu에)를 설치해야 합니다.
pyPdf를 제안합니다.정말 잘 작동합니다.얼마 전에 블로그 글도 썼는데, 여기서 찾을 수 있어요.
fpdf는 저에게 잘 맞습니다.ReportLab보다 훨씬 간단하고 정말 무료입니다.UTF-8과 함께 작동합니다.
PDF 생성용 Python을 사용하거나 PDF로 인쇄할 수 있는 PyQt를 사용할 수 있습니다.
PDF 생성용 파이썬
Format)를하면 모든 수 있습니다.PDF(Portable Document Format)는 파일 형식입니다.그러나 때로는 PDF 문서를 동적으로 생성해야 하는 경우가 있으며, 이는 상당히 어려운 문제가 될 수 있습니다.다행히도, 도움을 줄 수 있는 도서관들이 있습니다.이 문서에서는 Python용 제품 중 하나를 살펴봅니다.
자세한 내용은 http://www.devshed.com/c/a/Python/Python-for-PDF-Generation/ #whoCFCh3TAKS368.99에서 확인하십시오.
다음은 표준 패키지에서만 작동하는 솔루션입니다. matplotlib
에는 PDF에 수치를 저장하기 위한 PDF 백엔드가 있습니다.각 하위 플롯이 이미지 중 하나인 하위 플롯을 사용하여 그림을 만들 수 있습니다.당신은 그 수치를 조작할 수 있는 완전한 자유가 있습니다.제목 추가, 포지션 플레이 등그림이 완성되면 PDF에 저장합니다. 할 때마다savefig
PDF의 다른 페이지를 만듭니다.
아래 예제는 2개의 영상을 나란히 1페이지와 2페이지에 표시합니다.
from matplotlib.backends.backend_pdf import PdfPages
import matplotlib.pyplot as plt
from scipy.misc import imread
import os
import numpy as np
files = [ "Column0_Line16.jpg", "Column0_Line47.jpg" ]
def plotImage(f):
folder = "C:/temp/"
im = imread(os.path.join(folder, f)).astype(np.float32) / 255
plt.imshow(im)
a = plt.gca()
a.get_xaxis().set_visible(False) # We don't need axis ticks
a.get_yaxis().set_visible(False)
pp = PdfPages("c:/temp/page1.pdf")
plt.subplot(121)
plotImage(files[0])
plt.subplot(122)
plotImage(files[1])
pp.savefig(plt.gcf()) # This generates page 1
pp.savefig(plt.gcf()) # This generates page 2
pp.close()
rinohtype은 PDF, PNG 및 JPEG 이미지(기본적으로) 및 기타 비트맵 형식(필로우가 설치된 경우)을 포함하는 기능을 지원합니다.
(전체 공개:나는 rinohtype의 저자입니다)
fpdf는 python(또한)입니다.그리고 자주 사용됩니다.PyPI / pip 검색을 참조하십시오.하지만 아마도 그것은 pyfpdf에서 fpdf로 이름이 바뀌었을 것입니다.기능의 출처: PNG, GIF 및 JPG 지원(투명성 및 알파 채널 포함)
만약 당신이 라텍스에 익숙하다면, 당신은 pylatex를 고려하는 것이 좋을 것입니다.
파일라텍스의 장점 중 하나는 화질을 제어하기 쉽다는 것입니다.pdf에 있는 이미지는 원본 이미지와 동일한 품질입니다.리포트랩을 사용할 때 이미지가 자동으로 압축되고 이미지 품질이 저하되는 것을 경험했습니다.
pylatex의 단점은 LaTex를 기반으로 하기 때문에 페이지에서 원하는 위치에 이미지를 정확하게 배치하기가 어려울 수 있습니다.그러나 그림 클래스에서 위치 인수를 사용하거나 때로는 하위 그림을 사용하면 충분히 좋은 결과를 얻을 수 있습니다.
단일 이미지로 PDF를 생성하기 위한 코드 예:
from pylatex import Document, Figure
doc = Document(documentclass="article")
with doc.create(Figure(position='p')) as fig:
fig.add_image('Lenna.png')
doc.generate_pdf('test', compiler='latexmk', compiler_args=["-pdf", "-pdflatex=pdflatex"], clean_tex=True)
pylatex(pip install pylatex)를 설치하는 것 외에도 LaTex를 설치해야 합니다.Ubuntu 및 기타 Debian 시스템의 경우sudo apt-get install texlive-full
만약 당신이 윈도우를 사용하고 있다면 저는 믹스텍스를 추천합니다.
저는 이것을 PyQt에서 꽤 많이 해봤고 그것은 매우 잘 작동합니다.Qt는 이미지, 글꼴, 스타일 등을 광범위하게 지원하며 이 모든 것을 PDF 문서로 작성할 수 있습니다.
저는 matplotlib이 pdf 문서에 그래픽, 텍스트 및 기타 객체를 직렬화하는 기능을 가지고 있다고 생각합니다.
저는 HTML보다 RST에 더 익숙하기 때문에 urst2pdf를 사용하여 pdf 파일을 만듭니다.거의 모든 종류의 래스터 또는 벡터 이미지를 포함할 수 있습니다.
보고서 연구소가 필요하지만 보고서 연구소는 (적어도 저에게는) 사용하기에 그렇게 간단하지 않다는 것을 알게 되었습니다.
실제로 xhtml2pdf http://flask.pocoo.org/snippets/68/ 를 사용할 수 있습니다.
이미지 파일의 형식에 따라 다르지만, 작업 중인 프로젝트의 경우 RemoteSensing.org 의 LibTIFF에서 tiff2pdf 도구를 사용했습니다.기본적으로 tiff2pdf를 호출하기 위해 하위 프로세스를 사용했습니다.exe 적절한 인수를 사용하여 내가 가진 tiff의 종류를 읽고 내가 원하는 pdf의 종류를 출력합니다.Tiff가 아닌 경우 PIL을 사용하여 Tiff로 변환하거나 위에서 언급한 ReportLab과 같이 이미지 유형에 맞는 도구(또는 이미지가 다양한 경우 일반적인 도구)를 찾을 수 있습니다.
언급URL : https://stackoverflow.com/questions/2252726/how-to-create-pdf-files-in-python
'programing' 카테고리의 다른 글
PyCharm의 터미널 내에서 가상 환경을 활성화하려면 어떻게 해야 합니까? (0) | 2023.07.18 |
---|---|
Spring Boot Actuator에서 "/health" 끝점에 대해 CORS 활성화 (0) | 2023.07.18 |
VueX 및 스크립트 설정과 함께 양식을 사용하는 방법v-model을 사용합니까? (0) | 2023.07.18 |
워드프레스에 로그인한 사용자 목록? (0) | 2023.07.18 |
Firestore에서 json 내보내기 (0) | 2023.07.18 |