FPDF および FPDI 透かしは、X-Y 方向の角度で繰り返されます。
P粉198814372
2023-08-06 20:11:40
<p>setasign/FPDF および setasign/FPDI ライブラリを使用して、PDF ドキュメントに透かしとカスタム フッター オーバーレイを追加する必要があります (各ページに透かしを入れる必要があります)。元の PDF ファイルはサーバーに保存されており、ファイルが要求されたときにプロセスが実行される必要があります (ファイルには要求の日時が含まれているため)。 <br /><br />次のコードのおかげで、要求された日付と時刻を含む必要なフッターを正常に追加できました。このコードでは、ページの斜め方向に透かしを 1 回だけ印刷しますが、実際には別の動作を実現したいと考えています。この画像に示すように、文字列を斜めに繰り返す (たとえば、文字列は動的に生成されます)。文字列が複数行で繰り返され、それらの行が等間隔に配置されている限り、文字列がページの「外側」で始まるか終わるかは関係ありません。 <br /><br />どこから始めればよいか手がかりはありますか? <br /><br />今日の時点で動作するコード: </p><p><br /></p>
<pre class="brush:php;toolbar:false;"><?php
setasignFpdiFpdi を使用します。
require_once('vendor/autoload.php');
クラス Watermarked_PDF は Fpdi を拡張します
{
関数フッター()
{
$this->SetY(-10);
$this->SetFont('Arial', false, 8);
$this->SetTextColor(28, 28, 28);
$this->Cell(0, 15, 'ファイル要求日: ' . date('r'), 0, 0, 'C');
}
}
関数 addWatermark($x, $y, $watermarkText, $angle, $pdf)
{
$angle = $angle * M_PI / 180;
$c = cos($angle);
$s = sin($angle);
$cx = $x * 1;
$cy = (300 - $y) * 1;
$pdf->_out(sprintf('q %.5F %.5F %.5F %.5F %.2F %.2F cm 1 0 0 1 %.2F %.2F cm', $c, $s, - $s、$c、$cx、$cy、-$cx、-$cy));
$pdf->Text($x, $y, $watermarkText);
$pdf->_out('Q');
}
$pdf = 新しい Watermarked_PDF();
$file_Path = 'ドキュメント/';
$file_Name = '13825_2023-07-04';
$pages_count = $pdf->setSourceFile($file_Path . $file_Name . '.pdf');
for ($i = 1; $i <= $pages_count; $i ) {
$pdf->AddPage();
$tplIdx = $pdf->importPage($i);
$pdf->useTemplate($tplIdx, 0, 0);
$pdf->SetFont('Arial', 'B', 15);
$pdf->SetTextColor(175, 175, 175);
$watermarkText = 'ファイル #' . $file_Name . ' - 会社のプロパティ';
addWatermark(120, 220, $watermarkText, 45, $pdf);
$pdf->SetXY(25, 25);
}
$pdf->Output();</pre>
<p><em>ここからのウォーターマーク コード: https://phppot.com/php/php-watermark-pdf/ を適応させました。<br /><br />テスト用の基本的なcomposer.jsonファイル: <br /></em></p><p><br />< /p> ;
<pre class="brush:php;toolbar:false;">{
"必要とする": {
"setasign/fpdf": "1.8.*",
"setasign/fpdi": "^2.3"
}
}</pre>
<p>ありがとうございます</p>
実際に解決策を見つけましたが、かなり見苦しいです:
リーリーこの更新されたループが最適ではない場合でも、ジョブは完了します。当面はこの方法で作業を続け、ニーズに合わせて調整していきます。