2010-06-02 3 views
2

내 iPad 앱을 업데이트하는 과정에서 기존 PDF 문서의 페이지를 Core Graphics 컨텍스트로 가져 와서 새로운 PDF로 저장하려고 시도했지만 문제가 발생했습니다. 제대로 표시 할 텍스트 새로 만든 PDF의 이미지는 멋지지만 텍스트는 거의 올바르게 표시되지 않습니다. 더 자주 보이지 않거나 보이지 않거나 왜곡되어 보입니다. 텍스트가 보이지 않을 때, 텍스트 편집기로 텍스트를 복사 할 위치를 선택할 수 있습니다. 이 문제는 iPad에서 사용할 수있는 글꼴 수가 제한되어 있습니까? 사람이 어떤 제안이있는 경우CGContextDrawPDFPage가 흰색 또는 문자 왜곡 된 텍스트를 표시합니다.

CGPDFDocumentRef document = CGPDFDocumentCreateWithProvider(dataProvider); 
CGPDFPageRef page = CGPDFDocumentGetPage(document, pageNumberToRetrieve); 
CGRect pageRect = CGPDFPageGetBoxRect(page, kCGPDFMediaBox); 

UIGraphicsBeginPDFContextToFile(pathToFile, pageRect, nil); 
CGContextRef context = UIGraphicsGetCurrentContext(); 

CGContextBeginPage(context, NULL); 

// I don't think this line is necessary, but I have tried both with and without it. 
CGContextSetTextDrawingMode (context, kCGTextFill); 

CGContextDrawPDFPage(context, page); 

CGContextEndPage(context); 
UIGraphicsEndPDFContext(); 
CGDataProviderRelease(dataProvider); 
CGPDFDocumentRelease(document); 

나는 그들을 듣고 대단히 감사하겠습니다 다음과 같이

내 코드입니다.

감사합니다.

rob

답변

0

화면에 렌더링 하시겠습니까? 나는 UIGraphicsBeginPDFContextToFile에 대한 필요성을 보지 못합니까? 문제 (텍스트 제대로 표시)를 제기하지 않는 이미지 컨텍스트에

pageReference = CGPDFDocumentGetPage(pdfReference, page); 

    CGContextRef context = UIGraphicsGetCurrentContext(); 
    @try { 
    CGContextTranslateCTM(context, 0.0, self.bounds.size.height); 
    CGContextScaleCTM(context, scale, -scale); 

    CGContextSaveGState(context); 
    @try { 
     CGAffineTransform pdfTransform = CGPDFPageGetDrawingTransform(pageReference, kCGPDFCropBox, self.bounds, 0, true); 
     CGContextConcatCTM(context, pdfTransform); 
     CGContextDrawPDFPage(context, pageReference); 
    } 
    @finally { 
     CGContextRestoreGState(context); 
    } 
    } 
    @finally { 
    UIGraphicsEndImageContext(); 
    } 
+0

"내 iPad 앱을 업데이트하는 과정에서 기존 PDF 문서의 페이지를 Core Graphics 컨텍스트에 그려서 새로운 PDF로 저장하려고 시도했습니다. [...]"<- 그게 그의 첫 번째 질문. 확실하지 그게 그리울 수 ... :] – Kalle

+0

그건 내게 오전 8시 15 분에 쉽게 조용한 . 진지하게, "Quartz 2D Programming Guide : PDF 문서 생성,보기 및 변환"문서를 보셨습니까? 그렇지 않다면, 문서를 작성하고 컨텍스트에 데이터를 렌더링 한 다음 해당 파일을 저장하는 방법에 대한 코드 샘플이 있습니다. – Fuggly

2

그리기 : 그러나, 화면에 렌더링하려면, 다음과 같이 사용할 수 있습니다.

원본 PDF에서 몇 페이지 만 포함 된 -new-PDF 파일을 만드는 것이 뭘까요? 어떤 이유로 텍스트가 새 파일에 올바르게 그려지지 않는 것 같습니다.

정보가 있습니다 (미리보기에 있어야하는 '추측'으로 텍스트를 선택할 수는 있지만). 렌더링되지 않습니다. 나는 CGContextDrawPDFPage가 PDF 파일에 문자열을 쓴다고 가정하지만 그 글꼴의 문자가 '어떻게 생겼는지'모르기 때문에 그려지지 않습니다.

PDF에 포함 된 글꼴의 요점은 해당 글꼴이 시스템 (이 경우 iPad)에 설치되어 있지 않은 경우에도 프로그램에서 이러한 종류의 조작을 수행 할 수 있다고 생각했습니다. 이것이 형식이나 Quartz 프레임 워크의 한계입니까?

관련 문제