簡體   English   中英

使用PHP將FDF數據合並為PDF文件

[英]Merge FDF data into a PDF file using PHP

是否可以僅使用PHP將FDF數據與PDF文件合並? 或者沒有選擇,只能使用第三方命令行工具來實現這一目標?

如果是這樣的話有人能指出我的方向嗎?

我目前正在將FDF文件輸出到瀏覽器,希望它將用戶重定向到填寫的PDF,但對於某些人來說並非如此。 FDF內容正在輸出到屏幕,即使我使用標題('Content-type:application / vnd.fdf');

為了將來參考,看起來沒有第三方應用程序沒有可靠的方法。 Pdftk( http://www.accesspdf.com/pdftk/ )最終成為我的解決方案。

我首先像以前一樣生成FDF文件,然后使用以下PHP代碼將其合並到我的PDF文件中

header('Content-type: application/pdf');
header('Content-Disposition: attachment; filename="Download.pdf"');
passthru("pdftk file.pdf fill_form data.fdf output - ");
exit;

它比我想象的要容易得多。 這樣就可以立即消除對標題和文件擴展名的攻擊,以確保所有瀏覽器都能正確處理FDF,因為它只是讓瀏覽器下載PDF文件。

如果您希望PDF輸出文件不再可編輯,請使用

    passthru("pdftk file.pdf fill_form data.fdf output - flatten");

抱歉,如果這是基本的東西,只是想我把它放在一個地方,這樣人們就不會經歷我忍受的頭痛。

注意如果未設置PATH變量,則需要使用pdftk的完整路徑ie

    passthru("/usr/local/bin/pdftk file.pdf fill_form data.fdf output - flatten");

還有另一種方式,不使用passthru或pdftk,而只是在2004年制作但仍然運行良好的腳本: forge_fdf

它可以幫助你建立一個fdf,你可以在你的PDF文件中直言不諱,這意味着你

將其保存在php文件中,假設為generatePdf.php

require_once('forge_fdf.php');  

// leave this blank if we're associating the FDF w/ the PDF via URL
$pdf_form_url= "";


// default data; these two arrays must ultimately list all of the fields
// you desire to alter, even if you just want to set the 'hidden' flag;
//
//
$fdf_data_names= array(); // none of these in this example
$fdf_data_strings= array(); // none of these in this example

$fdf_data_strings['email']=mb_strtolower($row_delivreur['firstname']).'.'.mb_strtolower($row_delivreur['lastname']).'@gmail.com';

$fields_hidden= array();
$fields_readonly= array();

// set this to retry the previous state
$retry_b= false;

header( 'content-type: application/vnd.fdf' );

echo forge_fdf( $pdf_form_url,
        $fdf_data_strings, 
        $fdf_data_names,
        $fields_hidden,
        $fields_readonly );

鏈接到Pathtoyourpdf / nameofpdffile.pdf#FDF = generatePdf.php將在瀏覽器中打開您的PDF文件(或者有一種方法可以將其保存到磁盤,我想我記得),並且字段電子郵件將填充來自MYSQL的數據: mb_strtolower($row_delivreur['firstname']).'.'.mb_strtolower($row_delivreur['lastname']).'@gmail.com'

它適用於復選框,單選按鈕,...它在firefox中打開很好,它必須與其他瀏覽器一起測試。

有關PDF HACKS的更多信息

到目前為止,我發現在centos上安裝pdftk的最簡單方法:

安裝rpmforge repo - http://wiki.centos.org/AdditionalResources/Repositories/RPMForge#head-5aabf02717d5b6b12d47edbc5811404998926a1b

然后

yum install pdftk

這就是它!

http://www.setasign.de/products/pdf-php-solutions/fpdi/demos/concatenate-fake/

這樣工作,類下載也鏈接到網站,

它不需要passthru / exec命令,也不需要額外的擴展。

編輯說,這不適用於較新的pdf版本1.5+,恢復為PDFTK,繁瑣,但使用'exec'命令適用於所有pdf。

暫無
暫無

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

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