0
我有一個頭腦問題的問題。有沒有辦法使用php動態地將xdf文件附加到現有的pdf文件中? 我已經生成了pdf,我需要在生成pdf後立即將它附加到pdf文件中。 你能幫忙嗎?將xdf文件附加到pdf與PHP
我有一個頭腦問題的問題。有沒有辦法使用php動態地將xdf文件附加到現有的pdf文件中? 我已經生成了pdf,我需要在生成pdf後立即將它附加到pdf文件中。 你能幫忙嗎?將xdf文件附加到pdf與PHP
這對你來說可能已經太遲了,但這是我多年前爲CodeIgniter編寫的一個類。它可以根據您的需求進行調整。
<?php
class Fdf {
private $ci;
private $db;
private $testing = false; // are we testing?
private $fields = array();
private $pdf_file = '';
private $save_where = array('browser' => 'inline');
public function __construct($config = array()){
$this->ci =& get_instance();
$this->ci->load->database();
$this->db =& $this->ci->db;
if ($this->testing && $this->CI->config->item('log_threshold') < 2){
$this->ci->config->set_item('log_threshold', 2);
}
log_message('debug', 'Fdf class loaded');
}
/**
* This function generates a string in format FDF for use with the indicated pdf form $file.
* $info is an associative array holding the form fields in the key => value form
* $file is the URL of the pdf file that holds the form fields we want to populate
*
* @param mixed $info associative array of the fields
* @param mixed $file URL of the pdf file
*
* @author Alin Mazilu
*/
public function create_fdf_string($info, $file){
$data="%FDF-1.2\n%âãÏÓ\n1 0 obj\n<< \n/FDF << /Fields [ ";
foreach($info as $field => $val){
if(is_array($val)){
$data.='<</T('.$field.')/V[';
foreach($val as $opt)
$data.='('.trim($opt).')';
$data.=']>>';
}else{
$data.='<</T('.$field.')/V('.trim($val).')>>';
}
}
$data.="] \n/F (".$file.") /ID [ <".md5(microtime(true)).">\n] >>".
" \n>> \nendobj\ntrailer\n".
"<<\n/Root 1 0 R \n\n>>\n%%EOF\n";
log_message('debug', "FDF string is:\n" . $data);
return $data;
}
public function set_fields($data){
if (is_object($data)){
$this->fields = get_object_vars($data);
} elseif (is_array($data)){
$this->fields = $data;
} else {
return false;
}
return true;
}
public function set_pdf_file($file = ''){
if (empty($file)){
return false;
}
$this->pdf_file = $file;
return true;
}
public function set_output($where){
if (empty($where) || !is_array($where)){
return false;
}
$this->save_where = $where;
return true;
}
public function output($where = array('browser' => 'inline')){
$str = $this->create_fdf_string($this->fields, $this->pdf_file);
$len = strlen($str);
if (empty($where)){
$where = $this->save_where;
}
$file_name = explode('/', $this->pdf_file);
$file_name = end($file_name);
if (isset($where['browser'])){
header('Content-Type: application/vnd.fdf');
header('Cache-Control: public, must-revalidate, max-age=0'); // HTTP/1.1
header('Pragma: public');
header('Expires: Sat, 26 Jul 1997 05:00:00 GMT'); // Date in the past
header('Last-Modified: ' . gmdate('D, d M Y H:i:s') . ' GMT');
header('Content-Disposition: ' . $where['browser'] . '; filename="' . $file_name . '";');
header('Content-Length: ' . $len);
echo $str;
}
}
}
數據作爲關聯傳入,其關鍵字是字段名稱,值包含字段的數據。輸出方法用於將FDF文件快速轉儲到瀏覽器。希望這可以幫助那裏的人。
非常感謝您的答覆。我過去解決了這個問題。不記得相當不錯,但在一個晦澀的論壇上找到了解決方案。不管怎樣,謝謝你。真的很感謝這個努力! –