LoginSignup
0
1

More than 1 year has passed since last update.

PHPでテンプレートデザインを作成する

Last updated at Posted at 2021-06-01

イラストレーター等で作成したテンプレートデザインにプログラミング言語PHPを利用して流し込みできるサンプルを実装したので、自分への備考録も兼ねてまとめましたのでご紹介します。

□ 使用言語: PHP
前提 HTML/PHPの基礎的知識、フォーム送信が分かる方向け

□ テンプレート作成ツール
Adobe Illustrator推奨、解像度にこだわなければAdobe XDも可
他にもExcel、WordなどPDFを作成できるアプリケーションなら可

ライブラリを用意

TCPDF: https://github.com/tecnickcom/tcpdf

ダウンロード後、下記フォルダ・ファイルを抜き出して「tcpdf」(名称任意)のフォルダ名で新規作成して入れておく
fonts
include
tcpdf_autoconfig.php
tcpdf_barcodes_1d.php
tcpdf_barcodes_2d.php
tcpdf_import.php
tcpdf_parser.php
tcpdf.php

FPDI: https://www.setasign.com/products/fpdi/downloads/
ダウンロード後、「src」フォルダを抜き出して「fpdi」(名称任意)の名前に書き換える

この2個のフォルダを「lib」(名称任意)というフォルダにまとめる。

全体のディレクトリを構成する

①全体のプロジェクトフォルダとして「tcpdf」(名称任意)作成」

②その中に先ほど作った「lib」フォルダとルートファイルの「index.php」と「receipt / receipt-pdf.php」「receipt / receipt.pdf」を作成

index.php 今回はここにフォームデータ入れます
receipt-pdf.php 流し込むための処理を書く
receipt.pdf  流し込みテンプレートとなるファイル
※今回はサンプルとして領収書なのでreceiptにしています

□ index.phpを編集

<form method="post" action="./receipt/receipt-pdf.php" target="_blank">
    <div>
        <div>No.</div>
        <div><input type="text" name="number" value="00" placeholder="No." required></div>
    </div>
    <div>
        <div>名前</div>
        <div><input type="text" name="name" value="山田太郎" placeholder="お名前" required></div>
    </div>
    <div>
        <div>金額</div>
        <div><input type="text" name="price" value="10000" placeholder="金額" required></div>
    </div>
    <div>
        <div>但し書き</div>
        <div><input type="text" name="proviso" value="お品代として" placeholder="但し書き" required></div>
    </div>
    <button type="submit">PDFを作成</button>
</form>

□ receipt-pdf.phpを編集

<?php
// ライブラリ読み込み
require_once('../lib/tcpdf/tcpdf.php');
require_once('../lib/fpdi/autoload.php');

// ライブラリインスタンス化
$pdf = new setasign\Fpdi\Tcpdf\Fpdi('P', 'mm', [210, 297], true, 'UTF-8', false);

// $pdf->SetMargins(0, 0, 0); //マージン無効
$pdf->SetAutoPageBreak(false); //自動改ページ無効
$pdf->setPrintHeader(false); //ヘッダー無効 trueにすると線が表示
$pdf->setPrintFooter(false); //フッター無効 trueにすると線が表示

$pdf->setSourceFile("receipt.pdf"); // テンプレートファイル指定
$pdf->AddPage();
$tpl = $pdf->importPage(1);
$pdf->useTemplate($tpl);

// フォームから送られてくる値受け取り
$number = $_POST["number"];
$name = $_POST["name"];
$price = $_POST["price"];
$proviso = $_POST["proviso"];

//$pdf->SetFont('kozminproregular', スタイル, サイズ);
//$pdf->Text(x座標, y座標, テキスト);

//No.
$pdf->SetFont('kozminproregular', '', 11);
$pdf->Text(150, 11, htmlspecialchars( $number ) );

//名前
$pdf->SetFont('kozminproregular', '', 28);
$pdf->Text(15, 35, htmlspecialchars( $name ) );

//金額
$pdf->SetFont('kozminproregular', '', 40);
$price = number_format($price) . "-";
$pdf->Text(68, 70, htmlspecialchars( $price ) );

//但し書き
$pdf->SetFont('kozminproregular', '', 11);
$pdf->Text(70, 90, htmlspecialchars( $proviso ) );

//日付
$pdf->SetFont('kozminproregular', '', 11);
$today = date("Y年m月d日");
$pdf->Text(150, 21, $today);

//$pdf->Output(出力時のファイル名, 出力モード);
$pdf->Output("output.pdf", "I");
0
1
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
1