2012-03-20 2 views
2

내가 바이트 배열에서 CGPDFDocument를 만들 찾고에서 CGPDFDocument 만들기 웹 서비스에서 인코딩 된 텍스트를 다시 옮겼다. 그러나 MonoTouch는 로컬 파일이 아니거나 URL에서 다운로드 한 것에서 생성을 지원하는 것 같지 않습니다.바이트 배열 MonoTouch에서

아무도이를 수행하는 방법을 알고 계십니까?

답변

0

하나의 옵션은 CGPDFDocument의 자신의 인스턴스를 만들 수 CGPDFDocumentCreateWithProvider로 호출/P하는 것입니다. 그것은 MonoTouch에서 이미 CGDataProvider 이후 너무 복잡해서는 안됩니다. (당신이 그들의 작은 크기의 약 100 % 확신하지 않는 한) (웹 서비스)에서 배열을 수신

OTOH은 많은 메모리를 소모 할 수 있습니다. 예 : 문자열을 바이트로 변환하면 메모리에 모두 들어 있어야합니다. ...

배열을 직렬화하거나 가능하면 직접 스트리밍하여 로컬 (임시/캐시) 파일에 저장하는 것이 좋습니다. 다음 다른 인 - 메모리 GCPDFDocument 예를 들어 복사) 및 기존 CGPDFDocument.FromFile API를 호출합니다.

UPDATE : MonoTouch 5.3.3+가 CGDataProvider을 받아 GCPDFDocument 새로운 생성자를 제공 할 것입니다. 그 동안 다음 코드를 사용할 수 있습니다.

[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)); 
    } 
} 
+0

대단히 감사합니다. 사실 최근에는 PDF 바이트 배열을 UIWebView에 직접로드하는 것이 매우 쉽습니다. – user1281989