2010-12-27 16 views
4

Ich habe das Code-Snippet angehängt, das ich für die Anzeige einer PDF verwende. Der folgende Code zeigt die PDF-Datei an, scheint aber entweder komprimiert zu sein oder nicht die volle Größe der iPad-Anzeige zu verwenden, was zu einer zu kleinen Seite führt.Wie kann ich einen PDF-Vollbildschirm auf einem iPad anzeigen?

Wie kann ich ein PDF anzeigen, das in die Begrenzung eines iPad-Displays oder in einen gezoomten Zustand passt? Ich habe versucht, einen anderen Ansatz zu verwenden (Approach-2), aber es erzeugt ein Problem mit dem PDF, das um einen 90-Grad-Winkel gedreht erscheint.

Ansatz-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); 

Ansatz-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); 

Kann jemand eine Lösung für mich darauf hindeuten, dass PDF jede Größe und jeden Winkel ermöglicht den Vollbildmodus auf einem angezeigt iPad in beiden Ausrichtungen? Es wäre toll, wenn Sie mir ein Code-Snippet oder einen Pseudo-Code zur Verfügung stellen könnten. Danke

+0

hallo idrish, ich gleiche Problem konfrontiert bin können Sie mir bitte sagen, die Antwort, wenn Sie die Antwort danken you..http erhalten: //stackoverflow.com/questions/4538905/ Wie-kann-ich-Display-ein-pdf-Vollbild-auf-einem-ipad/4655714 # 4655714 – ajay

Antwort

1

Hoffentlich hilft das. Es zeigt, wie die erste Seite einer PDF-Datei referenziert wird, auf die von einer URL verwiesen wird.

Dieser Code ist eine Sammlung von Snippets meiner eigenen Codebasis, also kopieren Sie nicht einfach in 1 Datei einfügen und erwarten, dass es erstellt und ausgeführt wird. Ich schreibe einige Kommentare, damit Sie sehen, was wo hingehört, und Sie müssen einige Ivars erklären, damit es funktioniert.

// 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

Diese Ihr PDF-Vollbild angezeigt wird: nicht sicher, dass dies der beste Weg, PDF obwohl

- (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); 
} 

Kopieren Sie den PDF Sie in Ihre Projektbibliothek, im Beispiel oben angezeigt werden sollen zu handhaben der Name der PDF-Datei ist „TEST“: Sie Sie mit dem Namen der Datei

Dies funktioniert für mich zur Anzeige der PDF in vollem Umfang nutzt innerhalb eines UIView nennen wollen,

Ich bin mir nicht sicher, ob dies die beste Option ist: Es gibt Probleme: d. H. Sie müssen mit dem Zoomen umgehen, und wenn Sie das tun, müssen Sie mit dem Panning umgehen. Orientierung ist auch ein großes Durcheinander (wenn Sie das Gerät ins Querformat drehen) die Datei verliert seine Aspect Ration (und zerquetscht wird)

eine Runde Spielen Sie mit ihm .....

Obwohl in PDF Handhabung Springen In IOS ist nichts als ein Schmerz. . . .

Hoffnung, dies hilft Ihnen heraus ein wenig

Verwandte Themen