我在 SO 网站上打开了这个问题,但在这里似乎更合适。
在文件内部.pptx
我们有这样的结构
我正在尝试编辑内部的slide2.xml
内容..\ppt\slides
。
内容slide2.xml
是这样的:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?><p:sld xmlns:a="http://schemas.openxmlformats.org/drawingml/2006/main" xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships" xmlns:p="http://schemas.openxmlformats.org/presentationml/2006/main"><p:cSld><p:bg><p:bgPr><a:blipFill dpi="0" rotWithShape="1"><a:blip r:embed="rId2"><a:lum/></a:blip><a:srcRect/><a:stretch><a:fillRect/></a:stretch></a:blipFill><a:effectLst/></p:bgPr></p:bg><p:spTree><p:nvGrpSpPr><p:cNvPr id="1" name=""/><p:cNvGrpSpPr/><p:nvPr/></p:nvGrpSpPr><p:grpSpPr><a:xfrm><a:off x="0" y="0"/><a:ext cx="0" cy="0"/><a:chOff x="0" y="0"/><a:chExt cx="0" cy="0"/></a:xfrm></p:grpSpPr><p:sp><p:nvSpPr><p:cNvPr id="4" name="CuadroTexto 3"/><p:cNvSpPr txBox="1"/><p:nvPr/></p:nvSpPr><p:spPr><a:xfrm><a:off x="2701636" y="1249854"/><a:ext cx="14505709" cy="3053139"/></a:xfrm><a:prstGeom prst="rect"><a:avLst/></a:prstGeom><a:noFill/><a:ln w="12700" cap="flat"><a:noFill/><a:miter lim="400000"/></a:ln><a:effectLst/><a:sp3d/></p:spPr><p:style><a:lnRef idx="0"><a:scrgbClr r="0" g="0" b="0"/></a:lnRef><a:fillRef idx="0"><a:scrgbClr r="0" g="0" b="0"/></a:fillRef><a:effectRef idx="0"><a:scrgbClr r="0" g="0" b="0"/></a:effectRef><a:fontRef idx="none"/></p:style><p:txBody><a:bodyPr rot="0" spcFirstLastPara="1" vertOverflow="overflow" horzOverflow="overflow" vert="horz" wrap="square" lIns="48766" tIns="48766" rIns="48766" bIns="48766" numCol="1" spcCol="38100" rtlCol="0" anchor="t"><a:spAutoFit/></a:bodyPr><a:lstStyle/><a:p><a:pPr marL="0" marR="0" indent="0" algn="ctr" defTabSz="1300480" rtl="0" fontAlgn="auto" latinLnBrk="0" hangingPunct="0"><a:lnSpc><a:spcPct val="100000"/></a:lnSpc><a:spcBef><a:spcPts val="0"/></a:spcBef><a:spcAft><a:spcPts val="0"/></a:spcAft><a:buClrTx/><a:buSzTx/><a:buFontTx/><a:buNone/><a:tabLst/></a:pPr><a:r><a:rPr lang="en-US" altLang="en-US" sz="9600" dirty="0"><a:solidFill><a:srgbClr val="FFBE00"/></a:solidFill><a:latin typeface="+mj-lt"/></a:rPr><a:t>Old text</a:t></a:r><a:br><a:rPr lang="en-US" altLang="en-US" sz="9600" dirty="0"><a:solidFill><a:srgbClr val="FFBE00"/></a:solidFill><a:latin typeface="+mj-lt"/></a:rPr></a:br><a:r><a:rPr lang="en-US" altLang="en-US" sz="9600" dirty="0" err="1"><a:solidFill><a:srgbClr val="00C8FF"/></a:solidFill><a:latin typeface="+mj-lt"/></a:rPr><a:t>abc</a:t></a:r><a:r><a:rPr lang="en-US" altLang="en-US" sz="9600" dirty="0"><a:solidFill><a:srgbClr val="00C8FF"/></a:solidFill><a:latin typeface="+mj-lt"/></a:rPr><a:t> Xyz</a:t></a:r><a:endParaRPr kumimoji="0" lang="es-ES_tradnl" sz="5400" b="0" i="0" u="none" strike="noStrike" cap="none" spc="0" normalizeH="0" baseline="0" dirty="0"><a:ln><a:noFill/></a:ln><a:solidFill><a:schemeClr val="bg1"/></a:solidFill><a:effectLst/><a:uFillTx/><a:latin typeface="+mn-lt"/><a:ea typeface="+mn-ea"/><a:cs typeface="+mn-cs"/><a:sym typeface="Calibri"/></a:endParaRPr></a:p></p:txBody></p:sp></p:spTree></p:cSld><p:clrMapOvr><a:masterClrMapping/></p:clrMapOvr><p:transition spd="med"/></p:sld>
我想替换其中的一些文字slide2.xml
:
...<a:t>Old text</a:t>...
对此:
...<a:t>New text</a:t>...
当我替换至少 1 个字母并转换为.zip
整个文件夹,然后将扩展名从 更改为.zip
并.pptx
尝试打开该文件时,MS Powerpoint 检测到错误并尝试修复该文件,但未成功。
如果我只更改几个字母甚至一个字母,我不知道为什么会发生这种情况。我尝试过使用 bash 命令(sed)并手动使用文本编辑器。
有人知道如何编辑/修改任何内容slideX.xml
而不损坏整个 pptx 文件吗?
不要再次压缩文件夹,而是尝试
.zip
使用任何可以执行此操作的工具直接编辑文件,例如7-zip(右键单击文件 ->编辑)。请注意,您需要完全关闭编辑器才能让 7-zip 注册已保存的更改。这对我来说对 LibreOffice 很有用。此方法更好的原因是因为无论文件中存储什么元数据,它都会被保留。当您创建新的 时,可能不会遵循
.zip
某些标准。.pptx