前提・実現したいこと
windowsで作成した人名用の外字をreportLabでPDFに出力したいのですが出来なくて困っています。
ExcelからPDFに書き出せば、フォントが埋め込まれるのか、他の端末(Mac等)でも表示できるので、同じ事をreportLabで実現したいと思っています
どなたか、ご教授いただけると助かります。
Python3.10.1
reportLab 3.6.3
openpyxl 3.0.9
pandas 1.3.5
該当のソースコード
Python3.10.1
1import openpyxl as excel 2import pandas as pd 3from reportlab.pdfgen import canvas 4from reportlab.lib.pagesizes import A4, portrait 5import os 6 7from reportlab.pdfbase import pdfmetrics 8from reportlab.pdfbase.ttfonts import TTFont 9from reportlab.pdfbase.cidfonts import UnicodeCIDFont 10 11book = excel.load_workbook('sauce/gaizi.xlsx') 12sheet = book['s1'] 13df = pd.DataFrame(sheet.values) 14 15file_path = 'output/test.pdf' 16page = canvas.Canvas(file_path, pagesize=portrait(A4)) 17 18pdfmetrics.registerFont(TTFont("msmin", "C:\Windows\Fonts\msmincho.ttc")) 19pdfmetrics.registerFont(TTFont("ipamjm", "C:\Windows\Fonts\ipamjm.ttf")) 20 21page.setFont("msmin", 10.5) 22 23page.drawString(30, 800, df.iloc[1,2]) 24 25page.showPage() 26page.save() 27 28
試したこと
上記プログラムの
page = canvas.Canvas(file_path, pagesize=portrait(A4)) page.setFont("msmin", 10.5)
を以下のように変更してみましたが、ダメでした。
page = canvas.Canvas(file_path, pagesize=portrait(A4),initialFontName='msmin')
initialFontName='msmin'
としてフォントをPDFに埋め込んでみましたが、外字部分はいわゆる豆腐文字のままでした。
windowsの標準外字ファイルであるEUDC.tteの部分は埋め込まれない見たいです。
あなたの回答
tips
プレビュー