0
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

PHP/Laravelで自分で用意したPDFに文字を入力する方法

Posted at

タイトルにある通り
PHP/LaravelでテンプレPDFに文字を書き込んでいく方法に難航したため保存しておきます。

まず、必要なライブラリがあるため以下手順でインストールしていきます

TCPDFのインストール ⇒ FPDIをインストール

1.TCPDFインストール

gitから「Download zip」でzipファイルをダウンロード

image.png

2.FPDIインストール

以下公式サイトからzipファイルをダウンロード

image.png

3.手順1.2でダウンロードしたファイルを解凍しまとめる

image.png

4.テンプレートになるPDFを格納する

適当にネットとかで拾ってきたPDFを、今回はtemplateフォルダ作成して格納

すると、以下のようなフォルダ構成になると思います(若干いらないファイル削除しました)

image.png

5.PDF出力のソースコードを書く

以下のように記載していきます

<?php

namespace App\Http\Controllers;

use setasign\Fpdi\Tcpdf\Fpdi;

class OutResumePdfController extends Controller
{
    //
    function pdfResume()
    {
        //読み込むパスは個人で変えてください
        require_once(__DIR__.'/../../lib/tcpdf/tcpdf.php');
        require_once(__DIR__.'/../../lib/tcpdf/fpdi/autoload.php');
        
        $pdf = new Fpdi();
        $pdf->setPrintHeader( false );

        //テンプレートPDFの読み込み
        $pdf->setSourceFile(__DIR__."/../../lib/tcpdf/template/resume_template1.pdf");

        //PDFのサイズなどを設定(LANDSCAPE(横)にA3サイズ)
        $pdf->AddPage('LANDSCAPE','A3');
        $tpl = $pdf->importPage(1);
        $pdf->useTemplate($tpl);

        //書き込む文字のフォント・サイズを設定
        $pdf->SetFont('kozminproregular', '', 20);

        //書き込む文字の座標と文字を設定
        $pdf->Text(40, 50, "テスト太郎");

        //PDFの出力
        $pdf->Output("resume.pdf", "I");
    }
}

細かい仕様はドキュメントを確認してください
公式ドキュメントか分からないですが、ここを参考にしました

文字の座標などは、adobeAcrobatReaderなどを使うとわかりやすいかもしれません
テンプレPDFのサイズなどもこのソフトで確認出来ます。

6.実際に実行してみる

image.png

文字が出力されました

プラスαでフォントの変更や画像埋め込みをしたい場合は以下サイトを参考にすることで実装出来ました

0
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?