簡體   English   中英

在作為電子郵件附件發送之前驗證PDF

[英]Validating a PDF before sending as e-mail attachment

我正在使用FDPF為客戶生成發票,然后將其附加到電子郵件中並發送給客戶。 發票/電子郵件批量生成(一次生成數百個)。 在該批次的第一個真實世界中,極少數(約200個中的5個)客戶收到了損壞的PDF。 它們之間的共同聯系是它們的發票比平均發票大,這使我相信生成發票所需的時間導致了競爭狀況,也許在PDF有時間完成生成之前就已經發送了電子郵件完全。 在發送電子郵件之前,有沒有辦法驗證PDF是否未損壞? 還是有其他方法可以解決我所忽略的問題?

請注意,Acrobat Reader的最新版本對於讀取不完全符合正確pdf格式的文件比較費事。

pdf文檔的開頭由字符串%PDF表示。 較舊的Acrobat版本將忽略%PDF標記之前的文件內容。 例如,您可能在文件中留下了一些調試輸出,如下所示:

debug line 1
debug line 2
%PDF-1.4
3 0 obj
<</Type /Page
etc.

然后Acrobat會確定的(如OSX上的Preview一樣)。

Acrobat將不再接受。

我被那個咬了,所以希望這對你有幫助!

您可以通過在首次發送文件時創建一個md5哈希值,然后在發送電子郵件時再次創建md5哈希,最后在發送電子郵件之后創建md5哈希值,來測試pdf是否已完全生成。 如果md5每次都更改,則在發送電子郵件時pdf生成器仍在創建文件。

這是有關如何使用md5哈希的示例:

<?php

$file_name = 'md5_demonstration_file';


    $file_changer = 0;

    while($file_changer < 10)
    {
     file_put_contents($file_name, $file_changer);
     echo md5_file ($file_name) . '</br>';
     $file_changer++;
    }

    ?>

您會注意到,在函數的每次迭代中md5哈希都會更改,因為仍在寫入文件。 如果嘗試使用此示例代碼,則可能必須手動設置“ md5_demonstration_file”的權限,以便任何人都可以對其進行寫入。

如果競賽條件不是問題,那么您是否閱讀了以下SO建議線程: 由FPDF和PHP生成的PDF電子郵件附件已損壞

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM