从iTextSharp 5.5.4.0升级到5.5.5.0后,从HTML到PDF的渲染表cels不正确。 细胞通向高处。
我没有更改代码中的任何内容,我唯一做的就是升级我的DLL。
我的代码是否不正确,或者这是新版iTextSharp中的错误。
我的输入文件:
我的输出:
在我的代码下面。
/// <summary>
/// Create a pdf based on a
/// </summary>
/// <param name="xHTMLContent"></param>
/// <param name="cssContent"></param>
/// <param name="outputStream"></param>
public static void CreateReportFromXHTML(string xHTMLContent, string cssContent, Rectangle pageSize, Stream outputStream)
{
using (Document document = new Document(pageSize, 0f, 0f, 0f, 0f))
{
PdfWriter writer = PdfWriter.GetInstance(document, outputStream);
document.Open();
try
{
// CSS
var cssResolver = XMLWorkerHelper.GetInstance().GetDefaultCssResolver(false);
cssResolver.AddCss(cssContent, true);
// HTML
XMLWorkerFontProvider fontProvider = new XMLWorkerFontProvider(XMLWorkerFontProvider.DONTLOOKFORFONTS);
fontProvider.Register(System.Web.HttpContext.Current.Server.MapPath("~/Verdana.ttf"));
fontProvider.Register(System.Web.HttpContext.Current.Server.MapPath("~/Verdana-Bold.ttf"));
CssAppliers cssAppliers = new CssAppliersImpl(fontProvider);
HtmlPipelineContext htmlContext = new HtmlPipelineContext(cssAppliers);
htmlContext.SetTagFactory(Tags.GetHtmlTagProcessorFactory());
// Pipelines
PdfWriterPipeline pdf = new PdfWriterPipeline(document, writer);
HtmlPipeline html = new HtmlPipeline(htmlContext, pdf);
CssResolverPipeline css = new CssResolverPipeline(cssResolver, html);
// XML Worker
XMLWorker worker = new XMLWorker(css, true);
XMLParser p = new XMLParser(worker);
byte[] baContent = System.Text.Encoding.ASCII.GetBytes(xHTMLContent);
using (MemoryStream msContent = new MemoryStream(baContent))
{
p.Parse(msContent);
}
}
catch (Exception ex)
{
throw ex;
}
}
}
答案 0 :(得分:2)
问题似乎与你的CSS有关:
td .group
{
width: 140px;
font-weight: bold;
}
字面意思是“具有td
class
group
td
标记的”任何孩子应该具有此规则“。但是,您直接在td.group
{
width: 140px;
font-weight: bold;
}
标记上使用该类,因此您应该省略标记和类选择器之间的空格。在我的测试中进行简单的更改会使您的表格显示为您想要的。
{{1}}