Try   HackMD
tags: python,pdf

Python 產生PDF方法一

最近修改日期:20201224

# 產生PDF方法 # 感覺是畫圖後,再產生PDF。 # 如何畫表格?如何換行,如何畫圖型? # W H 的意義?=>W:幾個字元寬,H:幾行高 import os from reportlab.pdfbase import pdfmetrics from reportlab.pdfbase.ttfonts import TTFont from reportlab.pdfgen import canvas def make_pdf(ps,W,H,fn="output.pdf"): #use reportlab to generate a pdf with the prime in it end = " is a prime, with %i digits." % (W*H) rows = [] for i in range(H): rows.append( ps[i*W: i*W+W]) # print(rows) c = canvas.Canvas(fn) # 由C:\Windows\Fonts\微軟正黑體 目錄下,將msjh.ttc 複製在與程式同目錄下。 # pdfmetrics.registerFont(TTFont('msjh', 'msjh.ttc')) # 字型放於c:\Windows\Fonts資料夾下的 msjh.ttc (細明體) Fontfile = os.path.join('c:\\', 'Windows', 'Fonts','msjh.ttc') pdfmetrics.registerFont(TTFont('msjh', Fontfile)) c.setPageSize((16*max(W,len(end)), 16*(2+H))) print (16*max(W,len(end)), 16*(2+H)) c.setFont('msjh', 16) TOP = 16*(1+H) for i,r in enumerate(rows): c.drawString(0, TOP - i*16, r) c.drawString(0, 8, end) c.save() myStr = '這是Python產生PDF方法' make_pdf('aa',3,4,'MyPdf.pdf') # 20200526 By YTC

參考:Python reportlab.pdfbase.ttfonts.TTFont() Examples Example 7

M20201224 By YTC 修正無法產出PDF的Bug