Actionscript 3 在ActionScript3-AdobeAIR中使用FZIP创建docx
你好 我会尽我最大的努力解释我的问题,我真的希望有人能找出什么是错的 情况: 使用微软的OfficeOpenXML格式,我能够创建一个干净的Word文档所需的文件。这些文件都是XML文件。我要做的是为每个文件将XML内容写入不同的bytearray 然后我将bytearray添加到FZIP库中http://codeazur.com.br/lab/fzip/ 并使用以下代码创建docx文件:Actionscript 3 在ActionScript3-AdobeAIR中使用FZIP创建docx,actionscript-3,air,docx,Actionscript 3,Air,Docx,你好 我会尽我最大的努力解释我的问题,我真的希望有人能找出什么是错的 情况: 使用微软的OfficeOpenXML格式,我能够创建一个干净的Word文档所需的文件。这些文件都是XML文件。我要做的是为每个文件将XML内容写入不同的bytearray 然后我将bytearray添加到FZIP库中http://codeazur.com.br/lab/fzip/ 并使用以下代码创建docx文件: var zip:FZip = new FZip(); zip.addFile("/_rels/", nul
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文档所需的确切结构,例如:
在本例中,无标题文档最初是Untitled Document.docx,然后重命名为.zip并解压缩
所以你可以看到一切正常,直到。。。您尝试在Word中打开未命名的document.docx。它会说文件已损坏
然而,什么是有效的。。。
提取docx文件后,如屏幕截图中所示,选择无标题文档文件夹中的所有文件/文件夹并将其压缩,然后将压缩文件重命名为docx。请参见结果:它在Word中工作正常,Word可以正确读取文件。注意:如果再次尝试压缩和重命名未命名的文档文件夹,它也会再次损坏
所以我的问题是
我希望描述是清楚的,现在我希望有人谁知道什么可能是问题的word文件时,压缩使用FZIP在actionscript 3损坏,但工作正常,当你压缩文件后提取你的损坏的文件
谢谢这只是一个偶然的建议,因为我无法理解代码:但它是否以某种方式为您制作了一个压缩目录,而不仅仅是将一堆文件压缩在一起?应该是后者。诚然,它看起来确实像你的消息来源在做什么 正如我曾经发现的那样,这带来了很大的不同:请看——特别是埃里克·怀特的精彩答案
我看到在解压Untitled Document.zip的结果图像中,有一个外部目录,也称为Untitled Document。如果您没有单独创建此目录,但它是从解压缩中产生的,那么我认为这可能是问题所在。请注意,如果您只是重命名一个random.docx文件.zip并打开它,像[Content\u Types].xml这样的位将分布在包含zipfile的目录中,而不是为自己创建一个新目录;因此.docx文件本身不是一个压缩目录。另一种说法是,如果将Archive.docx重命名为Archive.zip并解压缩,它会覆盖目录中的文件,还是创建一个新目录?如果Word打开它,假设它是前者 我找到了问题的解决办法。这是一个诚实的错误,但也是一个恼人的错误
zip.addFile("/docProps/app.xml", bytApp, false);
应该是
zip.addFile("docProps/app.xml", bytApp, false);
与所有其他addFile元素相同,在搜索原因时需要删除第一个斜杠。。。有很多ActionScript zip库,您可以尝试另一个。