在 MonoTouch 中,我希望CGPDFDocument
从一个字节数组中创建一个传输回从 Web 服务编码的文本。然而,MonoTouch 似乎不支持从本地文件或从 URL 下载以外的任何内容创建。
有人知道怎么做吗?
在 MonoTouch 中,我希望CGPDFDocument
从一个字节数组中创建一个传输回从 Web 服务编码的文本。然而,MonoTouch 似乎不支持从本地文件或从 URL 下载以外的任何内容创建。
有人知道怎么做吗?
一种选择是 p/invoke 到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));
}
}