从字节数组创建CGPDFDocument

时间:2012-03-20 21:27:05

标签: c# ios xamarin.ios bytearray cgpdfdocument

在MonoTouch中,我希望从一个字节数组中创建一个CGPDFDocument,该数组传回从Web服务编码的文本。但是,MonoTouch似乎不支持从本地文件以外的任何内容创建或从URL下载。

有人知道怎么做吗?

1 个答案:

答案 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));
    }
}