2011-05-08 26 views
2

你好 我会尽我所能来解释我的问题,我真的希望有人能找出什么可能是错误的。ActionScript 3中创建使用FZIP一个DOCX - Adob​​e AIR的

现状:

微软使用的Office Open XML格式,我能创造需要一个干净的Word文档的文件。这些文件都是XML文件。我所做的是将XML内容写入每个文件的不同字节数组。

我再加入字节组的到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)的确切结构 在这个例子中“无标题文档”原是“无题document.docx”(更名为.zip和提取)

所以你可以看到一切工作正常直到...您尝试打开W​​ord中的“无标题document.docx”。它会说文件已损坏。

什么不工作无论其... (截屏等)提取的docx文件,当您选择无标题文档文件夹内的所有文件/文件夹和ZIP压缩的,然后重命名的ZIP文件到DOCX后(见结果:http://dl.dropbox.com/u/5490354/Screen%20shot%202011-05-08%20at%2019.44.18.png)它在Word中正常工作,并正确读取文件。注意:如果您尝试重新压缩并重命名Untitled Document文件夹,它也会再次损坏。

所以我的问题 我希望说明很清楚,现在我希望有人谁知道什么可能是在ActionScript 3使用FZIP拉链,但工作正常时,Word文件损坏时,ZIP的问题提取损坏的文件后的文件。

感谢

+1

在寻找原因了这一点。 ..有很多的ActionScript zip库,你可以尝试另一个。 – alxx 2011-05-08 20:47:35

回答

0

我找到了解决问题的办法。这是一个诚实的错误,但一个恼人的一个

zip.addFile("/docProps/app.xml", bytApp, false); 

应该

zip.addFile("docProps/app.xml", bytApp, false); 

同所有其他addFile元素(第一斜线需要被移除)

2

这只是一个偶然的建议,因为我不能跟随代码:但它在某种程度上作出压缩目录你,而不仅仅是荏苒一起文件的积累?它应该是后者。 (看起来你的源代码确实如此。)

这让我有了很大的不同,因为我发现了一次:见How to zip a WordprocessingML folder into readable docx - 尤其是Eric White的出色答案。

我看到在你的解压Untitled Document.zip的结果的图像,还有一个外目录也称为Untitled Document。如果你没有这个目录单独做,但它解压缩出现了,那么我认为这可以是麻烦。 (请注意,如果你只是重命名随机.docx文件.zip并打开它,像[Content_Types].xml位将各地已经在它的压缩文件,而不是高雅制作一个新的目录为自己的目录摊开;所以.docx文件ISN “T本身就是一个压缩的目录。)把点的另一种方法是,如果重命名Archive.docxArchive.zip,并解压缩,它覆盖在目录中的文件,或使一个新的目录?如果Word打开它,假设它是前者。