2012-03-20 79 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