在MonoTouch中,我期待从一个字节数组中创建一个CGPDFDocument
,这个字节数组是从Web服务编码后传回来的文本。但是,MonoTouch似乎不支持从本地文件以外的任何文件或从URL下载的文件。从字节数组创建一个CGPDFDocument
任何人都知道如何做到这一点?
在MonoTouch中,我期待从一个字节数组中创建一个CGPDFDocument
,这个字节数组是从Web服务编码后传回来的文本。但是,MonoTouch似乎不支持从本地文件以外的任何文件或从URL下载的文件。从字节数组创建一个CGPDFDocument
任何人都知道如何做到这一点?
一个选项是将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));
}
}
非常感谢 - 事实上,我最近发现,将PDF字节数组直接加载到UIWebView中非常容易 – user1281989 2012-04-08 20:03:42