2010-12-27 18 views
4

私は、PDFを表示するために使用しているコードスニペットを添付しました。次のコードはPDFを表示していますが、iPadディスプレイのフルサイズを使用していないか、または小さすぎると思われます。ページが小さすぎます。iPadでフルスクリーンのPDFを表示するにはどうすればよいですか?

iPadディスプレイの境界に収まるように、またはズームした状態でPDFを表示するにはどうすればよいですか?私は別のアプローチ(アプローチ-2)を試してみましたが、90度の角度でPDFが表示される問題が発生します。

アプローチ-1:

CGContextSaveGState(ctx); 

CGContextTranslateCTM(ctx, 0.0, [self.view bounds].size.height); 
CGContextScaleCTM(ctx, 1.0, -1.0); 
CGContextConcatCTM(ctx, 
        CGPDFPageGetDrawingTransform(page, kCGPDFCropBox, 
               [self.view bounds], 0, true)); 

CGContextDrawPDFPage(ctx, page);  
CGContextRestoreGState(ctx); 

アプローチ-2:

CGPDFPageRef page = CGPDFDocumentGetPage(pdfdocument, PageNo+1); 
if(page){ 
    CFRetain(page); 
} 
CGRect pageRect =CGPDFPageGetBoxRect(page, kCGPDFMediaBox); 
int angle= CGPDFPageGetRotationAngle(page); 
float pdfScale = self.bounds.size.width/pageRect.size.width; 
CGContextSetRGBFillColor(context, 1.0,1.0,1.0,1.0); 
CGContextFillRect(context,self.bounds); 
CGContextSaveGState(context); 
// Flip the context so that the PDF page is rendered 
// right side up. 
CGContextTranslateCTM(context, 0.0, self.bounds.size.height); 
CGContextScaleCTM(context, 1.0, -1.0); 

// Scale the context so that the PDF page is rendered 
// at the correct size for the zoom level. 
CGContextScaleCTM(context, pdfScale,pdfScale); 
CGContextDrawPDFPage(context, page); 
CGContextRestoreGState(context); 

誰も私に任意のサイズと任意の角度のいずれかのPDFは、ANにフルスクリーンで表示することを可能にするソリューションを提案することができます両方の向きのiPad?コードスニペットまたは擬似コードを私に提供できれば幸いです。 ありがとう

+0

こんにちはidrishをあなたを助け、私は同じ問題に直面していますあなたは私に答えを教えてくださいすることができますがyou..httpに感謝://stackoverflow.com/questions/4538905/どのようにi-display-a-pdf-full-screen-on-an-ipad/4655714#4655714 – ajay

答えて

1

うまくいけば、これが役に立ちます。 URLで参照されるPDFの最初のページをレンダリングする方法を示します。

このコードは自分自身のコードベースのスニペットのコレクションなので、1つのファイルに貼り付けてコピーしてビルドして実行するとは限りません。私はいくつかのコメントを書いて、あなたがどこに所属しているのかを見て、それが働くためにいくつかのイヴァールを宣言する必要があります。

// helper function 
CGRect CGRectScaleAspectFit(CGRect sourceRect,CGRect fitRect) 
{ 
    if (sourceRect.size.width > fitRect.size.width) 
    { 
     float scale = fitRect.size.width/sourceRect.size.width; 
     sourceRect.size.width = fitRect.size.width; 
     sourceRect.size.height = (int)(sourceRect.size.height * scale); 
    } 

    if (sourceRect.size.height > fitRect.size.height) 
    { 
     float scale = fitRect.size.height/sourceRect.size.height; 
     sourceRect.size.height = fitRect.size.height; 
     sourceRect.size.width = (int)(sourceRect.size.width * scale); 
    } 

    return sourceRect; 
} 


// in your UIView subclass init method 

    CGPDFDocumentRef pdf = CGPDFDocumentCreateWithURL((CFURLRef)pdfURL); 
    pdfPage = CGPDFDocumentGetPage(pdf, 1); 

    CGRect fitrect = CGRectMake(0, 0, self.frame.size.width,self.frame.size.height); 
    CGRect pageRect = CGPDFPageGetBoxRect(pdfPage, kCGPDFMediaBox); 

    CGRect f; 

    f.origin.x=0; 
    f.origin.y=0; 

    f.size.height = self.frame.size.height; 
    f.size.width = self.frame.size.height * pageRect.size.width/pageRect.size.height; 

    f = CGRectScaleAspectFit(f,fitrect); // this is the actual pdf frame rectangle to fill the screen as much as possible 
    pdfScale = f.size.height/pageRect.size.height; 


// in your UIView subclass drawRect method 

    CGContextSetRGBFillColor(context, 1.0,1.0,1.0,1.0); 
    CGContextFillRect(context,self.bounds); 

    CGContextSaveGState(context); 

    CGContextTranslateCTM(context, 0.0, self.bounds.size.height); 
    CGContextScaleCTM(context, 1.0, -1.0); 

    CGContextScaleCTM(context, pdfScale,pdfScale); 
    CGContextDrawPDFPage(context, pdfPage); 
    CGContextRestoreGState(context); 
0

これはあなたのPDFフルスクリーンが表示されます。これは

- (void)drawRect:(CGRect)rect 
{ 
    CGContextRef ctx = UIGraphicsGetCurrentContext(); 

    //PDF might be transparent, assume white paper - set White Background 
    [[UIColor whiteColor] set]; 
    CGContextFillRect(ctx, rect); 

    //Flip coordinates 
    CGContextGetCTM(ctx); 
    CGContextScaleCTM(ctx, 1, -1); 
    CGContextTranslateCTM(ctx, 0, -rect.size.height); 

    //PDF File Path 
    NSURL *pdfURL = [[NSBundle mainBundle] URLForResource:@"TEST" withExtension:@"pdf"]; 
    CGPDFDocumentRef pdf = CGPDFDocumentCreateWithURL((__bridge CFURLRef)pdfURL); 
    CGPDFPageRef page1 = CGPDFDocumentGetPage(pdf, 1); 

    //Get the rectangle of the cropped inside 
    CGRect mediaRect = CGPDFPageGetBoxRect(page1, kCGPDFCropBox); 
    CGContextScaleCTM(ctx, rect.size.width/mediaRect.size.width, 
       rect.size.height/mediaRect.size.height); 

    //Draw PDF 
    CGContextDrawPDFPage(ctx, page1); 
    CGPDFDocumentRelease(pdf); 
} 

は、あなたのプロジェクトライブラリに表示したいPDFファイルをコピーしてもPDFを処理するための最良の方法であることを確認していない、 上記の例ではPDFファイルの名前は、「TEST」である:あなたがあなたのファイルこれはUIViewの中にフルスクリーンでPDFを表示するには、私の作品

の名前であなたの名前を付けたい、

私はこれがあなたの最善の選択肢であるかどうかは分かりません。問題があります。つまり、ズームを処理する必要があります。そうした場合は、パンニングを処理する必要があります。また、オリエンテーションは、PDFの取り扱いに飛び込むのに.....それに

をラウンドを再生

大混乱(あなたは風景モードにデバイスを反転する場合)ファイルがそのアスペクト比を失いです(と踏み付けます) IOSでは、痛みだけです。 。 。 。

希望あなたは答えを得るならば、これは少し

関連する問題