0

我有一个巧妙的计划,它使用嵌入在 EXTJS4 中的 TinyMCE 编辑器来生成 HTML 输出,然后我可以从中生成 PDF,而且我几乎已经完成了整个工作。我遇到的一件事是字体。TinyMCE 可以毫无问题地处理它们,但我无法让它们与 wkhtmltopdf 一起工作。当我使用任何字体(甚至是粗体文本按钮)时,我的 ajax 请求会中止并使浏览器崩溃。我必须重新启动浏览器才能继续前进。如果我只使用默认字体,则可以正确生成 pdf。

我已经尝试将用户样式表放在每个可以想象的地方以使其拾取,但无济于事。

对我做错的任何帮助将不胜感激。我在带有 xampp 的 Windows 7 上使用 wkhtmltopdf 0.11.0_rc1。

POST VARS Sent to PHP via AJAX
cgroup  54
htmlx   <p><span style="font-family: trebuchet ms,geneva;">this is a test in TREBUCHET MS</span></p><p>THIS IS NORMAL TEXT ag</p>
messagetype post
send_date   18 Jun 2012
send_time   3:25 PM
subject 
task    test  


PHP Script

$outfile = './tmp/'.$timestamp.'.pdf';
$wkhtmloptions = "--header-spacing 5 --footer-spacing 2 --margin-top 15 --user-style-sheet file:///".$_SERVER['DOCUMENT_ROOT']."/arx/wkhtmltopdf.css";

$pdf = new wkhtmltopdf(array( 
    'title'         => 'Title',
      'html'          => $htmlx,
      'tmppath'       => 'tmp', 
      'binpath'       => $_SERVER['DOCUMENT_ROOT'].'/arx/bin/wkhtmltopdf/', 
      'options'       => $wkhtmloptions,
    ));

    $pdf->output('F', $outfile); //save the file to $outfile 
    $msg = "Test PDF generated";
    $success =true; 

    echo "{success: $success, msg: '$msg', title: 'Test Message', type: '$type', data: '$outfile'}";


wkhtmltopdf.css located in htdocs/arx/
@font-face {
    font-family: 'trebuchet MS';
    src: url('resources/fonts/trebuc.ttf') format('truetype');
}
@font-face {
    font-family: 'trebuchet MS';
    src: url('./resources/fonts/trebucit.ttf') format('truetype');
    font-style: italic;
}
@font-face {
    font-family: 'trebuchet MS';
    src: url('./resources/fonts/trebucbd.ttf') format('truetype');
    font-weight: bold;
}
@font-face {
    font-family: 'trebuchet MS';
    src: url('./resources/fonts/trebucbi.ttf') format('truetype');
    font-weight: bold;
    font-style: italic;
}
4

1 回答 1

0

您控制 HTML,因此您可以简单地编辑传入的 HTML 而根本不使用--user-style-sheet。像这样的输入 html 对你有用吗?

 <html><head>
   <!-- if you really need it -->
   <link href="http://server/arx/wkhtmltopdf.css" rel="stylesheet" type="text/css" />
 </head><body>
   <p><span style="font-family: comic sans ms;">TREBUCHET MS</span></p>
   <p>THIS IS NORMAL TEXT ag</p>
 </body></html>

这也可能是由于许多问题,但更多细节会有所帮助。

  • 你看到 wkhtmltopdf 进程开始了吗?
  • 您是否尝试过在没有 CSS 定义的情况下直接使用字体?
  • 你需要CSS吗?
  • 您是否看到正在生成一个输出文件?
  • 如果直接从命令行执行它是否有效?当您以编程方式使用 wkhtmltopdf 时,直接运行可能会给您丢失的输出。
于 2012-08-10T12:36:03.053 回答