为了账号安全,请及时绑定邮箱和手机立即绑定

如何对OOo / LibreOffice Writer文档进行简单操作,然后保存

如何对OOo / LibreOffice Writer文档进行简单操作,然后保存

芜湖不芜 2021-03-06 14:11:57
我想对LibreOffice Writer文档进行一些非常简单的操作...然后再次将其另存为ODT文件...这可能是什么问题?如果尝试此操作,我会在zip文件(ODT文件)中得到2个content.xmls ...奇怪的是,这两个文件(例如,解压缩为“ content.xml”和“ content_1.xml”)似乎都包含修改后的内容...  zipfile = ZipFile( file_path, "a" )  for zip_info in zipfile.infolist():    contents = zipfile.read( zip_info.filename )    if ( zip_info.filename == "content.xml" ):      document_root = parseString( contents )      # ... mess around with the contents DOM document...      zipfile.writestr( zip_info, document_root.toxml() )      zipfile.close()我知道有各种各样的加载项和可以使用的东西(UNO)...但是我想使其尽可能简单...
查看完整描述

2 回答

?
jeck猫

TA贡献1909条经验 获得超7个赞

发现无法用Python编程地从zip文件中删除元素,我最初决定采用“制作新的zip”方法:使用ZipFile模块从zipfile中删除文件


但是,尽管我能够打开生成的ODT文件并从中提取所有文件,但是7Zip抱怨CRC失败,称content.xml现在“损坏”。显然是由于一个“ content.xml”被另一个的残酷替换所致。


最终答案:1)将修改后的DOM结构输出到同一目录中的一个简单文件,称为“ content.xml”:


    f = open( file_dir + '\\content.xml', "w" )

    print >>f, document_root.toxml()

    f.close()

2)当以编程方式关闭ODT文件时,利用7zip CLI:


  import subprocess

  subprocess.Popen( "7z u temp.odt content.xml", cwd=file_dir, shell=True )


查看完整回答
反对 回复 2021-03-29
?
哈士奇WWW

TA贡献1799条经验 获得超6个赞

根据文档的来源,您可能希望跳过zip文件的混乱,而使用Flat XML OpenDocument Format(我相信它是.fodt扩展名),而直接操作XML。这将意味着更大的文件大小,但它们确实压缩得很好,当您弄乱它们时,始终可以将它们另存为.odt文件。


查看完整回答
反对 回复 2021-03-29
  • 2 回答
  • 0 关注
  • 183 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信