2015-04-26 78 views
0

我使用普通代碼塊從iOS創建PDF。UIGraphicsBeginPDFContextToData創建Acrobat無法讀取的PDF

NSMutableData *pdfdata = [NSMutableData dataWithLength:2048]; 
CGRect newf = CGRectMake(0, 0,1024,1024); 

UIGraphicsBeginPDFContextToData(pdfdata,newf,nil); 
UIGraphicsBeginPDFPage(); 

//rendering code 

UIGraphicsEndPDFContext(); 

iOS和OS X閱讀這些PDF文件就好,但Acrobat聲稱它們已損壞且無法讀取。有趣的是,在Preview中做一個重複項將它們取消並使它們再次被Acrobat讀取。

通過DIFF-ING兩個版本,我可以看到的是,OS X PDF編碼器添加了一堆東西(它的二進制所以不知道是什麼)

任何人都知道的祕密武器,以使再次我PDF的Acrobat兼容。

編輯

Broken file - 不會在Acrobat

+0

...已添加到最後,所有數據事先與所有數據相同? – Tommy

+0

在幾個地方沒有一些東西在中間。但很多相同的部分 –

+0

你能分享一個破碎的PDF樣本嗎? – mkl

回答

1

該文件與以0 2048個字節的塊,這損害了文件中的所有偏移開始打開。

創建一個空的NSMutableData沒有初始長度,問題應該修復。

+0

令人驚歎,非常感謝。我一直認爲NSMutableData引用被編碼器從零覆蓋。 –