首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >是否在新文档中复制项目符号列表编号?

是否在新文档中复制项目符号列表编号?
EN

Stack Overflow用户
提问于 2015-09-23 19:01:40
回答 1查看 949关注 0票数 5

我有一个节点导入器,它是这样的

代码语言:javascript
复制
Dim nodeImporter As New Aspose.Words.NodeImporter(_wordDocument, documentComponentDocument,
 Aspose.Words.ImportFormatMode.UseDestinationStyles)

我使用它将子节点从一个文档复制到另一个文档。我的子节点是一个项目符号列表。

代码语言:javascript
复制
documentComponentSection.Body.AppendChild(nodeImporter.ImportNode(childNode, True))

但我的问题是,子节点的一些属性,如ListLabel,即项目符号列表编号,没有被复制

根据你的回答,我试着跟上了。但当我为每个节点创建新文档时,它不起作用。

代码语言:javascript
复制
Aspose.Words.Document srcDoc = new Aspose.Words.Document(Mydir + "input.docx");

            Aspose.Words.Document dstDoc = new Aspose.Words.Document();
            var ctr = 0;
            int listid = 0;
            Aspose.Words.Lists.List dstList = null;
            foreach (Aspose.Words.Paragraph paragraph in srcDoc.GetChildNodes(Aspose.Words.NodeType.Paragraph, true))
            {
                Aspose.Words.NodeImporter imp = new Aspose.Words.NodeImporter(srcDoc, dstDoc, Aspose.Words.ImportFormatMode.KeepSourceFormatting);
                Aspose.Words.Node impNode = imp.ImportNode(paragraph, true);
                if (((Aspose.Words.Paragraph)impNode).IsListItem)
                {
                    ((Aspose.Words.Paragraph)impNode).ListFormat.ListLevel.StartAt = paragraph.ListFormat.List.ListId;
                    if (listid != paragraph.ListFormat.List.ListId)
                    {
                        listid = paragraph.ListFormat.List.ListId;
                        dstList = dstDoc.Lists.AddCopy(paragraph.ListFormat.List);
                    }


                    ((Aspose.Words.Paragraph)impNode).ListFormat.List = dstList;
                }
                dstDoc.FirstSection.Body.RemoveAllChildren();
                dstDoc.FirstSection.Body.AppendChild(impNode);
                var index = ctr++;
                dstDoc.Save(MyDir + index.ToString() + ".docx");
            }

每个输出文档包含的列表索引为1。

EN

回答 1

Stack Overflow用户

发布于 2015-09-24 00:53:27

下面的代码示例将列表项从源文档导入到新的空文档中,并保留列表标签(编号)值。

代码语言:javascript
复制
Aspose.Words.Document srcDoc = new Aspose.Words.Document(MyDir  + "input.docx");
DocumentBuilder builder = new DocumentBuilder(srcDoc);
srcDoc.UpdateListLabels();

Aspose.Words.Document dstDoc = new Aspose.Words.Document();
int ctr = 0;
Aspose.Words.NodeImporter imp = new Aspose.Words.NodeImporter(srcDoc, dstDoc, Aspose.Words.ImportFormatMode.KeepSourceFormatting);

foreach (Aspose.Words.Paragraph paragraph in srcDoc.GetChildNodes(Aspose.Words.NodeType.Paragraph, true))
{
    if (paragraph.IsListItem)
    {
        ListLabel label = paragraph.ListLabel;
        builder.MoveTo(paragraph);
        builder.StartBookmark("bookmark_" + label.LabelValue);
        builder.EndBookmark("bookmark_" + label.LabelValue);

        Aspose.Words.Node impNode = imp.ImportNode(paragraph, true);

        dstDoc.FirstSection.Body.RemoveAllChildren();
        dstDoc.FirstSection.Body.AppendChild(impNode);

        foreach (Bookmark bookmark in ((Aspose.Words.Paragraph)impNode).Range.Bookmarks)
        {
            if (!bookmark.Name.StartsWith("bookmark_"))
                continue;

            String listLabel = bookmark.Name.Replace("bookmark_", "");

            try
            {
                ((Aspose.Words.Paragraph)impNode).ListFormat.ListLevel.StartAt = Convert.ToInt32(listLabel);
                break;
            }
            catch (Exception ex)
            {
            }
        }

        ctr++;
        dstDoc.Range.Bookmarks.Clear();
        dstDoc.Save(MyDir + ctr.ToString() + ".docx");
    }
}

如果问题仍然存在,请在Aspose.Words forum中报告问题,并提供输入和预期输出文档。

我与Aspose一起工作,作为开发人员的布道者。

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

https://stackoverflow.com/questions/32737818

复制
相关文章

相似问题

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