Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/276.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
C# iTextSharp.HTMLWorker错误转换html加密UTF-8_C#_Asp.net_Encryption_Itextsharp - Fatal编程技术网

C# iTextSharp.HTMLWorker错误转换html加密UTF-8

C# iTextSharp.HTMLWorker错误转换html加密UTF-8,c#,asp.net,encryption,itextsharp,C#,Asp.net,Encryption,Itextsharp,我想道歉,我的英语不是很好。我希望你能帮助我。我从xslt trans中得到了这个字符串: "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<html>\r\n <head />\r\n <body style=\"font-family: Verdana, sans-serif;\">\r\n ĚŠČŘŽŘÝŽÝÁÁÍÉŮ ěščřžýáíéůú\r\n </body>\

我想道歉,我的英语不是很好。我希望你能帮助我。我从xslt trans中得到了这个字符串:

"<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<html>\r\n  <head />\r\n  <body style=\"font-family: Verdana, sans-serif;\">\r\n  ĚŠČŘŽŘÝŽÝÁÁÍÉŮ ěščřžýáíéůú\r\n       </body>\r\n</html>"
我得到的是这样的:
这是错误的。。。我的结果没有像
Ě,Ě,Ř,Ů,…
这样的字符,这些是捷克语字符


我尝试像这样使用XMLParser:

private static byte[] CreatePdfUsingXslt(string htmlText, string serverPath)
    {
        var msInput = new MemoryStream(Encoding.UTF8.GetBytes(htmlText));
        var msOutput = new MemoryStream();

        msInput.Position = 0;
        msOutput.Position = 0;

        var doc = new Document(PageSize.A4, 30, 30, 30, 30);
        PdfWriter pdfWriter = PdfWriter.GetInstance(doc, msOutput);

        var htmlPipelineContext = new HtmlPipelineContext();
        var cssResolver = XMLWorkerHelper.GetInstance().GetDefaultCssResolver(true);

        var cssPath = String.Format("{0}XsltTemplates\\print.css", serverPath);

        cssResolver.AddCssFile(cssPath,true);

        var pipeline = new CssResolverPipeline(cssResolver,
                                               new HtmlPipeline(htmlPipelineContext, new PdfWriterPipeline(doc, pdfWriter)));
        var xmlWorker = new XMLWorker(pipeline, true);
        var xmlParser = new XMLParser(true, xmlWorker);

        xmlParser.Parse(new StreamReader(msInput, Encoding.UTF8));
        xmlParser.Flush();

        doc.Close();
        return msOutput.ToArray();
    }
但是函数
xmlParser.Parse(新的StreamReader(msInput,Encoding.UTF8))抛出NullReferenceException


这对我来说更重要。有人知道我该如何修复它吗?

它似乎在解释cp1252编码中的输入。我对iText不太了解,不知道如何覆盖它(或者即使这是错误的)。iText邮件列表可能是问这个问题的更好地方。虽然您不想调用
msOutput.GetBuffer()
,但您需要
.ToArray()
。HTMLWorker被弃用,取而代之的是XML Worker。我们不久前已经放弃了对HTMLWorker的支持。如果您切换到XML工作人员,并且遇到类似的问题,我们将修复它,但请将HTMLWork视为“死亡”。
private static byte[] CreatePdfUsingXslt(string htmlText, string serverPath)
    {
        var msInput = new MemoryStream(Encoding.UTF8.GetBytes(htmlText));
        var msOutput = new MemoryStream();

        msInput.Position = 0;
        msOutput.Position = 0;

        var doc = new Document(PageSize.A4, 30, 30, 30, 30);
        PdfWriter pdfWriter = PdfWriter.GetInstance(doc, msOutput);

        var htmlPipelineContext = new HtmlPipelineContext();
        var cssResolver = XMLWorkerHelper.GetInstance().GetDefaultCssResolver(true);

        var cssPath = String.Format("{0}XsltTemplates\\print.css", serverPath);

        cssResolver.AddCssFile(cssPath,true);

        var pipeline = new CssResolverPipeline(cssResolver,
                                               new HtmlPipeline(htmlPipelineContext, new PdfWriterPipeline(doc, pdfWriter)));
        var xmlWorker = new XMLWorker(pipeline, true);
        var xmlParser = new XMLParser(true, xmlWorker);

        xmlParser.Parse(new StreamReader(msInput, Encoding.UTF8));
        xmlParser.Flush();

        doc.Close();
        return msOutput.ToArray();
    }