HTML2PDF不支持日语(UTF8)的转换。

3

我正在使用HTML2PDF生成PHP报告。

它在英语中运行良好,但对于日语没有正确的输出。

如何在HTML2PDF库中设置utg8字符。

是否有一种方法可以在HTML2PDF库中实现这一点。我得到的输出是“???????????????”而不是日语文本。

在/var/www/html/html2pdf/locale文件夹中,我找到了以下文件:en.csv、fr.cvs、cs.csv、da.csv。

我们可以为日语获得这样的文件吗?

以下是我的代码

<?php

$content = ob_get_clean();

// convert to PDF
require_once('Classes/library/html2pdf.class.php');
try {
    $html2pdf = new HTML2PDF('P', 'A4', 'en');
    $html2pdf->pdf->SetDisplayMode('fullpage');
//      $html2pdf->pdf->SetProtection(array('print'), 'spipu');
    $html2pdf->writeHTML($content, isset($_GET['vuehtml']));
    $filename = $filename .'_'.date('Ymd');
    $html2pdf->Output($filename.'.pdf','D');//,'D'
}
catch(HTML2PDF_exception $e) {
    echo $e;
    exit;
}

你的数据库和表格排序规则是什么? - user1844933
1
我能在我的网页上看到同样的报告,但当我下载为PDF格式时出现问题。 - user3165155
这只是一个HTML页面,没有数据库。 - user3165155
我曾经遇到过tcpdf的同样问题,你可以参考solution1solution2 - Roopendra
我已经更新了问题并附上了 .csv 文件,请查看,这样我们就可以找到解决方案了。 - user3165155
5个回答

5

尝试使用特定字体而不是默认字体,可以尝试以下方法:

<?php
    $html2pdf = new HTML2PDF('P', 'A4', 'en', true, 'UTF-8');
    $html2pdf->setDefaultFont('arialunicid0'); //add this line
    $html2pdf->pdf->SetDisplayMode('fullpage');
    $html2pdf->writeHTML($content, false);
    $html2pdf->Output('japan.pdf');
?>

参考资料:http://community.impresscms.org/modules/newbb/viewtopic.php?post_id=43474#forumpost43474

这是一个关于IT技术的参考链接。

我添加了这行代码,但问题仍然存在。 - user3165155
请看一下文件“_tcpdf_5.0.002/fonts/arialunicid0.php”是否存在?还请尝试使用没有字体样式的简单 HTML(HTML/CSS)。 - Allen Chak
1
现在它可以工作了,所有的内容都是用日语编写的。但是如果我将日语文本作为文件名传递,它会给出空白名称。 - user3165155
我认为你需要使用urlencode('the_japanese_name.pdf')或rawurlencode('the_japanese_name.pdf')。 - Allen Chak
我使用了 $html2pdf->Output(urlencode('注意.pdf'),'D'); 但是它下载的文件名为 E6B3A8E6848F.pdf,而不是应该的 注意.pdf。我错过了什么吗?我尝试使用 urlencode 和 rawurlencode,但结果相同。 - user3165155

1
$html2pdf = new HTML2PDF('P', 'A4', 'en', true, 'UTF-8', []);
$html2pdf->setDefaultFont('cid0jp'); //using this line
$html2pdf->writeHTML($html);
$html2pdf->pdf->SetTitle('PDFダウンロード');
$html2pdf->output('download.pdf');

我正在使用这段代码,它正常工作!

1

对于波兰符号,这行代码可以帮助:

$html2pdf->setDefaultFont('arialunicid0'); //add this line

在Word中查看时,Helvetica显示为方块。更改字体后问题消失了。

1

我用这个函数解决了这个问题:

$tpl_data = array_map('utf8_decode',$datas);


(注意:保留原文中的html标签)

0

将编码设置为UTF-8

 $html2pdf = new HTML2PDF('P', 'A4', 'en', true, 'UTF-8');

我按照您的要求更新了代码,但是输出结果仍然和之前一样,显示的是问号而不是日文文字。 - user3165155
请在顶部运行 $content = utf8_encode($your_insert_content) - user1607528
我尝试了,它给我输出的是"インターフット使用状æ",这不是日语字符。 - user3165155
你自己尝试过上述解决方案了吗?它们对你有效吗? - user3165155
不,我还没有尝试过。也许可以联系一下它的创作者。 - user1607528

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接