찾다

 >  Q&A  >  본문

FPDF 및 FPDI 워터마크는 X-Y 방향으로 비스듬히 반복됩니다.

<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>
P粉198814372P粉198814372481일 전481

모든 응답(1)나는 대답할 것이다

  • P粉731861241

    P粉7318612412023-08-07 17:57:25

    실제로 해결책을 찾았지만 꽤 보기 흉합니다 :

    으아악

    이 업데이트된 루프가 최적이 아니더라도 작업은 완료됩니다. 지금은 이 방식으로 계속 작업하고 필요에 맞게 조정하겠습니다.

    회신하다
    0
  • 취소회신하다