我正在尝试为我的用户提供密码保护他们通过 PDFLib 创建的 PDF 的选项。我已阅读有关 PLOP 的文档,并在手册的附录A中看到以下段落(位于此处):
基于内存的组合 基于内存的方法速度更快,但需要更多内存。除非您处理非常大的文档,否则建议将其用于 Web 应用程序中的动态 PDF 生成和签名。不要使用 PDFlib 在磁盘上生成 PDF 文件,而是通过向 提供一个空文件名来使用核心 PDF 生成,使用
PDF_begin_document( )
获取包含生成的 PDF 数据的缓冲区的内容PDF_get_buffer( )
,然后使用 .创建一个虚拟文件PLOP_create_pvf( )
。然后可以将用于虚拟文件的文件名传递给 PLOP/PLOP DS,PLOP_open_document( )
而无需在磁盘上创建物理文件。请注意,由于必须在单个缓冲区中将完整文档提供给 PLOP/PLOP DS,因此无法在多个部分中获取 PDFlib 缓冲区内容。因此,您必须致电PDF_get_buffer( )
PDF_end_document( )
和之间PDF_delete( )
。包含在所有 PLOP 包中的 hellosign 编程示例演示了如何使用 PDFlib 动态创建 PDF 文档并将其传递到内存中的 PLOP 以应用数字签名。
到目前为止,我已经编写了以下方法,在 之前调用PDF_end_document()
,如手册所示:
function encrypt_pdf($pdf_buffer, $password) {
$optlist = '';
$filename = "temp";
create_pvf($filename, $pdf_buffer, $optlist);
$optlist = "masterpassword=$password";
open_document($filename, $optlist);
$doc = create_file($filename, $optlist);
}
我不知道如何从这里开始。我发现没有任何文档可以远程覆盖我正在尝试做的事情(尽管我认为这是 PLOP API 的常见用法)。
如何完成此方法,并密码保护我的输出 PDF?