我有许多大型幻灯片,是由多个人编辑的,幻灯片来自多个来源。
备注页的布局包含页眉图像、页脚中的版权和页脚中的页码。我已将备注页重新应用于所有幻灯片,但有些幻灯片仍然缺少图像、版权或页码。我还没有找到一种方法(除了创建具有相同布局的新幻灯片并复制粘贴内容)来使缺失的元素重新出现。
备注页:
处理一些页面:
但不适用于其他情况:
我尝试使用重新应用 Notes Master 功能,但没有成功:
我尝试删除并重新添加页脚、页码和页眉模板,但无济于事。
我怀疑这些模板是以某种方式手动从幻灯片中删除的。
有人有办法(可能使用 VBA)来恢复这些吗?
如果有必要,我愿意解压 pptx 并转换 XML :)。
答案1
好吧,我已经够生气了。所以我用了一些 powershell 将损坏的幻灯片注释的主体放入“已知良好”的幻灯片注释中。
为此我做了以下事情:
- 我使幻灯片母版完全按照我想要的样子显示。
- 我创建了一个新的第一张幻灯片,以确保至少有一张带有正确母版的幻灯片。
- 我将 pptx 解压到一个文件夹中(使用 7zip 或类似工具解压)
- 我编写了一些 powershell 来从每个现有的幻灯片主体中获取内容并将其放入已知良好的主布局中。
- 我添加了从备注页文件名中获取幻灯片编号的功能。
- 我在脚本中覆盖了原来的 notesSlideXXX.xml
- 我复制
notesSlide1.xml
到了master.xml
告诉我的脚本使用什么作为主控。 xxx.pptm\ppt\notesSlides\
我从文件夹中运行了脚本- 我把 pptx 压缩回去。
$notes = Get-ChildItem -path "." -Filter notes*.xml -File
foreach ($notesFile in $notes)
{
$notesFile.Name
$notesFile.Name -match "\d+"
$slideNumber = $Matches[0]
[xml] $slideNotes = Get-Content $notesFile
[xml] $master = Get-Content .\master.xml
$ns = @{
a = "http://schemas.openxmlformats.org/drawingml/2006/main"
r = "http://schemas.openxmlformats.org/officeDocument/2006/relationships"
p = "http://schemas.openxmlformats.org/presentationml/2006/main"
}
$bodycontent = $slideNotes | Select-XML "(//p:sp[.//p:ph[@type='body']])[1]" -Namespace $ns
$masterbodycontent = $master | Select-XML "(//p:sp[.//p:ph[@type='body']])[1]" -Namespace $ns
$masterbodycontent.Node.InnerXml = $bodycontent.Node.InnerXml
$masterslidenumcontent = $master | Select-XML "(//p:sp//a:fld[@type='slidenum']/a:t)[1]" -Namespace $ns
$masterslidenumcontent.Node.InnerText = $slideNumber
$master.Save($notesFile)
}
这将彻底重置所有幻灯片的注释布局。
我 = 高兴。