사용자의 일부 이미지를 가져온 다음 이러한 이미지가 모두 포함 된 PDF 파일을 만드는 프로젝트를 진행 중입니다.
파이썬에서 이것을 할 수있는 방법이나 도구가 있습니까? 예를 들어 image1 + image 2 + image 3-> PDF 파일에서 PDF 파일 (또는 eps, ps)을 만들려면?
[language or tag] some_keyword
같이 [python] PDF
나[python] PDF image
사용자의 일부 이미지를 가져온 다음 이러한 이미지가 모두 포함 된 PDF 파일을 만드는 프로젝트를 진행 중입니다.
파이썬에서 이것을 할 수있는 방법이나 도구가 있습니까? 예를 들어 image1 + image 2 + image 3-> PDF 파일에서 PDF 파일 (또는 eps, ps)을 만들려면?
[language or tag] some_keyword
같이 [python] PDF
나[python] PDF image
답변:
이 페이지의 힌트를 따른 후의 경험입니다.
pyPDF는 이미지를 파일에 포함 할 수 없습니다. 분할 및 병합 만 가능합니다. (출처 : Ctrl + F 문서 페이지를 통해 ) PDF에 포함되지 않은 이미지가있는 경우에는 좋지 않습니다.
ReportLab은 매우 광범위합니다. ( Userguide ) 그러나 약간의 Ctrl + F와 소스를 통해 grepping하면 다음과 같은 결과를 얻 습니다.
그런 다음 파이썬 명령 줄에서 시도하십시오.
from reportlab.pdfgen import canvas
from reportlab.lib.units import inch, cm
c = canvas.Canvas('ex.pdf')
c.drawImage('ar.jpg', 0, 0, 10*cm, 10*cm)
c.showPage()
c.save()
필요한 것은 PDF로 많은 이미지를 가져 와서 이미지를보고 인쇄하는 방법을 확인할 수 있습니다. 위의 목표는 그 목표를 달성하기에 충분합니다.
ReportLab은 훌륭하지만 문서에 위와 같은 helloworld를 눈에 띄게 포함시키는 것이 좋습니다.
html 파일에서 pdf를 만듭니다. Python Pyramid 스택에서 2 단계로 pdf를 만들도록 선택했습니다.
pdfkit.from_string(...)
렌더링 된 html을 매개 변수로 전달하여 메소드 실행이렇게하면 스타일과 이미지가 지원되는 PDF 문서를 얻을 수 있습니다.
다음과 같이 설치할 수 있습니다.
핍 사용
pip install pdfkit
이것을 시도 하거나 (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 에서 자세히 알아보십시오 .
다음은 표준 패키지에서만 작동하는 솔루션입니다. 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()
PyQt 에서이 작업을 꽤 많이 수행했으며 매우 잘 작동합니다. Qt는 이미지, 글꼴, 스타일 등을 광범위하게 지원하며, 모두 PDF 문서로 작성할 수 있습니다.
matplotlib에는 그래픽, 텍스트 및 기타 객체를 pdf 문서로 직렬화하는 기능이 있다고 생각합니다.
fpdf는 파이썬입니다. 그리고 자주 사용됩니다. PyPI / pip 검색을 참조하십시오. 그러나 pyfpdf에서 fpdf로 이름이 바뀌었을 수 있습니다. 기능에서 : PNG, GIF 및 JPG 지원 (투명도 및 알파 채널 포함)
실제로 xhtml2pdf http://flask.pocoo.org/snippets/68/를 시도 할 수 있습니다
이미지 파일의 형식에 따라 다르지만 여기에있는 프로젝트의 경우 RemoteSensing.org의 LibTIFF에서 tiff2pdf 도구를 사용했습니다 . 기본적으로 하위 프로세스를 사용하여 적절한 인수와 함께 tiff2pdf.exe를 호출하여 내가 가진 tiff의 종류를 읽고 원하는 pdf의 종류를 출력했습니다. 이들이 강성이 아닌 경우 PIL을 사용하여 강가로 변환하거나 위에서 언급 한 ReportLab과 같이 이미지 유형에 더 특정한 도구 (또는 이미지가 다양 할 경우 더 일반적인 도구)를 찾을 수 있습니다.
fpdf는 나를 위해 잘 작동합니다. ReportLab보다 훨씬 간단하고 무료입니다. UTF-8과 함께 작동합니다.
rinohtype 은 PDF, PNG 및 JPEG 이미지 (기본적으로) 및 기타 비트 맵 형식 (베개가 설치된 경우) 포함을 지원합니다.
(전체 공개 : 저는 rinohtype의 저자입니다)
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를 권장 합니다
py