質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
PDF

PDF(Portable Document Format)とはISOによって国際標準として制定されている電子ドキュメント用の拡張子です。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Q&A

解決済

1回答

823閲覧

pythonのPDFの読み書きができていない

zzaa

総合スコア9

PDF

PDF(Portable Document Format)とはISOによって国際標準として制定されている電子ドキュメント用の拡張子です。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

0グッド

0クリップ

投稿2020/09/28 15:38

いつもご覧いただきありがとうございます。今回はpythonのPDFモジュールを用いて履歴書を作ってみましたが、文字が反映されません。
どのようにすれば反映できるのでしょうか?

履歴書の参考記事Qiita

解決したいこと
配列に格納した値をPDFにしっかり反映されるようにしたい。例えば左上に履歴書というのが反映されるようにしたい。

# -*- coding: utf-8 -*- from reportlab.pdfgen import canvas from reportlab.pdfbase import pdfmetrics from reportlab.pdfbase.cidfonts import UnicodeCIDFont from reportlab.lib.pagesizes import A4, portrait from reportlab.platypus import Table, TableStyle from reportlab.lib.units import mm from reportlab.lib import colors # 初期設定 def make(filename="resume"): # ファイル名 pdf_canvas = set_info(filename) # キャンバス名 print_string(pdf_canvas) pdf_canvas.save() # 保存 def set_info(filename): pdf_canvas = canvas.Canvas("./{0}.pdf".format(filename)) # 保存先 pdf_canvas.setAuthor("") # 作者 pdf_canvas.setTitle("") # 表題 pdf_canvas.setSubject("") # 件名 return pdf_canvas #履歴書フォーマット作成 def print_string(pdf_canvas): pdfmetrics.registerFont(UnicodeCIDFont('HeiseiKakuGo-W5')) # フォント width, height = A4 # 用紙サイズ # (1)履歴書 タイトル font_size = 24 # フォントサイズ pdf_canvas.setFont('HeiseiKakuGo-W5', font_size) pdf_canvas.drawString(60, 770, '履 歴 書') # 書き出し(横位置, 縦位置, 文字) # (2)作成日 font_size = 10 pdf_canvas.setFont('HeiseiKakuGo-W5', font_size) pdf_canvas.drawString(285, 770, ' 年 月 日現在') # (3)証明写真 # tableを作成 data = [ [' 証明写真'], ] table = Table(data, colWidths=30*mm, rowHeights=40*mm) # tableの大きさ table.setStyle(TableStyle([ # tableの装飾 ('FONT', (0, 0), (0, 0), 'HeiseiKakuGo-W5', 12), # フォントサイズ ('BOX', (0, 0), (0, 0), 1, colors.black), # 罫線 ('VALIGN', (0, 0), (0, 0), 'MIDDLE'), # フォント位置 ])) table.wrapOn(pdf_canvas, 145*mm, 235*mm) # table位置 table.drawOn(pdf_canvas, 145*mm, 235*mm) # (4) プロフィール data = [ ['ふりがな',' 男 ・ 女'], ['氏名',''], ['生年月日                    年   月   日生 (満   歳)',''], ] table = Table(data, colWidths=(100*mm,20*mm), rowHeights=(7*mm, 20*mm, 7*mm)) table.setStyle(TableStyle([ ('FONT', (0, 0), (1, 2), 'HeiseiKakuGo-W5', 8), ('BOX', (0, 0), (1, 2), 1, colors.black), ('INNERGRID', (0, 0), (1, 2), 1, colors.black), ('SPAN',(0, 2), (1, 2)), ('SPAN',(1, 0), (1, 1)), ('VALIGN', (0, 0), (1, 2), 'MIDDLE'), ('VALIGN', (0, 1), (0, 1),'TOP'), ])) table.wrapOn(pdf_canvas, 20*mm, 232*mm) table.drawOn(pdf_canvas, 20*mm, 232*mm) # (5)住所 data = [ ['ふりがな', '電話'], ['連絡先(〒   ー    )', 'E-mail'], ['ふりがな', '電話'], ['連絡先(〒   ー    )', 'E-mail'], ] table = Table(data, colWidths=(120*mm, 40*mm), rowHeights=(7*mm,20*mm,7*mm,20*mm)) table.setStyle(TableStyle([ ('FONT', (0, 0), (1, 3), 'HeiseiKakuGo-W5', 9), ('BOX', (0, 0), (1, 3), 1, colors.black), ('INNERGRID', (0, 0), (1, 3), 1, colors.black), ('VALIGN', (0, 0), (1, 2), 'MIDDLE'), ('VALIGN', (0, 1), (1, 1), 'TOP'), ('VALIGN', (0, 3), (1, 3), 'TOP'), ])) table.wrapOn(pdf_canvas, 20*mm, 178*mm) table.drawOn(pdf_canvas, 20*mm, 178*mm) # (6)学歴・職歴 data = [ [' 年', ' 月', ' 学歴・職歴'], [' ', ' ', ' '], [' ', ' ', ' '], [' ', ' ', ' '], [' ', ' ', ' '], [' ', ' ', ' '], [' ', ' ', ' '], [' ', ' ', ' '], [' ', ' ', ' '], [' ', ' ', ' '], [' ', ' ', ' '], [' ', ' ', ' '], [' ', ' ', ' '], [' ', ' ', ' '], [' ', ' ', ' '], [' ', ' ', ' '], [' ', ' ', ' '], [' ', ' ', ' '], [' ', ' ', ' '], [' ', ' ', ' '], [' ', ' ', ' '] ] table = Table(data, colWidths=(25*mm, 14*mm, 121*mm), rowHeights=7.5*mm) table.setStyle(TableStyle([ ('FONT', (0, 0), (-1, -1), 'HeiseiKakuGo-W5', 11), ('BOX', (0, 0), (-1, -1), 1, colors.black), ('INNERGRID', (0, 0), (-1, -1), 1, colors.black), ('VALIGN', (0, 0), (-1, -1), 'MIDDLE'), ])) table.wrapOn(pdf_canvas, 20*mm, 20*mm) table.drawOn(pdf_canvas, 20*mm, 20*mm) # 1枚目終了 pdf_canvas.showPage()

PDF画像

イメージ説明

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

提示されたコードは1ページ目を作成するところまでで、提示されたサイトには2ページ目を生成するコードと、makeを実行するコードが書かれています。そちらも含めて実行してください。

生成されたPDFファイル(resume.pdf)を、どのアプリで確認していますか?
こちらの手元で、Acrobat ReaderやSumatraPDF、Google Chromeなどで確認したところ、どのアプリでも「履歴書」などの日本語がちゃんと表示されています。

おそらく、確認に使っているアプリが日本語表示に対応していないのでは?

投稿2020/09/28 15:58

Daregada

総合スコア11990

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

zzaa

2020/09/28 16:10

どうやらVSCODEの拡張機能が原因で文字が反映されていませんでした。実際にFinderからPDFを開いたら問題なかったですね。
Daregada

2020/09/28 17:23

拡張機能は「vscode-pdf」かな。 こちらの環境でも、今回のコードで作成したPDFファイルの文字が表示されなかった。いっぽう、Wordで作成したPDFファイルの日本語は表示できているので、何が原因なのかは不明。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問