2012-03-20 82 views
2

在MonoTouch中,我期待從一個字節數組中創建一個CGPDFDocument,這個字節數組是從Web服務編碼後傳回來的文本。但是,MonoTouch似乎不支持從本地文件以外的任何文件或從URL下載的文件。從字節數組創建一個CGPDFDocument

任何人都知道如何做到這一點?

回答

0

一個選項是將p /調用到CGPDFDocumentCreateWithProvider來創建您自己的CGPDFDocument的實例。它不應該太複雜,因爲在MonoTouch中已經有了CGDataProvider

OTOH接收數組(從Web服務)可能會消耗大量內存(除非您100%確定它們的小尺寸)。例如。字符串到字節的轉換,它必須全部放在內存中......

爲了安全起見,您可能想先序列化數組(或者如果可能,直接更好地直接傳輸)到本地(臨時/緩存)文件中另一個用於GCPDFDocument實例的內存中副本),然後調用現有的CGPDFDocument.FromFile API。

UPDATE:MonoTouch的5.3.3+將爲GCPDFDocument接受一個CGDataProvider提供新的構造。同時你可以使用下面的代碼。

[DllImport (Constants.CoreGraphicsLibrary)] 
extern static IntPtr CGPDFDocumentCreateWithProvider (IntPtr provider); 

static GCPDFDocument FromArray (byte[] array) 
{ 
    using (var dp = new CGDataProvider (array, 0, array.Length) { 
     return new CGPDFDocument (CGPDFDocumentCreateWithProvider (dp.Handle)); 
    } 
} 
+0

非常感謝 - 事實上,我最近發現,將PDF字節數組直接加載到UIWebView中非常容易 – user1281989 2012-04-08 20:03:42