在MonoTouch中,我希望从一个字节数组中创建一个CGPDFDocument
,该数组传回从Web服务编码的文本。但是,MonoTouch似乎不支持从本地文件以外的任何内容创建或从URL下载。
有人知道怎么做吗?
答案 0 :(得分:0)
一种选择是调用CGPDFDocumentCreateWithProvider来创建自己的CGPDFDocument
实例。它不应该太复杂,因为MonoTouch中已经有CGDataProvider。
OTOH接收数组(来自网络服务)可能消耗大量内存(除非你100%确定它们的小尺寸)。例如。字符串到字节的转换,它必须全部适合内存...
为了安全起见,您可能希望首先将数组序列化(或者更好地直接将其直接传输)到本地(临时/缓存)文件(以避免GCPDFDocument
实例的另一个内存中副本)和然后调用现有的CGPDFDocument.FromFile
API。
更新: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));
}
}