2

私はiPhoneプログラミングの初心者です。私のアプリケーションでは、リソースフォルダに保存されているPDFの最初のページのサムネイルを表示します。次のコードを使用してサムネイルを作成していますが、横向きのPDFに適しています。しかし、縦向きのPDFのサムネイルを作成しているときに、PDFをWebビューで開いたときに表示されない余分な部分を含む画像が表示されます。

これは私がサムネイルを作成するために使用しているコードです:

NSURL * pdfFileUrl = [NSURLfileURLWithPath:filePath];
CGPDFDocumentRef pdf = CGPDFDocumentCreateWithURL((CFURLRef)pdfFileUrl);

            CGRect aRect = CGRectMake(0, 0, 1024, 768);
            UIGraphicsBeginImageContext(aRect.size);
            CGContextRef context = UIGraphicsGetCurrentContext();                    

            CGContextSaveGState(context);                
            CGContextTranslateCTM(context, 0.0, aRect.size.height);
            CGContextScaleCTM(context, 1.0, -1.0);
            CGContextTranslateCTM(context, -(aRect.origin.x), -(aRect.origin.y));

            CGContextSetGrayFillColor(context, 1.0, 1.0);
            CGContextFillRect(context, aRect);            

            //Grab the first PDF page
            CGPDFPageRef page = CGPDFDocumentGetPage(pdf, 1);
            CGAffineTransform pdfTransform = CGPDFPageGetDrawingTransform(page, kCGPDFCropBox, aRect, 0, false);
            // And apply the transform.
            CGContextConcatCTM(context, pdfTransform);            
            CGContextDrawPDFPage(context, page);

            // Create the new UIImage from the context
            UIImage *thumbnail = UIGraphicsGetImageFromCurrentImageContext();

            CGContextRestoreGState(context);          
            UIGraphicsEndImageContext();    
            CGPDFDocumentRelease(pdf);

このコードを使用してポートレートPDFのサムネイル画像を作成しているときに、取得している画像は正確なものではありません。それはいくつかの余分な部分があります。これは、そのPDFの隠れた部分だと思います。また、同じPDFをUIWebViewにロードすると、余分な部分がなくても正しいPDFを表示できます。誰かが私にこれに対する解決策を与えることができますか?

ありがとう。

4

1 に答える 1

0

問題はCGRectの取得にあることがわかりました。私はiPadの配置でrectをハードコーディングしました。実際には、使用しているPDFページの長方形を取得する必要があります。そこで、コードで次の変更を使用して、PDFの正しいサムネイル画像を作成しました。

CGPDFPageRef page = CGPDFDocumentGetPage(pdf、1);//最初のPDFページを取得します

CGRect aRect = CGPDFPageGetBoxRect(page、kCGPDFCropBox); //ボックスのタイプに関連付けられたpdfページの長方形を取得します(kCGPDFCropBox)

于 2012-06-12T07:26:09.853 に答える