从HTML :: Template转换为PDF:FromHtml表示无效的XML

时间:2016-12-22 05:06:10

标签: html xml perl pdf

我使用HTML :: Template创建一个HTML文件。生成的代码是有效的XML / HTML(针对xml验证器进行检查)。但是在使用PDF :: FromHTML转换为pdf时,消息是" xml文件中的无效令牌"找到了。

尝试将第一个声明行从doctype更改为xml或supressing,但没有任何作用。 XML :: Simple,PDF:API2,XML :: Writer是最新版本。

我知道发生了什么事?

# create template object and store to verify
   shout('s',"create template from $str_filepath") if ($bool_DEBUG);
    $str_mytemplate =  HTML::Template->new(filename => $str_filepath, case_sensitive => 0, no_includes => 1  ); 
    $str_mytemplate->param(\%strct_toreplace);
    $str_filepath =  envDir('temp').newID().'.html'; 
    shout('',"template created, storing to : $str_filepath") if ($bool_DEBUG);
    if (open(FILE, '>', $str_filepath)) {
        print FILE $str_mytemplate->output;
        close (FILE);
        }
# generate pdf from created file
    shout('p',"Creating PDF ") if ($bool_DEBUG);
    $pdf_this = PDF::FromHTML->new( encoding => 'utf-8' ); 
    $pdf_this->load_file($str_filepath); 
    $pdf_this->convert( LineHeight => 10, Landscape => 1, PageSize => 'Letter', );    
    shout('p',"Display PDF") if ($bool_DEBUG);  
    print header(-type=>'application/pdf', -charset=>'UTF-8'); 
    print $pdf_this->write_file();

部分:创建PDF 软件错误: 在第19行第13行,在/usr/local/lib64/perl5/XML/Parser.pm第187行的第430行,格式不正确(无效令牌)。  在/home/grupo/perl/usr/share/perl5/PDF/FromHTML.pm第141行。

1 个答案:

答案 0 :(得分:1)

总结:发现问题(我猜);)

请考虑以下几行:

<td>
    Some line of data
    <br/>
    A second line of data
</td>

当试图通过PDF :: FromHTML阅读时,它会在第5行发送格式错误的令牌消息,特别是斜杠&#39; /&#39;来自</td>标签;但是,这不是问题,问题是由<br/>内的<td></td>标记创建的。

如果更改为<br><br />,则不会发现错误。我不知道使用<br>是否是xml兼容性的良好HTML实践,甚至定义为w3c br semantic