您好 我会尽力解释我的问题,我真的希望有人能弄清楚可能出现的问题。
情况:
使用microsoft的office open XML格式,我能够创建一个干净的Word文档所需的文件。这些文件都是XML文件。我所做的是将XML内容写入每个文件的不同bytearray。
然后我将bytearray添加到FZIP库(http://codeazur.com.br/lab/fzip/)并使用以下代码创建docx文件:
var zip:FZip = new FZip();
zip.addFile("/_rels/", null, false);
zip.addFile("/docProps/", null, false);
zip.addFile("/word/", null, false);
zip.addFile("[Content_Types].xml", bytContentType, false);
zip.addFile("/docProps/app.xml", bytApp, false);
zip.addFile("/docProps/core.xml", bytCore, false);
zip.addFile("/word/document.xml", bytDocument, false);
zip.addFile("/word/fontTable.xml", bytFontTable, false);
zip.addFile("/word/settings.xml", bytSettings, false);
zip.addFile("/word/webSettings.xml", bytWebSettings, false);
zip.addFile("/_rels/.rels", bytRels, false);
var file:File = File.documentsDirectory;
file = file.resolvePath(folder + ".docx");
var stream:FileStream = new FileStream();
stream.open(file, FileMode.WRITE);
zip.serialize(stream);
stream.close();
好的,这会在我的文档中创建一个新的docx文件。如果我将.docx重命名为.zip并将其解压缩,它将遵循Word文档所需的确切结构(例如:http://dl.dropbox.com/u/5490354/Screen%20shot%202011-05-08%20at%2019.40.10.png) 在这个例子中,“Untitled Document”最初是“Untitled document.docx”(然后重命名为.zip并提取)
所以你可以看到一切正常直到... 你试图在Word中打开“Untitled document.docx”。它会说文件已损坏。
无论什么工作...... 在您选择Untitled Document文件夹中的所有文件/文件夹并将其压缩后,解压缩docx文件(如屏幕截图),然后将ZIP文件重命名为docx(请参阅结果:http://dl.dropbox.com/u/5490354/Screen%20shot%202011-05-08%20at%2019.44.18.png)它在Word和Word中正常工作正确读取文件。注意:如果您尝试压缩并重新命名Untitled Document文件夹,它也会再次损坏。
所以我的问题 我希望描述清楚,现在我希望有人知道在动作脚本3中使用FZIP压缩时文件文件损坏可能是什么问题,但在提取损坏的文件后压缩文件时工作正常。
由于
答案 0 :(得分:2)
这只是一个机会建议,因为我无法遵循代码:但它是否以某种方式为您创建压缩目录,而不是仅仅压缩文件的累积?它应该是后者。 (诚然,它确实看起来像你的来源。)
这让我发现了一次很大的不同:见How to zip a WordprocessingML folder into readable docx - 特别是Eric White的优秀答案。
我在解压缩Untitled Document.zip
的结果图片中看到,还有一个外部目录也称为Untitled Document
。如果你没有单独创建这个目录,但它从解压缩中出现,那么我认为 可能是麻烦。 (请注意,如果您只是重命名一个随机.docx
文件.zip
并将其打开,那么像[Content_Types].xml
这样的位将遍布其中包含zipfile的目录,而非高雅为自己创建一个新目录;因此.docx
文件本身不是一个压缩目录。)另一种说法是,如果你将Archive.docx
重命名为Archive.zip
,并解压缩,它会覆盖目录中的文件,还是创建一个新目录?如果Word打开它,假设它是前者。
答案 1 :(得分:0)
我找到了问题的解决方案。这是一个诚实的错误,但一个令人讨厌的错误
zip.addFile("/docProps/app.xml", bytApp, false);
应该是
zip.addFile("docProps/app.xml", bytApp, false);
所有其他addFile元素相同(需要删除第一个斜杠)