gutti3k / pdf-watermarker
Simple PDF Watermarker 的分支,支持 Laravel
v1.0.10
2022-04-13 16:08 UTC
Requires
- php: >=7.1.0
- illuminate/support: >=7.0
- setasign/fpdf: ^1.8
- setasign/fpdi: ^2.3
README
PDFWatermarker 允许您将文本或图像作为水印添加到现有的 PDF 文件中。它使用 FPDF 允许您写入 PDF 文件,并使用 FPDI 允许您将现有的 PDF 文档导入到 FPDF。
使用它,您可以
- 使用文本和 TTF 字体创建水印
- 使用 96 DPI 分辨率的 jpg 和 png(带 alpha 通道)图像作为水印
- 轻松地将水印放置在 PDF 文件的页面中
安装
使用 composer 安装
composer require gutti3k/pdf-watermarker
用法
在纯 PHP 中,您可以这样使用图像为 PDF 添加水印
<?php use FilippoToso\PdfWatermarker\Support\Pdf; use FilippoToso\PdfWatermarker\Support\ImageWatermark; use FilippoToso\PdfWatermarker\PdfWatermarker; // Specify path to the existing pdf $pdf = new Pdf('input.pdf'); // Specify path to image. The image must have a 96 DPI resolution. $watermark = new Watermark('watermark.png'); // Create a new watermarker $watermarker = new PDFWatermarker($pdf, $watermark); // Save the new PDF to its specified location $watermarker->save('output.pdf');
选项
您还可以指定其他选项
use FilippoToso\PdfWatermarker\Support\Position; // Set the position of the watermark including optional X/Y offsets $position = new Position(Position::BOTTOM_CENTER, -50, -10); // All possible positions can be found in Position::options $watermarker->setPosition($position); // Place watermark behind original PDF content. Default behavior places it over the content. $watermarker->setAsBackground(); // Only Watermark specific range of pages // This would only watermark page 3 and 4 $watermarker->setPageRange(3, 4);
输出方法
您可以通过以下方式获取带有水印的 PDF
// The filename is optional for all output options $watermarker->save(); // Start a download of the PDF $watermarker->download('output.pdf'); // Send the PDF to standard out $watermarker->output('output.pdf');
Laravel 支持
在 Laravel 中,您可以使用两个外观:ImageWatermarker 和 TextWatermarker
use FilippoToso\PdfWatermarker\Facades\ImageWatermarker; use FilippoToso\PdfWatermarker\Support\Position ImageWatermarker::input('input.pdf') ->watermark('watermark.png') ->output('laravel-image.pdf') ->position(Position::BOTTOM_CENTER, -50, -10) ->asBackground() ->pageRange(3, 4) ->resolution(300) // 300 dpi ->save();
use FilippoToso\PdfWatermarker\Facades\TextWatermarker; use FilippoToso\PdfWatermarker\Support\Position TextWatermarker::input('input.pdf') ->output('laravel-text.pdf') ->position(Position::BOTTOM_CENTER, -50, -10) ->asBackground() ->pageRange(3, 4) ->text('Hello World') ->angle(25) ->font('arial.ttf') ->size('25') ->color('#CC00007F') ->resolution(300) // 300 dpi ->save();
您还可以生成有效的响应以流式传输或下载文件
use FilippoToso\PdfWatermarker\Facades\ImageWatermarker; // Within a controller action return ImageWatermarker::input('input.pdf') ->watermark('watermark.png') ->download('example.pdf');
use FilippoToso\PdfWatermarker\Facades\ImageWatermarker; // Within a controller action return ImageWatermarker::input('input.pdf') ->watermark('watermark.png') ->stream('example.pdf');
致谢
此包基于以下存储库
- https://github.com/drinksandco/pdf-watermarker
- https://github.com/jeroenvdgulik/pdf-watermarker
- https://github.com/binarystash/pdf-watermarker
我决定重构和增强它,因为这些包已经多年没有更新了。