Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/90.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何使用iText';将多语言HTML字符串呈现为PDF;s HTMLWorker类_Java_Html_Pdf_Itext - Fatal编程技术网

Java 如何使用iText';将多语言HTML字符串呈现为PDF;s HTMLWorker类

Java 如何使用iText';将多语言HTML字符串呈现为PDF;s HTMLWorker类,java,html,pdf,itext,Java,Html,Pdf,Itext,我的HTML字符串有时包含中文单词,我的代码在中文单词处显示空白 这是我的HTML,看起来像这样 <html> <body> <div> <table border='1' align='center' cellpadding='1' cellspacing='0'> <tr> <td bgcolor= '#d1eb9d' align='left' width='60%'><font size='2'>&l

我的HTML字符串有时包含中文单词,我的代码在中文单词处显示空白

这是我的HTML,看起来像这样

<html>
<body>
<div>
<table  border='1'  align='center' cellpadding='1' cellspacing='0'>
<tr>
<td  bgcolor= '#d1eb9d' align='left' width='60%'><font size='2'><b>Answer choices</b></td>
<td  bgcolor= '#d1eb9d' align='center' width='20%'><font size='2'><b>Percentage</b></td>
<td  bgcolor= '#d1eb9d'  align='center' width='20%' ><font size='2'><b>Responses</b></div></td>
</tr>
</div>
</td>
<td  align='left' ><div>紅</div></td>
<td align='center' ><div >66.67%</div></td>
<td  align='center'><div >2</div></td><
/tr>
</div>
</td>
<td  align='left' ><div>黃</div></td>
<td align='center' ><div >66.67%</div></td>
<td  align='center'><div >2</div></td>
</tr>
</div>
</td>
<td  align='left' ><div>粉紅</div></td>
<td align='center' ><div >33.33%</div></td>
<td  align='center'><div >1</div></td>
</tr>
</div>
</td>
<td  align='left' ><div>藍</div></td>
<td align='center' ><div >33.33%</div></td>
<td  align='center'><div >1</div></td>
</tr>
</div>
</td>
<td  align='left' ><div>綠</div></td>
<td align='center' ><div >0.0%</div></td>
<td  align='center'><div >0</div></td>
</tr>
<tr>
<td  bgcolor= '#d1eb9d' ></td>
<td  bgcolor= '#d1eb9d' align='right' ><font size='2'><i><b>Total</b></i></td>
<td  bgcolor= '#d1eb9d' align='center' >3</td></tr>
</table>
</div>
</body>
</html>
String str="<html><head>"
            + "<meta http-equiv=\"content-type\" content=\"application/xhtml+xml; charset=UTF-8\"/>"
            + "</head>"
            + "<body>"
            + "<div>"
            + "<table  border='1'  align='center' cellpadding='5' cellspacing='0'>"
            + "<tr>"
            + "<td  style='background-color:#d1eb9d;'  align='left' width='40%'><font size='3'><b>Answer choices</b></font></td>"
            + "<td  style='background-color:#d1eb9d; ' align='center' width='20%'><font size='3'><b>Percentage</b></font></td>"
            + "<td  style='background-color:#d1eb9d; '  align='center' width='20%' ><font size='3'><b>Responses</b></font></td>"
            + "</tr>"
            + "<tr>"
            + "<td  style=\"font-family: arial unicode ms, ARIALUNI; font-size:16px; font-weight: normal;\" align='left' ><div>藍</div></td>"
            + "<td style='text-align:center;' ><div >66.67%</div></td>"
            + "<td  style='text-align:center;'><div >2</div></td></tr>"
            + "<tr>"
            + "<td  style=\"font-family: arial unicode ms, ARIALUNI; font-size:16px; font-weight: normal;\" align='left' ><div>粉紅</div></td>"
            + "<td style='text-align:center;' ><div >66.67%</div></td>"
            + "<td  style='text-align:center;' ><div >2</div></td>"
            + "</tr>"
            + "<tr>"
            + "<td  style=\"font-family: arial unicode ms, ARIALUNI; fkont-size:16px; font-weight: normal;\" align='left' ><div>apple</div></td>"
            + "<td style='text-align:center;' ><div >33.33%</div></td>"
            + "<td  style='text-align:center;'><div >1</div></td>"
            + "</tr>"
            + "<tr>"
            + "<td  style=\"font-family: arial unicode ms, ARIALUNI; font-size:16px; font-weight: normal;\" align='left' ><div>紅</div></td>"
            + "<td style='text-align:center;' ><div >33.33%</div></td>"
            + "<td  style='text-align:center;'><div >1</div></td>"
            + "</tr>"
            + "<tr>"
            + "<td  align='left' style=\"font-family: arial unicode ms, ARIALUNI; font-size:16px; font-weight: normal;\" ><div>綠</div></td>"
            + "<td style='text-align:center;' ><div >0.0%</div></td>"
            + "<td  style='text-align:center;'><div >0</div></td>"
            + "</tr>"
            + "<tr>"
            + "<td style='background-color:#d1eb9d;' ></td>"
            + "<td  style='background-color:#d1eb9d;' align='right' ><font size='3'><i><b>Total</b></i></font></td>"
            + "<td  style='background-color:#d1eb9d;' align='center' >3</td></tr>"
            + "</table>"
            + "</div>"
            + "</body>"
            + "</html>";
String  ttfFileName=System.getProperty("user.dir")+"/ARIALUNI.TTF";
 XMLWorkerFontProvider fontImp = new XMLWorkerFontProvider(XMLWorkerFontProvider.DONTLOOKFORFONTS);
         XMLWorkerHelper worker = XMLWorkerHelper.getInstance();
         fontImp.register(ttfFileName);
         FontFactory.setFontImp(fontImp);
         InputStream is = new ByteArrayInputStream(sb.toString().getBytes("UTF-8"));
         worker.parseXHtml(writer, document, is,null, Charset.forName("UTF-8"), fontImp);

请先帮我谢谢

谢谢布鲁诺洛瓦吉我终于找到了问题的解决办法。正如我在上面的问题中编辑的那样,在使用XMLWorkerHelper我的PDF后,仍然在中文单词处显示空白,这是因为我没有在HTML代码的样式标记中指定字体(我注册了XMLWorkerFontProvider对象)。现在HTML代码将如下所示

<html>
<body>
<div>
<table  border='1'  align='center' cellpadding='1' cellspacing='0'>
<tr>
<td  bgcolor= '#d1eb9d' align='left' width='60%'><font size='2'><b>Answer choices</b></td>
<td  bgcolor= '#d1eb9d' align='center' width='20%'><font size='2'><b>Percentage</b></td>
<td  bgcolor= '#d1eb9d'  align='center' width='20%' ><font size='2'><b>Responses</b></div></td>
</tr>
</div>
</td>
<td  align='left' ><div>紅</div></td>
<td align='center' ><div >66.67%</div></td>
<td  align='center'><div >2</div></td><
/tr>
</div>
</td>
<td  align='left' ><div>黃</div></td>
<td align='center' ><div >66.67%</div></td>
<td  align='center'><div >2</div></td>
</tr>
</div>
</td>
<td  align='left' ><div>粉紅</div></td>
<td align='center' ><div >33.33%</div></td>
<td  align='center'><div >1</div></td>
</tr>
</div>
</td>
<td  align='left' ><div>藍</div></td>
<td align='center' ><div >33.33%</div></td>
<td  align='center'><div >1</div></td>
</tr>
</div>
</td>
<td  align='left' ><div>綠</div></td>
<td align='center' ><div >0.0%</div></td>
<td  align='center'><div >0</div></td>
</tr>
<tr>
<td  bgcolor= '#d1eb9d' ></td>
<td  bgcolor= '#d1eb9d' align='right' ><font size='2'><i><b>Total</b></i></td>
<td  bgcolor= '#d1eb9d' align='center' >3</td></tr>
</table>
</div>
</body>
</html>
String str="<html><head>"
            + "<meta http-equiv=\"content-type\" content=\"application/xhtml+xml; charset=UTF-8\"/>"
            + "</head>"
            + "<body>"
            + "<div>"
            + "<table  border='1'  align='center' cellpadding='5' cellspacing='0'>"
            + "<tr>"
            + "<td  style='background-color:#d1eb9d;'  align='left' width='40%'><font size='3'><b>Answer choices</b></font></td>"
            + "<td  style='background-color:#d1eb9d; ' align='center' width='20%'><font size='3'><b>Percentage</b></font></td>"
            + "<td  style='background-color:#d1eb9d; '  align='center' width='20%' ><font size='3'><b>Responses</b></font></td>"
            + "</tr>"
            + "<tr>"
            + "<td  style=\"font-family: arial unicode ms, ARIALUNI; font-size:16px; font-weight: normal;\" align='left' ><div>藍</div></td>"
            + "<td style='text-align:center;' ><div >66.67%</div></td>"
            + "<td  style='text-align:center;'><div >2</div></td></tr>"
            + "<tr>"
            + "<td  style=\"font-family: arial unicode ms, ARIALUNI; font-size:16px; font-weight: normal;\" align='left' ><div>粉紅</div></td>"
            + "<td style='text-align:center;' ><div >66.67%</div></td>"
            + "<td  style='text-align:center;' ><div >2</div></td>"
            + "</tr>"
            + "<tr>"
            + "<td  style=\"font-family: arial unicode ms, ARIALUNI; fkont-size:16px; font-weight: normal;\" align='left' ><div>apple</div></td>"
            + "<td style='text-align:center;' ><div >33.33%</div></td>"
            + "<td  style='text-align:center;'><div >1</div></td>"
            + "</tr>"
            + "<tr>"
            + "<td  style=\"font-family: arial unicode ms, ARIALUNI; font-size:16px; font-weight: normal;\" align='left' ><div>紅</div></td>"
            + "<td style='text-align:center;' ><div >33.33%</div></td>"
            + "<td  style='text-align:center;'><div >1</div></td>"
            + "</tr>"
            + "<tr>"
            + "<td  align='left' style=\"font-family: arial unicode ms, ARIALUNI; font-size:16px; font-weight: normal;\" ><div>綠</div></td>"
            + "<td style='text-align:center;' ><div >0.0%</div></td>"
            + "<td  style='text-align:center;'><div >0</div></td>"
            + "</tr>"
            + "<tr>"
            + "<td style='background-color:#d1eb9d;' ></td>"
            + "<td  style='background-color:#d1eb9d;' align='right' ><font size='3'><i><b>Total</b></i></font></td>"
            + "<td  style='background-color:#d1eb9d;' align='center' >3</td></tr>"
            + "</table>"
            + "</div>"
            + "</body>"
            + "</html>";
String  ttfFileName=System.getProperty("user.dir")+"/ARIALUNI.TTF";
 XMLWorkerFontProvider fontImp = new XMLWorkerFontProvider(XMLWorkerFontProvider.DONTLOOKFORFONTS);
         XMLWorkerHelper worker = XMLWorkerHelper.getInstance();
         fontImp.register(ttfFileName);
         FontFactory.setFontImp(fontImp);
         InputStream is = new ByteArrayInputStream(sb.toString().getBytes("UTF-8"));
         worker.parseXHtml(writer, document, is,null, Charset.forName("UTF-8"), fontImp);
现在桌子看起来像这样


希望这篇文章能帮助别人,谢谢你

谢谢你布鲁诺洛瓦吉我终于找到了问题的解决办法。正如我在上面的问题中编辑的那样,在使用XMLWorkerHelper我的PDF后,仍然在中文单词处显示空白,这是因为我没有在HTML代码的样式标记中指定字体(我注册了XMLWorkerFontProvider对象)。现在HTML代码将如下所示

<html>
<body>
<div>
<table  border='1'  align='center' cellpadding='1' cellspacing='0'>
<tr>
<td  bgcolor= '#d1eb9d' align='left' width='60%'><font size='2'><b>Answer choices</b></td>
<td  bgcolor= '#d1eb9d' align='center' width='20%'><font size='2'><b>Percentage</b></td>
<td  bgcolor= '#d1eb9d'  align='center' width='20%' ><font size='2'><b>Responses</b></div></td>
</tr>
</div>
</td>
<td  align='left' ><div>紅</div></td>
<td align='center' ><div >66.67%</div></td>
<td  align='center'><div >2</div></td><
/tr>
</div>
</td>
<td  align='left' ><div>黃</div></td>
<td align='center' ><div >66.67%</div></td>
<td  align='center'><div >2</div></td>
</tr>
</div>
</td>
<td  align='left' ><div>粉紅</div></td>
<td align='center' ><div >33.33%</div></td>
<td  align='center'><div >1</div></td>
</tr>
</div>
</td>
<td  align='left' ><div>藍</div></td>
<td align='center' ><div >33.33%</div></td>
<td  align='center'><div >1</div></td>
</tr>
</div>
</td>
<td  align='left' ><div>綠</div></td>
<td align='center' ><div >0.0%</div></td>
<td  align='center'><div >0</div></td>
</tr>
<tr>
<td  bgcolor= '#d1eb9d' ></td>
<td  bgcolor= '#d1eb9d' align='right' ><font size='2'><i><b>Total</b></i></td>
<td  bgcolor= '#d1eb9d' align='center' >3</td></tr>
</table>
</div>
</body>
</html>
String str="<html><head>"
            + "<meta http-equiv=\"content-type\" content=\"application/xhtml+xml; charset=UTF-8\"/>"
            + "</head>"
            + "<body>"
            + "<div>"
            + "<table  border='1'  align='center' cellpadding='5' cellspacing='0'>"
            + "<tr>"
            + "<td  style='background-color:#d1eb9d;'  align='left' width='40%'><font size='3'><b>Answer choices</b></font></td>"
            + "<td  style='background-color:#d1eb9d; ' align='center' width='20%'><font size='3'><b>Percentage</b></font></td>"
            + "<td  style='background-color:#d1eb9d; '  align='center' width='20%' ><font size='3'><b>Responses</b></font></td>"
            + "</tr>"
            + "<tr>"
            + "<td  style=\"font-family: arial unicode ms, ARIALUNI; font-size:16px; font-weight: normal;\" align='left' ><div>藍</div></td>"
            + "<td style='text-align:center;' ><div >66.67%</div></td>"
            + "<td  style='text-align:center;'><div >2</div></td></tr>"
            + "<tr>"
            + "<td  style=\"font-family: arial unicode ms, ARIALUNI; font-size:16px; font-weight: normal;\" align='left' ><div>粉紅</div></td>"
            + "<td style='text-align:center;' ><div >66.67%</div></td>"
            + "<td  style='text-align:center;' ><div >2</div></td>"
            + "</tr>"
            + "<tr>"
            + "<td  style=\"font-family: arial unicode ms, ARIALUNI; fkont-size:16px; font-weight: normal;\" align='left' ><div>apple</div></td>"
            + "<td style='text-align:center;' ><div >33.33%</div></td>"
            + "<td  style='text-align:center;'><div >1</div></td>"
            + "</tr>"
            + "<tr>"
            + "<td  style=\"font-family: arial unicode ms, ARIALUNI; font-size:16px; font-weight: normal;\" align='left' ><div>紅</div></td>"
            + "<td style='text-align:center;' ><div >33.33%</div></td>"
            + "<td  style='text-align:center;'><div >1</div></td>"
            + "</tr>"
            + "<tr>"
            + "<td  align='left' style=\"font-family: arial unicode ms, ARIALUNI; font-size:16px; font-weight: normal;\" ><div>綠</div></td>"
            + "<td style='text-align:center;' ><div >0.0%</div></td>"
            + "<td  style='text-align:center;'><div >0</div></td>"
            + "</tr>"
            + "<tr>"
            + "<td style='background-color:#d1eb9d;' ></td>"
            + "<td  style='background-color:#d1eb9d;' align='right' ><font size='3'><i><b>Total</b></i></font></td>"
            + "<td  style='background-color:#d1eb9d;' align='center' >3</td></tr>"
            + "</table>"
            + "</div>"
            + "</body>"
            + "</html>";
String  ttfFileName=System.getProperty("user.dir")+"/ARIALUNI.TTF";
 XMLWorkerFontProvider fontImp = new XMLWorkerFontProvider(XMLWorkerFontProvider.DONTLOOKFORFONTS);
         XMLWorkerHelper worker = XMLWorkerHelper.getInstance();
         fontImp.register(ttfFileName);
         FontFactory.setFontImp(fontImp);
         InputStream is = new ByteArrayInputStream(sb.toString().getBytes("UTF-8"));
         worker.parseXHtml(writer, document, is,null, Charset.forName("UTF-8"), fontImp);
现在桌子看起来像这样


希望这篇文章能帮助别人,谢谢你

您正在使用
HTMLWorker
:放弃所有希望或开始使用
HTMLWorker
多年前就被XML Worker取代了@BrunoLowagie使用HTMLWorker不可能吗?如果没有,请您建议我如何使用XML Worker?您单击了吗?它给你提供了大量的问答示例,比如看看网站上标记的页面。具体的亚洲示例有,和。可以找到用于这些示例的资源。@BrunoLowagie抱歉,可能我的问题很琐碎,但我通过了ParseHtml2.java。我的问题是我的中文单词不是Unicode字符,这就是为什么ParseHtml2.java中的代码可能不起作用。我已经用代码更新了我的问题,请帮助我。您正在使用
HTMLWorker
:放弃所有希望或开始使用
HTMLWorker
多年前就被XML Worker取代了@BrunoLowagie使用HTMLWorker不可能吗?如果没有,请您建议我如何使用XML Worker?您单击了吗?它给你提供了大量的问答示例,比如看看网站上标记的页面。具体的亚洲示例有,和。可以找到用于这些示例的资源。@BrunoLowagie抱歉,可能是我的问题很琐碎,但我通过了ParseHtml2.java。我的问题是我的中文单词不是Unicode字符,这就是为什么ParseHtml2.java中的代码可能不起作用。我已经用代码更新了我的问题,请帮助我。