Potrzebuję wypełnić pola "text field" w formularzu pdf polskimi znakami i chcę aby mogły być dalej edytowalne. Używam do tego xfdf (chyba w fdf nie można ustawić kodowania?) i narzędzia pdftk (musi być darmowe). Skrypt wygląda tak
Funkcja tworząca XFDF
Kod
<?php
function createXFDF($file,$info,$enc='UTF-8'){
$data='<?xml version="1.0" encoding="'.$enc.'"?>'."\n".
'<xfdf xmlns="http://ns.adobe.com/xfdf/" xml:space="preserve">'."\n".
'<fields>'."\n";
foreach($info as $field => $val){
$data.='<field name="'.$field.'">'."\n";
if(is_array($val)){
$data.='<</T('.$field.')/V[';
foreach($val as $opt)
$data.='<value>'.$opt.'</value>'."\n";
}else{
$data.='<value>'.$val.'</value>'."\n";
}
$data.='</field>'."\n";
}
$data.='</fields>'."\n".
'<ids original="'.md5($file).'" modified="'.time().'" />'."\n".
'<f href="'.$file.'" />'."\n".
'</xfdf>'."\n";
return $data;
}
?>
function createXFDF($file,$info,$enc='UTF-8'){
$data='<?xml version="1.0" encoding="'.$enc.'"?>'."\n".
'<xfdf xmlns="http://ns.adobe.com/xfdf/" xml:space="preserve">'."\n".
'<fields>'."\n";
foreach($info as $field => $val){
$data.='<field name="'.$field.'">'."\n";
if(is_array($val)){
$data.='<</T('.$field.')/V[';
foreach($val as $opt)
$data.='<value>'.$opt.'</value>'."\n";
}else{
$data.='<value>'.$val.'</value>'."\n";
}
$data.='</field>'."\n";
}
$data.='</fields>'."\n".
'<ids original="'.md5($file).'" modified="'.time().'" />'."\n".
'<f href="'.$file.'" />'."\n".
'</xfdf>'."\n";
return $data;
}
?>
Skrypt
Kod
$dane['Text1']="Test ĄŚĆ 12321";
$aaa=createXFDF("Dokument-1.pdf",$dane);
$fdf_fn="test.xfdf";
$fp= fopen( $fdf_fn, 'w' );
if( $fp ) {
fwrite( $fp, $aaa );
fclose( $fp );
header('Content-type: application/pdf');
header('Content-disposition: attachment; filename='.time().'.pdf');
passthru('pdftk Dokument-1.pdf fill_form '.$fdf_fn.' output -');
// unlink($fdf_fn);
}
?>
$aaa=createXFDF("Dokument-1.pdf",$dane);
$fdf_fn="test.xfdf";
$fp= fopen( $fdf_fn, 'w' );
if( $fp ) {
fwrite( $fp, $aaa );
fclose( $fp );
header('Content-type: application/pdf');
header('Content-disposition: attachment; filename='.time().'.pdf');
passthru('pdftk Dokument-1.pdf fill_form '.$fdf_fn.' output -');
// unlink($fdf_fn);
}
?>
Plik z kodem ma kodowanie UTF-8... ale nie wyświetlają się polskie znaki, trzeba kliknąć pole żeby się pojawiły :-| Czy ktoś wie co zrobić żeby były widoczne bez problemu?
Dokument-1.pdf http://www.sendspace.com/file/dzzje5
PDF po przetworzeniu http://www.sendspace.com/file/lkhfhc