iText XMLParser - problém s češtinou   zodpovězená otázka

C#, ASP.NET WebForms, .NET

Dobrý den,

Chtěl bych Vás požádat o radu. Používám knihovnu iText ke generování PDF souborů z html kódu. Kód je vytvořen v ovládacím prvku CKEditor a poslán do funkce. Vše funguje až na češtinu -> č,ř,ň atd. Neřešil už někdo Vás prosím tento problém? Děkuji

Funkce na export:

 public static void Export(string html, string fileName, string linkCss)
        {
            ////reset response
            HttpContext.Current.Response.Clear();
            HttpContext.Current.Response.ContentType = "application/pdf";

            ////define pdf filename
            HttpContext.Current.Response.AddHeader("content-disposition", "attachment; filename=" + fileName);


            //Generate PDF
            using (var document = new Document(PageSize.A4, 40, 40, 40, 40))
            {
                html = FormatImageLinks(html);

                //define output control HTML
                var memStream = new MemoryStream();
                TextReader xmlString = new StringReader(html);

                PdfWriter writer = PdfWriter.GetInstance(document, memStream);

                //open doc
                document.Open();

                // register all fonts in current computer
                FontFactory.RegisterDirectories();

                // Set factories
                var htmlContext = new HtmlPipelineContext(null);
                htmlContext.SetTagFactory(Tags.GetHtmlTagProcessorFactory());

                // Set css
                ICSSResolver cssResolver = XMLWorkerHelper.GetInstance().GetDefaultCssResolver(false);
                cssResolver.AddCssFile(HttpContext.Current.Server.MapPath(linkCss), true);

                // Export
                IPipeline pipeline = new CssResolverPipeline(cssResolver,
                                                             new HtmlPipeline(htmlContext,
                                                                              new PdfWriterPipeline(document, writer)));
                var worker = new XMLWorker(pipeline, true);
                var xmlParse = new XMLParser(true, worker, Encoding.UTF8);
                xmlParse.Parse(xmlString);
                xmlParse.Flush();

                document.Close();
                document.Dispose();

                HttpContext.Current.Response.BinaryWrite(memStream.ToArray());
            }

            HttpContext.Current.Response.End();
            HttpContext.Current.Response.Flush();
        }
nahlásit spamnahlásit spam 0 odpovědětodpovědět

Zkuste, jestli nepomůže přenastavit font s určením kódové stránky 1250.

Nevím přesně kde pro dokument font nastavit, ale font v iText získáte například takto:

BaseFont helvetica = BaseFont.CreateFont(BaseFont.HELVETICA, BaseFont.CP1250, BaseFont.EMBEDDED);
Font font = new Font(helvetica, 12, iTextSharp.text.Font.NORMAL);
nahlásit spamnahlásit spam 0 odpovědětodpovědět

Dobrý den,

děkuji za odpověď. Už se mi to podařilo vyřešit. Nastaveni fontů a kódování v .NET kódu na pozadí u mne nevykazovalo žádné změny. Až když jsem dodržel formát a fonty napsal jako inline styly html elementů (style="font-family: 'Times New Roman';") - ř a č začlo v pohodě fungovat.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Díky moc za řešení, tohle jediné pomohlo i u mne.

RP

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Díky moc za řešení, tohle jediné pomohlo i u mne.

RP

nahlásit spamnahlásit spam 0 odpovědětodpovědět
                       
Nadpis:
Antispam: Komu se občas házejí perly?
Příspěvek bude publikován pod identitou   anonym.
  • Administrátoři si vyhrazují právo komentáře upravovat či mazat bez udání důvodu.
    Mazány budou zejména komentáře obsahující vulgarity nebo porušující pravidla publikování.
  • Pokud nejste zaregistrováni, Vaše IP adresa bude zveřejněna. Pokud s tímto nesouhlasíte, příspěvek neodesílejte.

přihlásit pomocí externího účtu

přihlásit pomocí jména a hesla

Uživatel:
Heslo:

zapomenuté heslo

 

založit nový uživatelský účet

zaregistrujte se

 
zavřít

Nahlásit spam

Opravdu chcete tento příspěvek nahlásit pro porušování pravidel fóra?

Nahlásit Zrušit

Chyba

zavřít

feedback