开发者

Problem with pdf while opening in UIWebView

I have a problem while opening开发者_运维百科 a pdf in a UIWebView. Zoom in and Zoom out doesn't work and even double tap doesn't enlarge the pdf font size.

Guys is there any way to do that....

If not can anyone share some code ....



    #import 


    @interface TiledPDFView :  UIView {
        CGPDFPageRef pdfPage;
        CGFloat myScale;

    }

    - (id)initWithFrame:(CGRect)frame andScale:(CGFloat)scale;
    - (void)setPage:(CGPDFPageRef)newPage;

    @end



    #import "TiledPDFView.h"
    #import 

    @implementation TiledPDFView


    // Create a new TiledPDFView with the desired frame and scale.
    - (id)initWithFrame:(CGRect)frame andScale:(CGFloat)scale{
        if ((self = [super initWithFrame:frame])) {

            CATiledLayer *tiledLayer = (CATiledLayer *)[self layer];

            tiledLayer.levelsOfDetail = 4;
            tiledLayer.levelsOfDetailBias = 4;
            tiledLayer.tileSize = CGSizeMake(512.0, 512.0);
            myScale = scale;
        }
        return self;
    }

    // Set the layer's class to be CATiledLayer.
    + (Class)layerClass {
        return [CATiledLayer class];
    }

    // Set the CGPDFPageRef for the view.
    - (void)setPage:(CGPDFPageRef)newPage
    {
        CGPDFPageRelease(self->pdfPage);
        self->pdfPage = CGPDFPageRetain(newPage);
    }

    -(void)drawRect:(CGRect)r
    {
        // UIView uses the existence of -drawRect: to determine if it should allow its CALayer
        // to be invalidated, which would then lead to the layer creating a backing store and
        // -drawLayer:inContext: being called.
        // By implementing an empty -drawRect: method, we allow UIKit to continue to implement
        // this logic, while doing our real drawing work inside of -drawLayer:inContext:
    }


    // Draw the CGPDFPageRef into the layer at the correct scale.
    -(void)drawLayer:(CALayer*)layer inContext:(CGContextRef)context
    {
        // First fill the background with white.
        CGContextSetRGBFillColor(context, 1.0,1.0,1.0,0.5);
        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);


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

    }

    // Clean up.
    - (void)dealloc {
        CGPDFPageRelease(pdfPage);

        [super dealloc];
    }


    @end

Add this to your project...
Hope it helped....


Make sure that «Multiple Touch» is enabled for the UIWebView.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜