indzz / pdfprotect
为现有 PDF 文件添加密码保护的库
1.0.0
2020-04-24 11:08 UTC
Requires
- php: ^7.1
Requires (Dev)
- setasign/fpdi: ^2.0
- symfony/http-foundation: *
- tecnickcom/tcpdf: 6.3.*
Suggests
- setasign/fpdi: Required if you use fpdi driver
- tecnickcom/tcpdf: Required if you use fpdi driver
This package is auto-updated.
Last update: 2024-09-24 20:46:22 UTC
README
这是一个 PHP 包装库,用于为现有 PDF 文件添加密码加密。
驱动程序 1 - FPDI
第一个解决方案只需要 PHP。
它使用 FPDI 导入源 PDF 的所有页面,并将每个页面添加到新文件中。然后,它以二进制形式输出文件作为响应。
优点
- 仅 PHP,无需额外库
缺点
- 由于免费 PDF 解析器的限制,不支持 PDF 版本 1.5 或以上
请在使用此驱动程序之前将以下包添加到 composer.json 中
{ "require": { "setasign/fpdi": "^2.0", "tecnickcom/tcpdf": "6.3.*" } }
驱动程序 2 - QPDF
第二个解决方案使用 QPDF,这是一个命令行程序。该解决方案简单地调用 shell_exec
来执行 QPDF 并添加密码。
优点
- 简单
- 支持 PDF 版本 1.5
缺点
- 需要在系统上安装额外库
对于 macOS,您可以使用 Homebrew 安装 QPDF
brew install qpdf
对于 Ubuntu,您可以使用 apt 安装
apt-get install -y qpdf
如果您使用其他 Linux 发行版,请参阅相应的包仓库。
示例
最简单的用法是
<?php use INDZZ\PdfProtector\PdfProtector; PdfProtector::create('fpdi') ->source(__DIR__.'/input/1.pdf') ->protect('userPw', 'ownerPw') ->output();
更多详细信息请参阅 example
文件夹
- 直接输出到网页浏览器 - 1-output.pdf
- 保存到服务器上的路径 - 2-save.pdf
- 返回一个 Symfony HTTP Foundation 响应对象 - 3-response.pdf
许可
此库在 MIT 许可证 下开源。
请参阅以下库的许可证