如何在 c# 中使用互操作添加不可编辑的页脚
Posted
技术标签:
【中文标题】如何在 c# 中使用互操作添加不可编辑的页脚【英文标题】:How to add footer that is uneditable using interop in c# 【发布时间】:2018-08-20 02:17:36 【问题描述】:我使用此代码向 Word 文档添加页脚,但我想让页脚在被应用程序打开时设为只读或不可编辑。这可能吗?我在网上搜索,但没有任何地方提到如何使其不可编辑。
Word.Application wordApp = null;
// word document
document = null;
try
wordApp = new Word.Application();
//WordApp.Visible = true;
// open
document = wordApp.Application.Documents.Open(wordpath);
foreach (Word.Section wordSection in document.Sections)
//Get the footer range and add the footer details.
Word.Range footerRange = wordSection.Footers[Word.WdHeaderFooterIndex.wdHeaderFooterPrimary].Range;
footerRange.Font.ColorIndex = Word.WdColorIndex.wdGray50;
footerRange.Font.Size = 15;
footerRange.ParagraphFormat.Alignment = Word.WdParagraphAlignment.wdAlignParagraphCenter;
footerRange.Text = wordHeaderName;
// save
document.Save();
finally
// close excel document & application
if (document != null)
try
document.Close(Word.WdSaveOptions.wdDoNotSaveChanges);
catch
if (wordApp != null)
try
wordApp.Quit();
catch
【问题讨论】:
文档中的哪些内容应该是可编辑/不可编辑的,由谁编辑,在什么情况下? @CindyMeister 只有页脚不可编辑,所有用户都不能永久编辑页脚。谢谢 【参考方案1】:Word 的最新版本(我记得是 2007 年以来)具有保护功能,允许您阻止整个文档进行编辑 - 然后您可以明确允许对各种范围进行编辑。棘手的部分是这些范围必须具有内容才能使许可生效(并保持)有效。
这意味着您可能需要在标题中放置一些“隐藏文本”,例如,它们应该是可编辑的。如果任何页眉或页脚被锁定,则无法从先前取消链接的选项。任何缺少的功能都可以通过代码工具提供,这些工具可以取消保护、执行任何需要完成的操作,然后重新保护。
假设在您打开文档并创建页脚时文档的所有“部分”都已经存在,请将您的代码更改为如下所示。
注意事项:
当我从 VBA 转换它时,可能会有语法“blips” 您可能应该阅读两个对象中的文档保护 模型以及一般 Word 帮助,尤其是 IRM 的可能性。 您可以为保护分配密码。代码sn-p:
Word.Application wordApp = null;
// word document
document = null;
try
wordApp = new Word.Application();
//WordApp.Visible = true;
// open
document = wordApp.Application.Documents.Open(wordpath);
Word.Range permittedRange = document.Content;
permittedRange.Editors.Add(Word.WdEditorType.wdEditorEveryone);
foreach (Word.Section wordSection in document.Sections)
//Allow editing the headers?
permittedRange = wordSection.Headers[Word.WdHeaderFooterIndex.wdHeaderFooterPrimary].Range;
permittedRange.Editors.Add(Word.WdEditorType.wdEditorEveryone);
//Get the footer range and add the footer details.
Word.Range footerRange = wordSection.Footers[Word.WdHeaderFooterIndex.wdHeaderFooterPrimary].Range;
footerRange.Font.ColorIndex = Word.WdColorIndex.wdGray50;
footerRange.Font.Size = 15;
footerRange.ParagraphFormat.Alignment = Word.WdParagraphAlignment.wdAlignParagraphCenter;
footerRange.Text = wordHeaderName;
document.Protect(Word.WdProtectionType.wdAllowOnlyReading, ref missing, ref missing, ref missing, ref missing);
// save
document.Save();
【讨论】:
以上是关于如何在 c# 中使用互操作添加不可编辑的页脚的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 VBA 将页码字段逻辑插入 Word 模板的页脚?