在MonoTouch中,我希望从字节数组创建CGPDFDocument
,该字节数组传输回从Web服务编码的文本。但是,MonoTouch似乎不支持从本地文件以外的其他任何内容或从URL下载的内容。
有人知道该怎么做吗?
最佳答案
一种选择是p /调用CGPDFDocumentCreateWithProvider以创建自己的CGPDFDocument
实例。它应该不太复杂,因为CGDataProvider已在MonoTouch中提供。
OTOH(通过Web服务)接收阵列会消耗大量内存(除非您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));
}
}