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

我想对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)...但是我想使其尽可能简单...


芜湖不芜
浏览 184回答 2
2回答

jeck猫

发现无法用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 )

哈士奇WWW

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

相关分类

Python