我使用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行。
答案 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。