Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/62.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Gembox文档删除目录_C#_Gembox Document - Fatal编程技术网

C# Gembox文档删除目录

C# Gembox文档删除目录,c#,gembox-document,C#,Gembox Document,我使用Gembox文档替换docx文档中的一些文本,效果非常好。但是,我有一个目录字段,它在保存文档后消失。 我尝试执行以下操作,但字段仍然消失,只留下占位符文本: var toc = (TableOfEntries)document.GetChildElements(true, ElementType.TableOfEntries).First(); toc.Update(); document.GetPaginator(new PaginatorOptions() { UpdateField

我使用Gembox文档替换docx文档中的一些文本,效果非常好。但是,我有一个目录字段,它在保存文档后消失。 我尝试执行以下操作,但字段仍然消失,只留下占位符文本:

var toc = (TableOfEntries)document.GetChildElements(true, ElementType.TableOfEntries).First();
toc.Update();
document.GetPaginator(new PaginatorOptions() { UpdateFields = true });
更新(2021-01-15):

请使用页面或中的最新版本重试

最新版本将在使用带“;”的区域性的计算机上运行字符作为列表分隔符。
或者,您可以像这样指定该区域性:

var toc = (TableOfEntries)document.GetChildElements(true, ElementType.TableOfEntries).First();

CultureInfo.CurrentCulture = new CultureInfo("fr");
toc.Update();

document.GetPaginator(new PaginatorOptions() { UpdateFields = true });
此外,缺少制表位的问题现在也应该得到解决

原件:

当我试图从MS Word更新您的TOC时,我得到以下信息:

未找到目录项

在调查了TOC元素的字段代码之后,我发现了问题所在。
这是您拥有的说明文本:

{ TOC \h \z \t "TitreChapitre;1;SousTitreChapitre;2" }
这些分号字符分隔符(;)依赖于区域性。换句话说,更新这个TOC元素将在具有法语区域和设置的机器上工作,但在具有英语区域和设置的机器上不工作

我现在正在度假,所以对此我无能为力。我回来后会帮你解决这个问题

现在,您可以使用以下解决方法(我还注意到缺少
TabStop
的问题,此解决方法也将涵盖此问题):


我希望这对你有用。

你能分享你的DOCX文件吗,这样我就可以重现这个问题并进行调查了?这是我正在使用的测试文件,谢谢你的回答,效果很好。不过,唯一的缺点是目录字段不再可以手动更新,因此如果更改任何标题文本,我们将无法更新它。@yqit请检查更新后的答案。如果你还需要什么,请告诉我。
var toc = (TableOfEntries)document.GetChildElements(true, ElementType.TableOfEntries).First();            
var section = toc.Parent as Section;

var tocWidth = section.PageSetup.PageWidth - section.PageSetup.PageMargins.Left - section.PageSetup.PageMargins.Right;

var toc1Style = document.Styles["toc 1"] as ParagraphStyle;
var toc1TabStop = new TabStop(tocWidth - toc1Style.ParagraphFormat.RightIndentation, TabStopAlignment.Right, TabStopLeader.Dot);
toc1Style.ParagraphFormat.Tabs.Add(toc1TabStop);

var toc2Style = document.Styles["toc 2"] as ParagraphStyle;
var toc2TabStop = new TabStop(tocWidth - toc2Style.ParagraphFormat.RightIndentation, TabStopAlignment.Right, TabStopLeader.Dot);
toc2Style.ParagraphFormat.Tabs.Add(toc2TabStop);

toc.InstructionText = toc.InstructionText.Replace(';', ',');
toc.Update();

document.GetPaginator(new PaginatorOptions() { UpdateFields = true });