.htaccessでPHPのファイルアップロードサイズの上限値を変更
2022.02.5
PHPを使用して画像(動画・PDF等)をアップロードするフォームを作成した際に、ファイル…

リモート化が加速したあたりから紙(捺印)での契約書にかわりグローバルサイン等、WEBでの契約締結が多くなってきています。
弊社でもサービスの導入を考えましたが、制作会社であることから同じようなことができないかと考え、「TCPDF」と「FPDI」を組み合わせてPHPで実装した方法をメモ
契約ページにアクセスできる人を制限するため、受付番号付きのURLを作成して対象者にメールを送信。
弊社では専用の管理画面を用意してメールの送信(契約書の発行)を行っています。
契約ページで受付番号のチェックを行い、同時に使用期限(発行から10日程度を想定)に達している番号の削除処理も行う。
内容に問題がなければ入力フォームに進む。
if(!empty($_POST['submit'])){
foreach($_POST as $key => $value){
$dt[$key] = mb_convert_kana($value, "KVa","UTF-8");
}
//入力エラー処理省略
if(empty($err_msg['error'])){
//ライブラリ読み込み
include '../vendor/tcpdf/tcpdf.php';
include '../vendor/fpdi/autoload.php';
$tcpdf = new setasign\Fpdi\Tcpdf\Fpdi('P', 'mm', [210, 297], true, 'UTF-8', false);
// ヘッダーの出力無効
$tcpdf->setPrintHeader(false);
// フッターの出力無効
$tcpdf->setPrintFooter(false);
//契約書ファイル(PDF)の読み込み
$pathToPdf = '../pdf/○○.pdf';
//契約書のページ数をカウント
$pageCount = $tcpdf->setSourceFile($pathToPdf);
for($pageNo = 1; $pageNo <= $pageCount; $pageNo++){
$templateId = $tcpdf->importPage($pageNo);
$size = $tcpdf->getTemplateSize($templateId);
$tcpdf->AddPage($size['orientation'], [$size['width'], $size['height']]);
$tcpdf->useTemplate($templateId);
if($pageNo === 2) {
$tcpdf->SetFont("kozgopromedium", "", 12); // デフォルトで用意されている日本語フォント
//記載位置を調整し、入力内容を追記
$tcpdf->Text(18, 223, '甲)'.htmlspecialchars($dt['address'], ENT_QUOTES, 'UTF-8'));
$tcpdf->Text(18, 230, htmlspecialchars($dt['company'], ENT_QUOTES, 'UTF-8'));
$tcpdf->Text(18, 237, htmlspecialchars($dt['name'], ENT_QUOTES, 'UTF-8'));
}
}
// 保存する
$tcpdf->Output(__DIR__.'/../pdf/sign_'.$dt["id"].'.pdf', 'F');
//保存したPDFファイルをメールに添付して送信処理省略
//使用済み受付番号の削除処理省略
//作成したPDFの削除処理省略
$dt = array();
header("location: ○○○○"); //完了画面へ遷移
exit;
}
}
まずは「TCPDF」と「FPDI」をそれぞれのサイトからダウンロードし、サーバーにアップロード。
今回は契約書の2ページ目に追記をしたいので、使用する契約書のページ数を数え、2ページ目に記載処理を実装。
記載の完了したPDFは一時的にサーバー内に保存してからメール添付で送信を行っています。
尚、使用するPDFに関して複数ページでバージョンが1.5以上の場合は動かなくなるため、バージョンを1.4以下に下げる必要があります。

2022.02.5
PHPを使用して画像(動画・PDF等)をアップロードするフォームを作成した際に、ファイル…

2020.10.3
テキストエリア等で入力した文字の中にURLを含んでいた場合に、自動で認識してリンクタグを…

2024.03.30
外部ファイル(CSVファイル等)を読み込んでサイト内に表示する際に、保存時の文字コードが…

2020.12.5
メールフォームからメールを送信する際に、画像(ファイル)を添付できるようにしてほしいとの…

2023.12.2
ワードプレスの投稿のカテゴリー機能を、目的ごとに使い分けたいというご要望があった際に、カ…

2020.08.1
動画ファイルをCMS化して保存するときに、多くの場合はファイルパスをデータベース(MyS…

2022.09.24
パソコンやスマートフォンの戻るボタンを使って画面を戻す(ブラウザバックする)時があります…

2022.02.19
画像データ等をサーバーにアップロードする際、一点づつアップロードしても良いけれど、ファイ…

2019.12.29
メールフォーム等での入力値チェック(バリデーション)。PHPの「preg_match」(…

2020.08.15
フォームの入力値やURLのパラメータ等、文字列や数値を受け取る際に正規表現を利用してバリ…