FPDF 및 FPDI 워터마크는 X-Y 방향으로 비스듬히 반복됩니다.
P粉198814372
2023-08-06 20:11:40
<p>setasign/FPDF 및 setasign/FPDI 라이브러리를 사용하여 PDF 문서에 워터마크와 사용자 정의 바닥글 오버레이를 추가해야 합니다(각 페이지에는 워터마크가 표시되어야 함). 원본 PDF 파일은 서버에 저장되며 파일이 요청될 때 프로세스가 발생해야 합니다(요청 날짜와 시간이 포함되어 있으므로). <br /><br />다음 코드 덕분에 요청한 날짜와 시간을 포함한 필수 바닥글을 성공적으로 추가했습니다. 코드는 또한 페이지 전체에 걸쳐 대각선으로 워터마크가 한 번 발생하도록 인쇄하지만 저는 다른 동작, 즉 이 이미지에 표시된 것처럼 문자열을 대각선으로 반복하는 것을 원합니다(예: 내 문자열이 동적으로 생성됩니다). 문자열이 여러 줄에서 반복되는 한 페이지 "외부"에서 시작하거나 끝나는지 여부는 중요하지 않으며 해당 줄은 등거리 간격으로 배치되어야 합니다. <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($각도);
$s = 죄($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->텍스트($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->페이지 추가();
$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->출력();</pre>
<p><em>여기의 워터마크 코드: https://phppot.com/php/php-watermark-pdf/ 및 적용됨.<br /><br />테스트용 기본 작곡가.json 파일: <br /></em></p><p><br />< /p> ;
<pre class="brush:php;toolbar:false;">{
"필요하다": {
"setasign/fpdf": "1.8.*",
"setasign/fpdi": "^2.3"
}
}</pre>
<p>감사합니다</p>
실제로 해결책을 찾았지만 꽤 보기 흉합니다 :
으아악이 업데이트된 루프가 최적이 아니더라도 작업은 완료됩니다. 지금은 이 방식으로 계속 작업하고 필요에 맞게 조정하겠습니다.