我在使用iText和XMLWorkerHelper处理特定情况时遇到了问题。我生成多个具有多个页面的PDF文件没有问题,但有时,特殊字符会出错。
我测试了我的模板,这对我的HTML来说不是问题,即使异常说:
<td>Launch C&O</td>
此错误是由于角色:&amp;这被添加到我的模板中。
public async Task Generate(Stream stream, List<string> contentPages)
{
try
{
int cpt = 1;
Document document = new Document();
PdfWriter writer = PdfWriter.GetInstance(document, stream);
writer.CloseStream = false;
document.Open();
foreach (string pdfContentPage in contentPages)
{
try
{
document.NewPage();
using (StringReader srHtml = new StringReader(pdfContentPage ))
{
XMLWorkerHelper.GetInstance().ParseXHtml(writer, document, srHtml);
}
++cpt;
}
catch (RuntimeWorkerException ex)
{
Console.Write($"An error occured at PDF generation for cpt = {cpt}");
Console.Write(ex.Message);
}
catch (Exception)
{
Console.WriteLine($"Content Error : pdfContentPage}");
throw;
}
}
document.Close();
}
catch (Exception)
{
throw;
}
}
我不知道如何解决此错误,是编码错误吗?我应该在创建PDF时指定编码模式吗?
这是创建PDF的代码:
MainActivity
如果您有建议,我很高兴看到它! :)
答案 0 :(得分:1)
在查询绑定字段中&amp;符号到来我使用替换函数进行所有描述&#39; s例如在绑定grid s(2)=" TEST & TEST"
for loop
dim desc as string
desc="TEST & TEST"
desc=desc.replace("&"," ")
s(2)= desc
end of loop
因此问题在我的案例中解决了
答案 1 :(得分:0)
尝试以下逻辑
InputStream is = new ByteArrayInputStream(srHtml.getBytes(Charset.forName("UTF-8")));
XMLWorkerHelper.GetInstance().ParseXHtml(writer, document, is, Charset.forName("UTF-8"));
使用xmlworker 5.5.12和itextpdf 5.5.12版本