【发布时间】: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