2016-03-06 98 views
0

我打這個,這兩天我沒有找到有關CGPDF任何適當的文件。我嘗試了所有可能的方式,但我失敗了。這是我想要做的。我有一個PDF顯示,我在UIWebView中顯示它。我使用pdf所在的路徑(NSURL)創建了CORE GRAPHICS PDF文檔參考。我在它上面創建了一個UIView,並處理了一個觸摸事件。當PDF加載和用戶點擊視圖我希望頁面滾動到特定頁面。我知道這可以通過計算頁面高度和寬度來完成。我想知道在CGPDF中是否有方法傳遞頁碼,並滾動到相關頁面。以下是我的代碼滾動到具體頁面,使用CGPDF

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 

    // set the pdfPafeHeight to -1 so it gets calculated. 
    self.pdfPageHeight = -1; 

    // set the delegate of the UIWebView's underlying UIScrollView to self. 
    self.webView.scrollView.delegate = self; 

    // create an NSURLRequest to load the PDF file included with the project 
    _filePath = [[NSBundle mainBundle] pathForResource:@"Sample" ofType:@"pdf"]; 
    _url = [NSURL fileURLWithPath:_filePath isDirectory:NO]; 
    _urlRequest = [NSURLRequest requestWithURL:_url]; 

    // create a Core Graphics PDF Document ref using the same NSURL 
    _pdf = CGPDFDocumentCreateWithURL((CFURLRef) _url); 

    // use CGPDFDocumentGetNumberOfPages to get the number of pages in the document 
    self.pdfPageCount = (int)CGPDFDocumentGetNumberOfPages(_pdf); 

    // load the PDF file into the UIWebVie 

    UITapGestureRecognizer *singleFingerTap = 
    [[UITapGestureRecognizer alloc] initWithTarget:self 
              action:@selector(handleSingleTap:)]; 
    [self.view addGestureRecognizer:singleFingerTap]; 

    [self.webView loadRequest:_urlRequest]; 
} 

這裏是我如何想要處理單擊在UIVIEW上。我只是想知道是否有任何方法CGPDF當我通過一個頁碼,它滾動到指定頁面

- (void)handleSingleTap:(UITapGestureRecognizer *)recognizer { 


} 

回答

1

有一個爲你想達到什麼沒有API,即使你能夠使用私有API,如果這個程序是隻爲企業安裝,並不需要去應用程序商店 - 這將是棘手的任何解決辦法可能會與一家主要的iOS版本更新突破。如果你想要走這條路線,你可以內省視圖控制器層次結構,並會發現,蘋果內部有一個名爲CorePDF框架,它具有您可能能夠訪問內部私有API - 但要小心,知道這是不是一個App Store應用程序的解決方案。

另一種方法是從頭開始,用CGContextDrawPDFPage繪製PDF頁面,構建自己的緩存,滾動視圖和視圖控制器+手勢操作。我們在2010年以後開展的商業活動PSPDFKit SDK中做到了這一點 - 這比您想象的要多得多。我們也最終感動並使用自定義呈現改善的相容性與廣泛的可用的PDF文件,並提供比蘋果的渲染器有更好的表現,但不是每個用例可能需要這個。