首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >pdftk + xfdf + php不能处理umlauts

pdftk + xfdf + php不能处理umlauts
EN

Stack Overflow用户
提问于 2012-07-26 08:34:22
回答 3查看 4.8K关注 0票数 3

我使用XFDF文件来用PHP和pdftk填写PDF-forms服务器端,但我的问题是没有非英语字符(如:打印到表单字段。

下面是解析XFDF文件的函数:

代码语言:javascript
复制
function createFDF($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)){ 
        foreach($val as $opt) 
            $data.='<value>'.htmlentities($opt,ENT_COMPAT,$enc).'</value>'."\n"; 
    }else{ 
        $data.='<value>'.htmlentities($val,ENT_COMPAT,$enc).'</value>'."\n"; 
    } 
    $data.='</field>'."\n"; 
} 
$data.='</fields>'."\n". 
    '<ids original="'.md5($file).'" modified="'.time().'" />'."\n". 
    '<f href="'.$file.'" />'."\n". 
    '</xfdf>'."\n"; 
return $data; 

生成的XFDF文件如下所示:

代码语言:javascript
复制
<?xml version="1.0" encoding="UTF-8"?>
<xfdf xmlns="http://ns.adobe.com/xfdf/" xml:space="preserve">
<fields>
<field name="loadman-pudotuspainolaitteen-mittaustulosten-tallenne">
<value>1201</value>
</field>
<field name="tutkittavarakenne-rivi1">
<value>a</value>
</field>
<field name="tutkittavarakenne-rivi2">
<value></value>
</field>
<field name="tutk-pvm">
<value>11.12.2012</value>
</field>
<field name="mittauksen_suorittaja">
<value>o</value>
</field>
<field name="vast-tyonjohtaja">
<value>&ouml;</value>
</field>
<field name="rakennemateriaali">
<value>&auml;</value>
</field>
<field name="laatuvaatimukset">
<value>&aring;</value>
</field>
<field name="mittauspaikan_tiivistysmenetelma">
<value>&aacute;</value>
</field>
<field name="pohjalevy">
<value>&eacute;</value>
</field>
<field name="pohjamaa-alusrakenne">
<value>&iacute;</value>
</field>
<field name="mittauspaikan-tiivistysmenetelma">
<value>&egrave;</value>
</field>
<field name="emoduli">
<value>&ouml;</value>
</field>
<field name="tiiveys">
<value>&ouml;&auml;</value>
</field>
<field name="huomautukset_ja_loppupaatelmat1">
<value>&ouml;&auml;</value>
</field>
<field name="huomautukset_ja_loppupaatelmat2">
<value>&ouml;&auml;</value>
</field>
<field name="huomautukset_ja_loppupaatelmat3">
<value>&ouml;&auml;</value>
</field>
<field name="empa1">
<value>&ouml;</value>
</field>
<field name="empa1-e">
<value>&ouml;</value>
</field>
<field name="empa2">
<value>&ouml;</value>
</field>
<field name="empa2-e">
<value>&ouml;</value>
</field>
<field name="allekirjoitus">
<value>Einomies Porkkakoski</value>
</field>
</fields>
<ids original="84b0ff7a04b017303be186faa0d1254a" modified="1343290963" />
<f href="assets/loadman.pdf" />
</xfdf>

带有英文字母的字段打印得很完美,但是带有尖槽、坟墓或斯堪的纳维亚加载项的字母不会转移到PDF文件中。(除外)出于某种原因

代码语言:javascript
复制
<field name="huomautukset_ja_loppupaatelmat1">
<value>&ouml;&auml;</value>
</field>

完美的作品和版画!

我运行的命令是

代码语言:javascript
复制
pdftk <pdf-file> fill_form <xfdf-file> output <output file> flatten

这不会导致任何错误。

我使用Debian6.0,PHP5.3.3-7+挤压13,pdftk版本为1.44-5

UPDATE --我注意到,如果我不将生成的文件平平并打开它,那么当字段被激活时,字符会被正确地打印出来,但是当字段没有聚焦时,会再次隐藏字符。如果我手动在文件中键入任何内容,特殊字符也会出现。但是,保存和重新打开的文件不会显示文本,除非再次添加一些文本。

更新2把该死的东西修好了。最初,这些表格是用OSX雪豹上的Acrobat制作的。现在,我用LibreOffice +重新制作了表单,一切似乎都在工作!

EN

回答 3

Stack Overflow用户

发布于 2012-07-26 13:56:20

如果您使用以下列表,我认为您会有更多的运气:

  • &#196;表示(而不是&Auml;)
  • &#197; (而不是&Aring;)
  • &#214; for (而不是&Ouml;)
  • 用于&#220; (而不是&Uuml;)
  • 用于&#223; (而不是&szlig;)
  • &#228; for (而不是&auml;)
  • &#229; for (而不是&aring;)
  • &#246; for (而不是&ouml;)
  • &#252; forü(而不是&uuml;)

我会让你自己知道如何扩展这个列表,直到它达到完整为止:-)

票数 2
EN

Stack Overflow用户

发布于 2012-07-26 14:18:28

这是因为在PHP脚本中使用了htmlentities。,它将重音符号转换为&xxxx;

将XML编码设置为iso-8859-1WINDOWS-1252,并在htmlentities脚本中省略htmlentities

另一件要尝试的事情是使用utf8_encode而不是htmlentities (而不是修改XML编码)。

票数 2
EN

Stack Overflow用户

发布于 2014-01-22 23:20:00

为了支持任何UFT-8字符,我编写了PdfFormFillerUTF-8:http://sourceforge.net/projects/pdfformfiller2/

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11665394

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档