CGPDFDocument
MonoTouchでは、Webサービスからエンコードされたテキストを転送して戻したバイト配列からを作成しようとしています。ただし、MonoTouchは、ローカルファイルまたはURLからのダウンロード以外からの作成をサポートしていないようです。
誰かがこれを行う方法を知っていますか?
CGPDFDocument
MonoTouchでは、Webサービスからエンコードされたテキストを転送して戻したバイト配列からを作成しようとしています。ただし、MonoTouchは、ローカルファイルまたはURLからのダウンロード以外からの作成をサポートしていないようです。
誰かがこれを行う方法を知っていますか?
1つのオプションは、 CGPDFDocumentCreateWithProviderをp / invokeして、の独自のインスタンスを作成することCGPDFDocument
です。CGDataProviderはMonoTouchですでに利用可能であるため、それほど複雑であってはなりません。
(Webサービスから)配列を受信する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));
}
}