【问题标题】:PDF Reader in iphoneiPhone中的PDF阅读器
【发布时间】:2011-03-15 05:59:56
【问题描述】:

由于我是 iphone 域的新手。我想要一些关于如何在 iphone 中制作 PDF 阅读器的最佳教程。谁能建议我如何在 iphone 中制作 PDF 阅读器以查看 locl PDF 和互联网上的 PDF 文件?

提前致谢。

【问题讨论】:

    标签: iphone xcode ipad pdf ios4


    【解决方案1】:
    - (void)viewDidLoad 
    {
        [super viewDidLoad];
    
        [webView loadRequest:[NSURLRequest requestWithURL:pdfUrl]];
    
        NSString *path = [[NSBundle mainBundle] pathForResource:@"yourPDFFile" ofType:@"pdf"];
        NSURL *url = [NSURL fileURLWithPath:path];
        NSURLRequest * request = [NSURLRequest requestWithURL:url];
        [webView loadRequest:request];
        [webView setScalesPageToFit:YES];
    
    }
    

    【讨论】:

      【解决方案2】:
      #import <UIKit/UIKit.h>
      
      
      @interface TiledPDFView :  UIView {
          CGPDFPageRef pdfPage;
          CGFloat myScale;
      
      }
      
      - (id)initWithFrame:(CGRect)frame andScale:(CGFloat)scale;
      - (void)setPage:(CGPDFPageRef)newPage;
      
      @end
      
      
      
      #import "TiledPDFView.h"
      #import <QuartzCore/QuartzCore.h>
      
      @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
      

      将此视图添加到您的视图控制器

      问候, 希亚姆帕尔马

      猜你喜欢
      • 2011-10-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-28
      • 2011-05-04
      • 1970-01-01
      • 1970-01-01
      • 2012-07-12
      相关资源
      最近更新 更多