gpt4 book ai didi

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

转载 作者:数据小太阳 更新时间:2023-10-29 02:41:14 29 4
gpt4 key购买 nike

我想对 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)...但我希望它尽可能简单...

稍后

我的解决方案:发现无法在 Python 中以编程方式从 zip 文件中删除元素,我最初决定采用“制作新的 zip”方法:Delete file from zipfile with the ZipFile Module

然而,尽管我能够打开生成的 ODT 文件并从中提取所有文件,但 7Zip 提示 CRC 失败,说 content.xml 现在“已损坏”。显然是由于用一个“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 )

最佳答案

根据文档的来源,您可能希望跳过对 zip 文件的处理并使用 Flat XML OpenDocument Format(我相信它是 .fodt 扩展名)并直接操作 XML .这将意味着更大的文件大小,但它们压缩得相当好,当你处理完它们后,你总是可以将它们保存为 .odt 文件。

关于python - 如何对 OOo/LibreOffice Writer 文档进行简单操作,然后保存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16871014/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com