【问题标题】:iTextSharp XmlWorker: right-to-leftiTextSharp XmlWorker:从右到左
【发布时间】:2012-05-17 15:43:36
【问题描述】:

在这个不太友好的 API 上苦苦挣扎了很长时间后,我终于取得了进展,但现在我遇到了一个非常讨厌的问题。我在我的 html 中的各个位置放置了“dir”属性值为“rtl”.. 但 XMLWorker 似乎根本不尊重这一点。有谁知道解决方法?这是我的方法:

public static void Generate<TModel>(string templateFile, TModel model, string outputFile, IEnumerable<string> fonts)
        {
            string template = System.IO.File.ReadAllText(templateFile);
            string result = Razor.Parse(template, model);

            using (var fsOut = new FileStream(outputFile, FileMode.Create, FileAccess.Write))
            using (var stringReader = new StringReader(result))
            {
                var document = new Document();
                var pdfWriter = PdfWriter.GetInstance(document, fsOut);
                pdfWriter.InitialLeading = 12.5f;
                document.Open();

                var xmlWorkerHelper = XMLWorkerHelper.GetInstance();

                var cssResolver = new StyleAttrCSSResolver();
                //cssResolver.AddCss(cssFile);

                var xmlWorkerFontProvider = new XMLWorkerFontProvider();

                foreach (string font in fonts)
                {
                    xmlWorkerFontProvider.Register(font);
                }

                var cssAppliers = new CssAppliersImpl(xmlWorkerFontProvider);
                var htmlContext = new HtmlPipelineContext(cssAppliers);
                htmlContext.SetTagFactory(Tags.GetHtmlTagProcessorFactory());

                PdfWriterPipeline pdfWriterPipeline = new PdfWriterPipeline(document, pdfWriter);
                HtmlPipeline htmlPipeline = new HtmlPipeline(htmlContext, pdfWriterPipeline);
                CssResolverPipeline cssResolverPipeline = new CssResolverPipeline(cssResolver, htmlPipeline);
                XMLWorker xmlWorker = new XMLWorker(cssResolverPipeline, true);
                XMLParser xmlParser = new XMLParser(xmlWorker);
                xmlParser.Parse(stringReader);

                document.Close();
            }
        }

【问题讨论】:

  • 查看此页面,该页面在XMLWorker 中有支持的 HTML 标记和属性列表。你会看到dir 不在那里,如果我猜的话,你也不会在不久的将来看到它。 demo.itextsupport.com/xmlworker/itextdoc/…

标签: pdf itextsharp itext right-to-left html-to-pdf


【解决方案1】:

我创建了一个示例来展示如何使用 XMLWorker 解析和显示 RTL 数据。 Download it from here.

【讨论】:

  • 嘿@VahidN 我非常需要将 html 转换为 pdf,但我不能:-(,我使用了你的类,但我发现只有 table 和 span 标签可以转换,我改变了你的示例 html 变量,正如我所说,它无法转换 div 或其他标签,你能帮帮我吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-18
  • 2022-01-13
  • 2014-08-16
  • 1970-01-01
相关资源
最近更新 更多