TCPDF - 为文件添加注释会导致重复的附件

时间:2015-07-03 09:09:45

标签: php laravel pdf laravel-4 tcpdf

我们在网站上使用TCPDF生成PDF,我们在使用它来附加文件时遇到了一些困难。我们在PDF中添加空白注释,然后链接到下载(也可以作为PDF附件视图的一部分查看)

我们的问题是,当我们添加附件时,它还会添加一个带有附件链接的注释,因此实质上我们会获得双重附件,其中一些链接是直接链接以下载附件和一些链接到不可见的注释。如果我们尝试删除注释,那么我们只显示一个下载链接,但有时某些链接将不会下载文件,这似乎是完全随机且无意义的。

有没有人遇到类似的TCPDF问题,我们发现源代码非常难以解密,因为整个功能都包含在25,000行文件中。

编辑以添加代码示例

Route::get('/pdf', function() {


    $pdf = new TCPDF(PDF_PAGE_ORIENTATION, PDF_UNIT, PDF_PAGE_FORMAT, true, 'UTF-8', false);

    $file_path       = storage_path() . '/exports/pdf';

    if (!File::exists($file_path)) {
        File::makeDirectory($file_path, 0775, true);
    }

    $file = "http://www.joomlaworks.net/images/demos/galleries/abstract/7.jpg";

    $pdf->Annotation(0, 0, 0, 0, 'attachment', array('Subtype' => 'FileAttachment',  'FS' => $file));

    $file_no = rand(0, 500);

    $file_name = "test{$file_no}.pdf";
    $file_location =  "{$file_path}/{$file_name}";

    $output_type = "F";

    $pdf->Output($file_location, $output_type);

});

示例输出:http://www.filedropper.com/test96 *请下载并在Acrobat中打开以查看附件

1 个答案:

答案 0 :(得分:1)

我现在知道这很古老,但这是我研究类似问题时在Google上发现的第一批结果之一。因此,我希望这会对遇到类似问题的其他人有所帮助。

基于附件注释被放置在左上角且没有大小的事实,我认为这里的目的根本不是添加注释,而是附加文件,然后在附件的“附件”部分中查看它。读者。

我们遇到了一个类似的问题,即假设(对PDF规范了解得不多,并且看到的是相同的库文档)假定附件总是作为注释添加。但是事实并非如此。当添加附件 作为注释时,acrobat Reader似乎会为附件注释渲染一行,并且也是一条通用附件行。当您实际上不想要注释时,可以通过将其作为附件添加来解决。

虽然tcpdf仅允许将附件添加为注释,但是我们在此处添加了pull请求,以允许添加无注释的附件:https://github.com/tecnickcom/TCPDF/pull/236