首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >iText使用XMLWorker将整个表保存在一个页面中

iText使用XMLWorker将整个表保存在一个页面中
EN

Stack Overflow用户
提问于 2013-09-24 10:15:47
回答 1查看 2.4K关注 0票数 2

基本上,我想做的是达到这个问题的目的:

iText avoid to cut tables on page jump

但是,目前我正在生成一个XMLWorker,并使用XMLWorker( iTextSharp版本)来解析该文档以生成我的内容。如何设置由KeepRowsTogether方法生成的表对象的XmlWorker.Parse标志?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-09-24 10:53:47

好吧,想清楚了。基本上,我从TagProcessor派生了一个iTextSharp.tool.xml.html.table.Table,并重写了End方法,以便检查标记是否有keeprowstogether属性,如果有,则迭代基类的输出并调用PdfPTable对象的KeepRowsTogether方法:

代码语言:javascript
复制
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using iTextSharp.tool.xml.html;
using iTextSharp.tool.xml.html.table;
using iTextSharp.text.pdf;

namespace MySolution
{
    public class TableHtmlTagProcessor : Table
    {
        public override IList<iTextSharp.text.IElement> End(iTextSharp.tool.xml.IWorkerContext ctx, iTextSharp.tool.xml.Tag tag, IList<iTextSharp.text.IElement> currentContent)
        {
            string keeprowstogetherattr = "keeprowstogether";
            var retval = base.End(ctx, tag, currentContent);
            if (tag.Attributes.ContainsKey(keeprowstogetherattr) && tag.Attributes[keeprowstogetherattr] == "true")
            {
                foreach (PdfPTable table in retval.OfType<PdfPTable>())
                {
                    table.KeepRowsTogether(0);
                }
            }
            return retval;
        }
    }
}

然后,在解析之前,我将此处理器添加到TagProcessorFactory,以便它处理表标记而不是默认实现:

代码语言:javascript
复制
HtmlPipelineContext htmlContext = new HtmlPipelineContext(null);
var tagProcessorFactory = Tags.GetHtmlTagProcessorFactory();
tagProcessorFactory.AddProcessor(new TableHtmlTagProcessor(), new[] { "table" });
htmlContext.SetTagFactory(tagProcessorFactory);

然后瞧!源XHTML中所有将keeprowstogether属性设置为"true“的表元素都不会跨页中断!

这是不是过火了?是否有更简单的方法来达到这一效果?

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18978801

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档