2017-11-13 1 views
0

파이썬 fpdf를 사용하여 긴 이미지 (각 이미지는 2 페이지까지 확장 가능)를 삽입하고 싶습니다. 그러나 페이지 나누기가 트리거되면 이미지는 다음 페이지로 계속되지 않습니다. 주어진 set_y 값 (헤더 포함)에서 시작하여 다음 페이지로 나머지 이미지를 어떻게 인쇄 할 수 있습니까?파이썬 fpdf에서 이미지의 페이지가 끊어짐

+0

페이지 크기로 이미지의 크기를 조정할 수 있습니다. 따라서 이미지는 한 페이지에 있습니다. 페이지 나누기를 제거 할 수 없습니다. – TheUnknown

+0

이미지 품질이 중요합니다. 현재 이미지를 분리하여 삽입하려고하지만 많은 버그가 있으며 성능이 저하됩니다. 코드 예제로 도울 수 있습니다. –

답변

3

fpdf이있는 방법이 있다고 생각하지만 pdfkit/wkhtmltopdf 기반 솔루션으로 전환하는 것이 좋습니다.

reportlab과 비슷한 문제가 많습니다. fpdf과 매우 비슷하며, wkhtmltopdf로 전환하면 훨씬 좋은 느낌입니다.

wkhtmltopdf를 사용하면 표준 웹 스택으로 레이아웃을 제어하고 CSS와 자바 스크립트를 사용하고 선호하는 템플릿 엔진을 사용한 다음 HTML 파일을 pdf로 쉽고 훨씬 더 강력하게 변환 할 수 있습니다. 내 위의 주석의 그냥 예를

+0

은 fpdf (거의 300 줄)에서 전체 템플릿을 완료했기 때문에 전환 할 수 없습니다. –

+0

~ 2500 행의 reportlab 기반 프로젝트를 wkhtmltopdf로 마이그레이션했지만 코드 행 수가 유지 보수 어려움과 같지 않아서 HTML/CSS를 디버그하는 것이 훨씬 쉽습니다. – georgexsh

-1

,

from fpdf import FPDF 
from PIL import Image 

pdf = FPDF() 
pdf.add_page() 

im = Image.open('1.jpg') 
width_img, height_img = im.size 

#mm = (pixels * 25.4)/dpi 
# - 25.4 millimeters in an inch 
w = (width_img*25.4)/300 
h = (height_img*25.4)/300 

pdf.image('1.jpg',0,0,w,h) 
pdf.output("yourfile.pdf", "F") 
+1

이 처리 페이지가 전혀 중단되지 않습니다. –

+0

위 코드는 페이지 나누기를 처리하지 않습니다. 나의 이전의 코멘트의 그 단지 예. – TheUnknown

+0

다음 * 당신의 answe *에 넣어. 물론 이미지를 분할하여 여러 페이지에 배치 할 수 있습니다. –

0

당신의 PDF 데이터 세트 당신이 "\r"에 대한 검색을 시작 및/또는 (여러) '\n'문자 수있는 데이터 문자열 (들) 인 경우 목록에있는 경우에는 그 포맷 문자열을

chrs = ['\r', '\n', '\n\n'] 

for item in chars: 
    pdf-data.replace(item) 

: 아래의 코드를 사용하여

list = pdaf-data 

for list-item in list: 
    for list-item in chars: 
     pdf-data.replace(item) 

파일에서 직접 읽는 경우 "파일 열기 등"을 사용하고 readline()을 사용하십시오.

관련 문제