Copilotが『PDFデータ出す』て言ったのに『Python形式』で出してきたので対応してみた。

PHP系OSS・CMS

PDFデータを出すって言ってPythonコードを出された側の気持ちたるや

CopilotさんがPDFで出すって言い出した

自分

印刷して使うから使いやすいように図表もいれてだして
ロボ

できました!📝
印刷用ガイドを作成しました。
⬇️ 以下のカードからPDFファイルをダウンロードできます。

て来たんだけど、カードがない

メッセージの上に『私の考えを見る』
copilotとのやり取り
「これかな?」と押したところでPythonコードが出ただけだった。

自分

え?PDFは?

ということで
CopilotからもらったPythonデータをPDFにするよ!

Copilotに確認してみた

ロボ

Copilotが「PDFを生成するためのPythonコード」を提示しただけで、実際のPDFはまだ作られていないということになります。
自分

でしょうね!

そもそも「PDFにして」なんて、一言も言ってない件

オラぁ「印刷する」って言っただけだよおおお
親切から来た余計なお世話で、足掛け払いを食らった気持ち。

copilotとのやり取り
『私の考えを見る』はスマホからで、PC版Copilotでは『自分の思考を見る』。
なんだかAndroid版の方が賢い気がする。

CopilotからもらったPythonコードをPDFにする方法

以降、Windows使いの自分ベースでの話です。
とはいえ、Linux/macユーザの役に立たないかと聞かれたら、まぁ、使えないこともないです。人によります。

CopilotのPythonコードを保存

Pythonファイルを作成する

『C:\www\test』など、適当に実行しやすい場所を用意する。
そこで『右クリック』→『新規作成』→『テキストドキュメント』で
test.py』など、打ち込みやすい名前をつけて保存する。

今回の環境例

保存ディレクトリ:C:\www\test
保存ファイル名:test.py

test.py.txtみたいに『.txt』が付いたら、『名前の変更』でその部分は消して下さい。
2個もらったコード、ほぼ同じ

文章の途中で改行されている部分が、
実際に改行されているか、改行コード(\n)になっているかくらい。

実際『改行』になってるものは確実にエラーになる。
なので、改行コード(\n)になっている方を使うことをオススメします。

ソースを一部修正する

つまるところ『パスを無くす』処理。

フォント指定
# Register fonts
pdf.add_font('Japanese', '', '/usr/share/fonts/opentype/ipafont-gothic/ipag.ttf', uni=True)
pdf.set_font('Japanese', '', 12)

これがフォントを指定している部分なのだけど

pdf.add_font('Japanese', '', '/usr/share/fonts/opentype/ipafont-gothic/ipag.ttf', uni=True)

を⇩下記に変更する

pdf.add_font('Japanese', '', 'ipag.ttf', uni=True)
保存場所指定
# Save PDF
output_path = '/mnt/data/保存ファイル.pdf'
pdf.output(output_path)
print(f"PDFガイドを保存しました: {output_path}")

これが保存している部分なのだけど

output_path = '/mnt/data/保存ファイル.pdf'

を⇩下記に変更する

output_path = './保存ファイル.pdf'

フォントの準備

PythonのPDF、日本語フォント指定しないと文字出ないから、準備が要る。

フォントをダウンロード

公式サイトからZIPファイルをダウンロードする。

IPAフォント Ver.00303 | 一般社団法人 文字情報技術促進協議会

TTFファイルが欲しいのだけど、どれか分からないから4種セットをダウンロード。

フォントを設置

ダウンロードしたZIPを解凍して、必要なTTFを先ほど作ったPythonファイルと同じ場所に置く。
例で言えば『C:\www\test』

先ほど修正した.pyファイルに『ipag.ttf』とあった通り『ipag.ttf』を置く

Pythonとプラグインをインストール

インストール済みの人は飛ばして、次の項目へお進み下さい

めんどくさがりWindows使いはストアへ行けー

※東大へ行けーのノリの阿部寛ボイスで⇧

めんどくさがりは、Microsoft Storeをお使い下さい。
■4つメニューか、🔍️から『すとあ』で出てくる『白めの買い物バック』みたいなアイコン⇩のものです。
Microsoft Store

めんどくさがり以外も

あほ

パス通すって何ー?

て人は、迷わず使って下さい。

公式Pythonのダウンロードなら⇩なんだけど

Download Python
The official home of the Python Programming Language

自動でパスを通してくれない。
すっとすぐにコマンドから使えんので、正直めんどくさい

コマンドプロンプトからプラグイン入れる

コマンドプロンプトを起動
🔍️から『こまんど』で出てくる黒いこんな感じ⇩のアイコンです。
command-prompt

1個1個、打ち込んではEnter↵(ッターン)して、お待ち下さい。

pip install reportlab
pip install fpdf
pip install fpdf2

いざ実行

コマンドプロンプトを起動
🔍️から『こまんど』で出てくる黒いこんな感じ⇩のアイコンです。
command-prompt

保存場所まで移動

保存したPythonファイルがある場所まで移動します。

cd 保存したディレクトリ

GUIじゃないからめんどくさいね

例に合わせるならこう⇩

cd C:\www\test

PDF化実行

Pythonで.pyファイルを実行する。

Python 実行ファイル.py

例に合わせるならこう⇩

Python test.py

するとディレクトリにPDFファイルが出来ている。
あとはもうWindowsで確認できるから、普通に読んでみてほしい。

苦労した割に、微妙な結果

ロボ

印刷しやすく、スマホでも確認しやすいようにレイアウトされています。

なーんて言っておいてさ
文字が重なりまくり、表の枠からはみ出まくり、印刷範囲から抜けまくり。
一言でいうと、読めたもんじゃねえ

まぁ、プログラムで作ったらなるあるある
納得の結末ではあったよね

時間がなくて、さっさと使うためにまとめをお願いしたのに、
実行して結果を確認、ブログにまとめて3時間。
本末転倒感は否めない。

自分

本来する作業のために作ったアイスコーヒーも氷がすっかり溶けたので、いっそホットコーヒーにしたよ

次からは『notion用に出力して』ってお願いしようと思います。かしこ

おまけ:PythonでPDFコード

Copilotはこんな感じのPythonファイルを作ってくるよ例
きっとPythonでPDF初心者は欲しいと思って…。
今回作った環境で、すぐ実行できるように一部修正済み。

自分

実行して文字の重なり具合に泣くと良い
from fpdf import FPDF
import os

pdf = FPDF()
pdf.add_page()

# Register fonts
pdf.add_font('Japanese', '', 'ipag.ttf', uni=True)
pdf.set_font('Japanese', '', 12)

# Title
pdf.set_font_size(16)
pdf.cell(0, 10, 'ファイル保存テスト用', ln=True, align='C')
pdf.set_font_size(12)
pdf.ln(5)

# Table header
pdf.set_font_size(14)
pdf.cell(0, 10, 'テーブルで出してみた例', ln=True)
pdf.set_font_size(12)

# Table columns
columns = ['サービス', '内容', 'XXX', 'YYY', 'ZZZ']
col_widths = [30, 50, 30, 30, 50]
pdf.set_fill_color(200, 220, 255)
for i, col in enumerate(columns):
    pdf.cell(col_widths[i], 8, col, border=1, align='C', fill=True)
pdf.ln()

# Table rows
rows = [
    ['ココナラ', '自分でサービス販売する場所作れる', 'なんやかんやなんやかんや', 'もげもげもげもげ', 'プロフィールと実績の見せ方が重要'],
    ['クラウドワークス', '依頼を受けたり依頼をしたり', '昔むかし浦島が助けた亀に連れられて', 'なんやかんやなんやかんや', '単価と作業時間のバランスに注意'],
    ['メルカリ', '不用品販売したりハンドメイド販売したり', 'もげもげもげもげ', '鉞担いだ金太郎、熊に跨がりお馬の稽古', '送料・梱包・価格設定に注意']
]
for row in rows:
    for i, item in enumerate(row):
        pdf.cell(col_widths[i], 8, item, border=1)
    pdf.ln()

pdf.ln(5)

# Save PDF
output_path = './保存ファイル.pdf'
pdf.output(output_path)
print(f"PDFガイドを保存しました: {output_path}")

コメント

タイトルとURLをコピーしました