当前位置: 首页 > 知识库问答 >
问题:

无法使用itextsharp将希伯来HTML文件解析为pdf

罗睿识
2023-03-14

我试图解析一个超文本标记语言字符串,其中包含希伯来文到pdf在MVC应用程序中使用iTEXT夏普和xmlwork5.5.13。我不能让希伯来语出现在页面上。我试图模仿这篇文章,但我做的任何事情似乎都没有帮助。我已将超文本标记语言简化为以下内容:

<!DOCTYPE html>
   <html dir="rtl">
   <head>
    <meta charset="utf-8" /> 
   </head>
   <body>
   <div dir="rtl" style="font-family: David"></div>
    <div class="container body-content">
     <div> שלום עולם  </div>
    <div>hello world</div>
    </div>   
   </body>
   </html>
       PdfWriter writer = PdfWriter.GetInstance(mydoc, mystream);
        writer.CloseStream = false;
        mydoc.Open();
        PdfReader reader;
        PdfContentByte cb = writer.DirectContent;
        PdfImportedPage Pdfim;
        string myxhtml;
        myxhtml = (function that generates HTML shown above);
        this.createpagefromxhtml(mydoc, writer, myxhtml, true);

        mydoc.Close();

        return mystream;
    }
    public bool createpagefromxhtml(Document mydoc, PdfWriter mywriter, string myxhtml, bool isnewpage)
    {
        StringReader sr = new System.IO.StringReader(myxhtml);
        try
        {
            using (mydoc)
            {
                if (isnewpage)
                { mydoc.NewPage();}

                FontFactory.RegisterDirectories();

                // Set factories
                ICSSResolver cssResolver = new StyleAttrCSSResolver();
                XMLWorkerFontProvider fontProvider = new XMLWorkerFontProvider(XMLWorkerFontProvider.DONTLOOKFORFONTS);
                fontProvider.Register("C:\\Windows\\Fonts\\David.ttf");
                CssAppliers cssAppliers = new CssAppliersImpl(fontProvider);

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

                // Set css
               cssResolver.AddCssFile(HttpContext.Current.Server.MapPath("~/Content/Site.css"), true);
                cssResolver.AddCssFile(HttpContext.Current.Server.MapPath("~/Content/bootstrap.min.css"), true);
                cssResolver.AddCssFile(HttpContext.Current.Server.MapPath("~/Content/bootstrap-rtl.min.css"), true);

                // Export
                IPipeline pipeline = new CssResolverPipeline(cssResolver, new HtmlPipeline(htmlContext, new PdfWriterPipeline(mydoc, mywriter)));
                var worker = new XMLWorker(pipeline, true);
                var xmlParse = new XMLParser(true, worker);
                xmlParse.Parse(sr);
                xmlParse.Flush();
                return true;
            }
        }
        catch (Exception ex)
        {  return false;}
    }

(流被保存到数据库中并以文件形式打开,尽管我尝试保存到磁盘并得到相同的结果。)

共有1个答案

曾明诚
2023-03-14

我终于让它工作了。我不得不把我的html包在一个div里

<div dir="rtl" style="font-family:  David"> .... text... </div>
 类似资料:
  • 问题内容: 我有一个小的Java方法,可将短消息插入到MySQL数据库中。该表的默认排序规则是utf8_unicode_ci,而Java代码是: 问题是,当lMessage是希伯来语时,结果是字符串“ ??????” 顺便说一句:我不知道它是否有帮助,但是还有一个PHP脚本有时会写入此数据库中的另一个相似表,并且可以正常工作。 问题答案: 在代码中设置UTF-8。看到这个;

  • 在 Dreamweaver 中将双向流量应用到阿拉伯语和希伯来语文本;使用标签编辑器、“表格”属性和 Div 属性。 在中东和北非版本的此软件中,可通过阿拉伯语和希伯来语使用新的功能和改进功能。 双向文字流 中东语言的文字大多从右向左 (RTL) 书写。但是,一般而言,最常用的形式为双向 (bidi) 文字 - 混用从左向右和从右向左书写的文字。bidi 文字的一个示例是含有阿拉伯语和英语文字的段

  • 到目前为止我没有问题。我可以解析html数据。我使用jsoup中的select方法,并使用“div.col-section”检索数据,这意味着我要查找类为col-section的div元素。我想用文本区打印数据。结果,我有一个巨大的一个段落,即使在网站上的真实数据是不止一个段落。那么如何像网站上一样解析数据呢?

  • 需要一些帮助我有一个pdf,我只需要阅读它并将其内容存储在数据库中。出于某种原因,我找不到使用Itext 7实现这一点的简单示例 另一件事,内容是希伯来语的,起初我用的是iTextSharp,但我得到的内容是相反的顺序,所以我有两个选择:1。修正反向代码2。也许可以在Itext7中找到一个更正常的代码,它没有这个问题。 ConvertToHebrew函数对我来说并不完美,所以我希望能找到一些不需要

  • 你好,我想写一个带有HEBREW文本的CSV。它写了一些符号,而不是希伯来文。下面是我的PHP代码。 我在互联网上查了一下,添加了“fputs($fp,$bom=(chr(0xEF).chr(0xBB).chr(0xBF))”,但没有成功。谁能帮帮我吗。 下面是我得到的结果。

  • 问题内容: 如果我们将Apache Web服务器设置为将Apache配置为将 所有 HTML 处理为PHP,是否存在安全性/性能方面的顾虑?我专门指的是: 我当时需要将一些PHP逻辑添加到一些HTML文件中;理想情况下,我不必将文件名更改为(保持的页面排名等)。 这与以下问题有关:httpd AddType指令 编辑: 从下面的现有答案/评论中,社区似乎建议使用重定向或仅针对特定的HTML文件。约