2

CGPDFDocumentMonoTouchでは、Webサービスからエンコードされたテキストを転送して戻したバイト配列からを作成しようとしています。ただし、MonoTouchは、ローカルファイルまたはURLからのダウンロード以外からの作成をサポートしていないようです。

誰かがこれを行う方法を知っていますか?

4

1 に答える 1

0

1つのオプションは、 CGPDFDocumentCreateWithProviderをp / invokeして、の独自のインスタンスを作成することCGPDFDocumentです。CGDataProviderはMonoTouchですでに利用可能であるため、それほど複雑であってはなりません。

(Webサービスから)配列を受信するOTOHは、大量のメモリを消費する可能性があります(サイズが小さいことを100%確信している場合を除く)。たとえば、文字列からバイトへの変換では、すべてメモリに収まる必要があります。

安全のために、最初に配列をローカル(一時/キャッシュ)ファイルにシリアル化して(または可能であれば直接ストリーミングしてGCPDFDocument)、次に既存のCGPDFDocument.FromFileAPIを呼び出すことをお勧めします。

更新: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));
    }
}
于 2012-03-20T23:02:06.007 に答える