0
對於特定情況,我使用iText和XMLWorkerHelper來解決問題。我生成多頁PDF文件沒有問題,但有時會出現特殊字符錯誤。使用特殊字符失敗的iText將HTML轉換爲PDF
我測試了我的模板,這不是我的HTML的一個問題,即使異常說:
Exception thrown: 'iTextSharp.tool.xml.exceptions.RuntimeWorkerException' in itextsharp.xmlworker.dll
Additional information: Invalid nested tag tr found, expected closing tag td.
此錯誤是由於性格:&被添加到我的模板。
<td>Launch C&O</td>
我不完全知道如何解決這個錯誤,它是一個編碼錯誤?我應該在創建PDF時指定編碼模式嗎?
這是創建一個PDF的代碼:
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;
}
}
如果你有一個建議,我很高興地閱讀它! :)
更換'&'和''&,看看會發生什麼。 –
它沒有改變任何東西,感謝您的目的:) –
通過https://validator.w3.org/check上的W3C驗證程序運行您的HTML,並檢查*清理標記與HTML-Tidy *。與您的原始HTML比較。請使用頁面底部的清理過的HTML再次嘗試。您可以使用* JTidy *在自己的代碼中自動執行此操作。 –