2011-05-08 25 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打開它,假設它是前者。