导入PDF并用Symfony签名

时间:2018-07-09 15:16:28

标签: symfony pdf tcpdf fpdi

我需要签署一个现有的pdf文件。

我正在使用Symfony 3.4.12和捆绑包https://packagist.org/packages/whiteoctober/tcpdf-bundle来签名pdf。

在服务中,我添加了这一部分:

AppBundle\Controller\AController:
    class: AppBundle\Controller\AController
    arguments: ['@white_october.tcpdf']

在控制器内部,我正在使用它;

use WhiteOctober\TCPDFBundle\Controller\TCPDFController;

使用此代码,我可以下载正确签名的创建的pdf:

private $tcpdf;

public function __construct(TCPDFController $tcpdf)
{
    $this->tcpdf = $tcpdf;
}

public function aAction ()
{
    $pdf = $this->tcpdf->create(
        'LANDSCAPE',
        PDF_UNIT,
        PDF_PAGE_FORMAT,
        true,
        'UTF-8',
        false
    );
    $pdf->SetAuthor('qweqwe');
    $pdf->SetTitle('Prueba TCPDF');
    $pdf->SetSubject('Your client');
    $pdf->SetKeywords('TCPDF, PDF, example, test, guide');
    $pdf->setFontSubsetting(true);

    // set additional information
    $info = array(
        'Name' => 'xxx',
        'Location' => 'xxx',
        'Reason' => 'xxx xxxx',
        'ContactInfo' => 'http://www.xxx.xx',
    );

    // set document signature
    $pdf->setSignature('file:///var/www/html/publicCert.pem', 'file:///var/www/html/privateKey_cert.pem', 'xxxx', '', 2, $info, 'A');

    $pdf->SetFont('helvetica', '', 11, '', true);
    $pdf->AddPage();

    $html = '<h1>Working on Symfony</h1>';

    $pdf->writeHTMLCell(
        $w = 0,
        $h = 0,
        $x = '',
        $y = '',
        $html,
        $border = 0,
        $ln = 1,
        $fill = 0,
        $reseth = true,
        $align = '',
        $autopadding = true
    );

    $pdf->Output("example.pdf", 'I');
}

我的目标是尝试对现有的pdf进行签名,所以我尝试使用FPDI导入它,但是我感到困惑,因为我知道我可以使用PDFI导入pdf,但是我不能对其进行签名,而使用TCPDF则相反,我无法导入pdf,但可以对已创建的pdf进行签名。而且显然我不能使用一个函数。

那么,我该如何解决此问题?任何想法?你能给我举个例子吗?

1 个答案:

答案 0 :(得分:0)

最后,我无法使用TCPDF捆绑包解决此问题,但是我发现抛出SetAsign的解决方案并不太昂贵,在此示例中,您可以看到可以选择要对其签名的pdf。我知道这要花钱,但是FPDI和这个库我可以看到pdfs的最新版本存在一些问题,而Setasign与FPDF插件相比是一个更稳定和维护的版本,将为您避免一些麻烦。

我找到的示例和解决方案在下一个链接中说明:

https://manuals.setasign.com/setapdf-signer-manual/the-main-class/#index-4-1