파이썬에서 PDF 파일을 만드는 방법 [닫기]


156

사용자의 일부 이미지를 가져온 다음 이러한 이미지가 모두 포함 된 PDF 파일을 만드는 프로젝트를 진행 중입니다.

파이썬에서 이것을 할 수있는 방법이나 도구가 있습니까? 예를 들어 image1 + image 2 + image 3-> PDF 파일에서 PDF 파일 (또는 eps, ps)을 만들려면?


47
의심 py
스러운 경우

8
또 다른 SO 검색 트릭 : [language or tag] some_keyword 같이 [python] PDF[python] PDF image
MJV

matplolib를 사용하여 여기에 오는 사람들을 위해 : stackoverflow.com/questions/17788685/…
David Parks

허용 된 답변이 오답이기 때문에이 질문에 답하지
않았습니다

답변:


39

pyPdf 제안 합니다 . 정말 잘 작동합니다. 또한 얼마 전에 블로그 게시물을 작성했습니다 . 여기에서 찾을 수 있습니다 .


7
PyPDF2의 현재 포크는 여기있습니다 .
에드몬드 버넷

98
pypdf는 기존 pdf 컨텐츠 만 잘라 내기 / 붙여 넣기 등을합니다. pdf에 텍스트 나 이미지를 추가 할 수 없습니다.
drevicko 2013

3
pyPDF2 새로운 PDF 문서, 4CS 만들기위한 아닙니다
michelek을

160

이 페이지의 힌트를 따른 후의 경험입니다.

  1. pyPDF는 이미지를 파일에 포함 할 수 없습니다. 분할 및 병합 만 가능합니다. (출처 : Ctrl + F 문서 페이지를 통해 ) PDF에 포함되지 않은 이미지가있는 경우에는 좋지 않습니다.

  2. pyPDF2 에는 pyPDF 위에 추가 문서가없는 것 같습니다.

  3. ReportLab은 매우 광범위합니다. ( Userguide ) 그러나 약간의 Ctrl + F와 소스를 통해 grepping하면 다음과 같은 결과를 얻 습니다.

필요한 것은 PDF로 많은 이미지를 가져 와서 이미지를보고 인쇄하는 방법을 확인할 수 있습니다. 위의 목표는 그 목표를 달성하기에 충분합니다.

ReportLab은 훌륭하지만 문서에 위와 같은 helloworld를 눈에 띄게 포함시키는 것이 좋습니다.


13
나는 reportlab이 내가 시도한 PDF 생성에 가장 적합하다고 말해야합니다. 그러나 조금 더 복잡합니다. blog.pythonlibrary.org/2010/03/08/… blog.pythonlibrary.org/2010/09/21/…
Jose Salvatierra

1
이것이 바로 내가 찾던 것
Maarten

@JoseSalvatierra 감사합니다 Jose ... 이것은 정말 쉽습니다. 블로그 링크 주셔서 감사합니다.
Arindam Roychowdhury

33

Pdfkit을 제안 합니다 . (설치 안내서 )

html 파일에서 pdf를 만듭니다. Python Pyramid 스택에서 2 단계로 pdf를 만들도록 선택했습니다.

  1. 원하는 스타일과 마크 업이있는 mako 템플릿으로 서버 측 렌더링 pdf 문서
  2. pdfkit.from_string(...)렌더링 된 html을 매개 변수로 전달하여 메소드 실행

이렇게하면 스타일과 이미지가 지원되는 PDF 문서를 얻을 수 있습니다.

다음과 같이 설치할 수 있습니다.

  • 핍 사용

    pip install pdfkit

  • 또한 wkhtmltopdf ( Ubuntu에 ) 를 설치해야합니다 .

14

이것을 시도 하거나 (Python-for-PDF-Generation) pdf로 인쇄를 지원하는 PyQt 를 시도 할 수 있습니다 .

PDF 생성 용 Python PDF

(Portable Document Format)를 사용하면 모든 플랫폼에서 똑같이 보이는 문서를 만들 수 있습니다. 그러나 때로는 PDF 문서를 동적으로 생성해야하는 경우도 있습니다. 다행히도 도움이 될 수있는 라이브러리가 있습니다. 이 기사에서는 Python에 대한 기사 중 하나를 살펴 봅니다.

http://www.devshed.com/c/a/Python/Python-for-PDF-Generation/#whoCFCPh3TAks368.99 에서 자세히 알아보십시오 .


더 이상 링크가 작동하지 않습니다.
Robert Koch

9

다음은 표준 패키지에서만 작동하는 솔루션입니다. matplotlib그림을 PDF로 저장하는 PDF 백엔드가 있습니다. 각 서브 플롯이 이미지 중 하나 인 서브 플롯으로 그림을 만들 수 있습니다. 그림을 엉망으로 만들 수 있습니다. 제목 추가, 위치 재생 등. 그림이 완성되면 PDF로 저장하십시오. 호출 할 때마다 savefig다른 PDF 페이지가 작성됩니다.

아래 예는 1 페이지와 2 페이지에 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()

내 테스트 코드는이 개 이미지를 하나의 페이지를 생성
생성자


7

PyQt 에서이 작업을 꽤 많이 수행했으며 매우 잘 작동합니다. Qt는 이미지, 글꼴, 스타일 등을 광범위하게 지원하며, 모두 PDF 문서로 작성할 수 있습니다.


1
와우, Qt는 놀랍습니다. 그들은 15 개의 플랫폼을 지원한다고 말합니다. Windows, Mac OS X, Linux, Android, iOS, Windows RT 및 이러한 실시간 운영 체제 -INTEGRITY QNX VxWorks qt.io/qt-framework . 저는 파이썬 팬이기 때문에 "PyQt는 Qt와 Python의 모든 장점을 결합합니다. 프로그래머는 Qt의 모든 기능을 갖추고 있지만 파이썬의 단순성으로 그것을 활용할 수 있습니다." riverbankcomputing.co.uk / software / pyqt / intro
AnneTheAgile

7

matplotlib에는 그래픽, 텍스트 및 기타 객체를 pdf 문서로 직렬화하는 기능이 있다고 생각합니다.


그래 넌 할수있어. 이 SO 답변 에는 방법에 대한 좋은 링크가 있습니다.
drevicko 2013

7

fpdf는 파이썬입니다. 그리고 자주 사용됩니다. PyPI / pip 검색을 참조하십시오. 그러나 pyfpdf에서 fpdf로 이름이 바뀌었을 수 있습니다. 기능에서 : PNG, GIF 및 JPG 지원 (투명도 및 알파 채널 포함)


1
당신의 대답은 명확하지 않지만, 당신의 확실한 PyFPDF pfoject pyfpdf.readthedocs.io/en/latest
Wojciech Kaczmarek

명명의 모든 혼란은 정말 유감입니다. 이 답변과 @WojciechKaczmarek의 의견은 실제로 더 많은지지와 관심을 기울일 가치가 있습니다. PyFPDF는 원래 PHP로 작성된 자주 사용되는 PDF 라이브러리의 파이썬 포트입니다.
Ideogram

6

내가 사용 rst2pdf을 나는 HTML보다 RST 더 잘 알고 있기 때문에, PDF 파일을 만들 수 있습니다. 거의 모든 종류의 래스터 또는 벡터 이미지 임베딩을 지원합니다.

reportlab 이 필요 하지만 reportlab이 사용하기에 너무 간단하지 않다는 것을 알았습니다 (적어도 나를 위해).



3

이미지 파일의 형식에 따라 다르지만 여기에있는 프로젝트의 경우 RemoteSensing.org의 LibTIFF에서 tiff2pdf 도구를 사용했습니다 . 기본적으로 하위 프로세스를 사용하여 적절한 인수와 함께 tiff2pdf.exe를 호출하여 내가 가진 tiff의 종류를 읽고 원하는 pdf의 종류를 출력했습니다. 이들이 강성이 아닌 경우 PIL을 사용하여 강가로 변환하거나 위에서 언급 한 ReportLab과 같이 이미지 유형에 더 특정한 도구 (또는 이미지가 다양 할 경우 더 일반적인 도구)를 찾을 수 있습니다.


3

fpdf는 나를 위해 잘 작동합니다. ReportLab보다 훨씬 간단하고 무료입니다. UTF-8과 함께 작동합니다.


2
링크 / 설명 : fpdf.org FPDF는 PDFlib 라이브러리를 사용하지 않고 순수한 PHP로 PDF 파일을 생성 할 수있는 PHP 클래스입니다. FPDF의 F는 무료를 의미합니다. 모든 종류의 용도로 사용하고 필요에 맞게 수정할 수 있습니다. FPDF는 다른 장점들 : 높은 수준의 기능들. 주요 기능은 다음과 같습니다. 측정 단위 선택, 페이지 형식 및 여백, 페이지 머리글 및 바닥 글 관리, 자동 페이지 나누기, 자동 줄 바꿈 및 텍스트 정렬, 이미지 지원 (JPEG, PNG 및 GIF), 색상, 링크, 트루 타입, 타입 1과 인코딩 지원, 페이지 압축
AnneTheAgile

12
질문 고려 매우 관련 없음 파이썬하지 PHP에 대해이었다
KingRadical

1
왜이 모든 다운 보팅? fpdf는 파이썬에서도 사용할 수 있습니다. pip install fpdf 작동
user1981924

1
fpdf는 PHP로 시작했을 수 있습니다. 그러나 실제로 잘 작동 하는 파이썬 포트가 있습니다. 따라서 이것은 다운 투표보다 더 많은 투표를받을 가치가있는 매우 관련성이 있다고 생각합니다. (이 답변이 처음 게시 된 상황에 대해서는 잘 모르겠습니다)
Sumudu

3

rinohtype 은 PDF, PNG 및 JPEG 이미지 (기본적으로) 및 기타 비트 맵 형식 (베개가 설치된 경우) 포함을 지원합니다.

(전체 공개 : 저는 rinohtype의 저자입니다)


1
야! 내가 틀렸다면 나에게 정정하십시오. 그러나 그것은 매우 강력한 도구이며 많은 다른 것과 달리 여기에 나열된 많은 다른 사람들은 php / ruby ​​/ perl / pyqt4 / other crap 라이브러리에 대한 파이썬 래퍼가 아닙니다.
Mikaelblomkvistsson

3

LaTex에 익숙하다면 pylatex 를 고려할 수도 있습니다.

pylatex의 장점 중 하나는 이미지 품질을 쉽게 제어 할 수 있다는 것입니다. PDF 파일의 이미지는 원본 이미지의 품질과 동일합니다. reportlab을 사용할 때 이미지가 자동으로 압축되고 이미지 품질이 저하되는 것을 경험했습니다.

pylatex의 단점은 LaTex를 기반으로하기 때문에 페이지에서 원하는 위치에 이미지를 정확하게 배치하기가 어렵다는 것입니다. 그러나 Figure 클래스에서 position 인수를 사용하고 때로는 Subfigure를 사용하면 충분한 결과를 얻을 수 있습니다.

단일 이미지로 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를 설치해야합니다. 우분투와 다른 데비안 시스템의 경우 실행할 수 있습니다 sudo apt-get install texlive-full. Windows를 사용하는 경우 MixTex를 권장 합니다

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.