機能 イベント お役立ち お知らせ

Claude CodeでPDFレポートを自動生成する方法|ReportLabで帳票・納品物を出力する手順

Claude CodeでPDFレポートを自動生成する方法|ReportLabで帳票・納品物を出力する手順

PDFレポートの作成は、見た目の正確さが求められるぶん自動化しづらい領域です。帳票、納品物、月次報告書などフォーマットを維持したままデータを差し替える作業が毎回発生し、手動での微調整に時間を取られます。Excel やスプレッドシートと違い、PDF はレイアウト崩れが許容されにくく、出力のたびに目視確認が必要になるのが実情です。

Claude Code は ReportLab や WeasyPrint のコードを自然言語で生成できるため、テーブル構成、ページ番号、ヘッダー・フッター付きの PDF 帳票をスクリプトとして組み立てられます。Excelレポートの自動生成で openpyxl を扱いましたが、社外納品や印刷前提の帳票では PDF 形式が求められる場面が多く、その場合は ReportLab や HTML→PDF 変換のアプローチが実務に合います。


本記事のポイント

  1. Claude CodeはReportLabのコードを自然言語で生成できるため、テーブル構成、ページ番号、ヘッダー・フッター付きのPDF帳票を手作業なしで組める。
  2. PDF生成ライブラリはReportLab(精密レイアウト)、WeasyPrint(HTML→PDF変換)、FPDF(軽量出力)の3択が基本であり、用途で選ぶと手戻りが減る。
  3. 納品物や帳票のように見た目の正確さが求められるPDFは、HTML→PDF変換パターンの方がレイアウト調整が速いことが多い。

導入を検討すべき判断ポイント

  • 帳票や納品物のPDFを毎回手動で作成・調整しており、フォーマット維持に時間がかかっている
  • データは揃っているが、PDF出力のレイアウト制御やページ番号挿入をコードで書ける人がいない
  • 社外向け報告書や請求書など「見た目の正確さ」が求められるPDFを定期的に出力している

レイアウトの再現とデータ差し替えの両方が毎回発生している業務ほど、Claude Code + PDF ライブラリの効果が出ます。

PDF生成ライブラリの選択肢

Python でPDFを生成するライブラリは複数ありますが、実務での選択肢は大きく3つに絞られます。用途に合わせて選ぶと、途中でライブラリを切り替える手戻りが減ります。

ライブラリ特徴向いている用途日本語対応
ReportLab座標指定で精密なレイアウト制御が可能。テーブル、グラフ、画像埋め込みに対応帳票、請求書、検査レポートなど座標レベルの配置が必要な文書フォント登録で対応
WeasyPrintHTML+CSSをPDFに変換。Webデザインの知識がそのまま使える納品物、提案書、レイアウトが複雑な報告書CSS font-faceで対応
FPDF軽量で依存が少ない。シンプルなPDF出力に向く領収書、ラベル、単純な一覧表フォント登録で対応

Claude Code はいずれのライブラリのコードも生成できます。迷った場合は、レイアウトの精密さが必要なら ReportLab、見た目の調整を CSS で行いたいなら WeasyPrintを選ぶのが実務的です。

基本:テキストとテーブルのPDF出力

まずは ReportLab で最小限のPDFを生成するパターンです。プロジェクト構成を先に固定しておくと、Claude Code への指示がシンプルになります。

pdf-report-project/
          input/
            monthly-data.csv       # 月次データCSV
          fonts/
            NotoSansJP-Regular.ttf # 日本語フォント
          templates/
            header-logo.png        # ロゴ画像(任意)
          rules/
            report-rules.md        # レイアウトルール、列定義
          output/
            monthly-report.pdf
        

Claude Code への指示例は次のとおりです。

# Claude Code への指示例
        input/monthly-data.csv を読み込み、output/monthly-report.pdf へ出力して。
        - ReportLab を使用
        - 日本語フォントは fonts/NotoSansJP-Regular.ttf を登録
        - タイトル「月次実績レポート」をページ上部に配置
        - CSVデータをテーブル形式で出力(ヘッダー行は背景色 #2C3E50、文字色 白)
        - 金額列は3桁カンマ区切り
        - テーブルの罫線は薄いグレー
        

このレベルの指示で、ReportLab の SimpleDocTemplate、Table、TableStyle を使ったコードが生成されます。テーブルの列幅指定、セル内の文字揃え、行の交互背景色なども自然言語で追加できます。

応用:ブランドテンプレート適用とページ番号

社外向けの帳票や納品物では、ロゴ、ヘッダー・フッター、ページ番号が必要になります。ReportLab ではページテンプレート機能を使って、全ページ共通の要素を定義できます。

# ブランドテンプレート適用の指示例
        先ほどの月次レポートに以下を追加して。
        - 全ページの左上に templates/header-logo.png を配置(幅4cm)
        - ヘッダー右側に「株式会社〇〇 月次実績レポート」を表示
        - フッター中央にページ番号「X / Y」形式で表示
        - フッター右下に出力日時を自動挿入
        - ページ余白は上3cm、下2.5cm、左右2cm
        

ReportLab の BaseDocTemplate と PageTemplate を組み合わせることで、ヘッダー・フッターの描画関数を定義し、全ページに適用できます。Claude Code はこの構成のコードも自然言語から生成できるため、PDF帳票の「見た目の骨格」を短時間で組めます。

ポイントは、ロゴの位置とフッターのレイアウトを先に固定し、本文エリアのサイズを逆算することです。余白やヘッダー高さを後から変えると、テーブルの列幅やフォントサイズの再調整が発生します。

HTML→PDF変換パターン

納品物や提案書のように、レイアウトが複雑でデザイン要素が多いPDFには、WeasyPrint による HTML→PDF 変換が向いています。CSSの知識がそのまま使えるため、Word文書の自動生成よりもレイアウト調整が直感的に進みます。

# WeasyPrint パターンの指示例
        以下のHTMLテンプレートを使って、input/monthly-data.csv のデータを埋め込み、
        WeasyPrint で output/delivery-report.pdf へ変換して。
        - Jinja2 テンプレートで CSV データをテーブルに展開
        - CSSで A4 縦レイアウト、余白 2cm を指定
        - テーブルのヘッダーは固定(改ページ時にも繰り返し表示)
        - 改ページ位置は行数で自動制御
        

WeasyPrint のメリットは、HTML+CSS でレイアウトを定義するため、ブラウザでプレビューしながら調整できることです。特に複数カラムのレイアウト、画像の回り込み、改ページ制御など、ReportLab では座標計算が必要な処理が CSS だけで済みます。

比較軸ReportLabWeasyPrint
レイアウト定義Python コードで座標指定HTML + CSS
プレビューPDF出力後に確認ブラウザで即時確認可能
複雑なレイアウト座標計算が必要CSSで直感的に記述
テーブルの改ページコードで制御CSS の break-inside で制御
依存関係pip install のみシステムライブラリが必要な場合あり

人が確認する境界はここ

PDF生成を自動化しても、以下のポイントは人が目視で確認すべきです。

  • 改ページ位置:テーブルが中途半端な位置で切れていないか。特に行数が可変のデータで発生しやすい
  • 日本語の文字化け:フォント登録が漏れていると文字が表示されない。初回生成時に必ず確認
  • 数値の桁・単位:CSV のデータ型が意図どおりに変換されているか。特に金額と日付
  • ロゴ・ヘッダーの位置ずれ:画像の解像度やアスペクト比が変わるとレイアウトが崩れる
  • 印刷時の余白:画面表示では問題なくても、実際に印刷すると端が切れるケースがある

自動化の効果が出るのは「毎回同じ確認ポイントを同じ手順で回せる」状態を作ることです。チェックリストをスクリプトと一緒に管理しておくと、担当者が変わっても品質が維持できます。

よくある質問

日本語フォントは対応している?

ReportLab、WeasyPrint、FPDF いずれも日本語フォントに対応しています。Noto Sans JP や IPAex ゴシックなどの TrueType フォントを登録すれば、日本語のテキストやテーブルを正しく表示できます。Claude Code に「日本語フォントを登録して」と指示すれば、フォント登録のコードも含めて生成されます。

既存PDFの編集もできる?

既存 PDF の編集には PyPDF2 や pikepdf を使います。ページの結合・分割、透かしの追加、メタデータの編集が可能です。ただし、既存 PDF 内のテキストやレイアウトを直接書き換えるのは技術的に難しく、実務では「既存 PDF をベースに新しい PDF を生成し直す」パターンが現実的です。

画像やグラフを埋め込めるか?

ReportLab は matplotlib や Pillow で生成した画像をそのまま PDF に埋め込めます。グラフを matplotlib で描画し、PNG として保存してから ReportLab で配置する流れが一般的です。WeasyPrint の場合は HTML の img タグで画像を参照するだけで埋め込めるため、より簡潔です。

Word/PPTXからPDF変換はできるか?

Word から PDF への変換は Claude Code で Word 文書を自動生成する方法、PowerPoint の自動化は Claude Code でパワポ資料を自動生成する方法 でそれぞれ整理しています。LibreOffice のコマンドライン変換を使えば .docx や .pptx を PDF に変換できますが、レイアウトの再現性は完全ではないため、最初から PDF として生成する方が確実です。

公開情報と責任主体

本記事は 2026年2月17日時点の運用前提で、ファネルAi編集部が執筆し、ファネルAi監修チームがレビューしています。更新方針は レビュー方針 に沿います。ここで示すファイル構成やコード指示例は運用設計を理解するための例であり、実際の導入では自社のデータ形式、帳票フォーマット、納品物の仕様に合わせて調整してください。

関連ページと関連記事

PDF レポートの自動生成は、他の Office 系出力やドキュメント自動化と並べて見ると全体像が掴みやすくなります。

PDF帳票の自動化をPoCから固めたい場合

記事で見えてきた自動化の論点を、PoCの進め方や実装範囲まで含めて具体化したい場合は、超速AI PoC も確認しておくと判断しやすくなります。

相談前に整理しておくと早い3項目

  • 自動化したいPDF帳票の現物と、入力元CSV・データソースの一覧を用意する
  • 出力PDFのレイアウト要件(ヘッダー・フッター、ロゴ、ページ番号、テーブル構成)を現行帳票から洗い出す
  • 配布先(社内・社外)と更新頻度(日次・週次・月次)、印刷の有無を決めておく

この前提があると、PoCで作るべきスクリプトの範囲とライブラリ選定を短時間で固められます。

超速AI PoCを見る

ブログ一覧へ戻る