2012-07-18 71 views
1

我尝试解析html文件并生成pdf。我使用代码ITextSharp:用西里尔文/国际词语解析html

document.Open(); 
HtmlPipelineContext htmlContext = new HtmlPipelineContext(null); 
htmlContext.SetTagFactory(Tags.GetHtmlTagProcessorFactory()); 
ICSSResolver cssResolver = XMLWorkerHelper.GetInstance().GetDefaultCssResolver(true); 
IPipeline pipeline = 
    new CssResolverPipeline(cssResolver, 
     new HtmlPipeline(htmlContext, 
       new PdfWriterPipeline(document, writer))); 


XMLWorker worker = new XMLWorker(pipeline, true); 
XMLParser p = new XMLParser(true, worker, Encoding.Unicode); 

p.Parse((TextReader)File.OpenText(@"Template.html")); 
document.Close(); 

如何定义基本字体,如果我想使用西里尔字母/国际字?

+0

看看这篇文章的帮助http://stackoverflow.com/questions/10329863/display-unicode-characters-in-converting-html-to-pdf – 2012-07-20 13:45:24

回答

4

你应该注册字体

string arialuniTff = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Fonts), "ARIALUNI.TTF"); 
FontFactory.Register(arialuniTff); 

和修饰的页面的身体

<body face='Arial' encoding='koi8-r' > 
... 
</body > 

对于别人,谁就能在俄语阅读,这article能有用

1

我提出以下变种

//connect the font 
      String FONT_LOCATION = Server.MapPath("~/fonts/arial.ttf"); 
      BaseFont baseFont = BaseFont.CreateFont(FONT_LOCATION, BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED); 
      iTextSharp.text.Font font = new iTextSharp.text.Font(baseFont, iTextSharp.text.Font.DEFAULTSIZE, iTextSharp.text.Font.NORMAL); 
      //connected 

PdfPCell cell1 = new PdfPCell(new Phrase(lblN, font)) { HorizontalAlignment = 1, VerticalAlignment= 1 }; 
+0

谢谢尤里。但我想使用XMLWorker&XMLParser。 – PlushEngineCell 2012-08-30 06:01:18