2017-01-12 18 views
1

私のアプリでは、私はUIViewのスクリーンショットをキャプチャしているし、私はpdfで画像を設定するが、私は画像とPDFのフレームのための異なるサイズを取得しています。私は小さな画像を取得しているので、それを伸ばして切り詰めるpdfに書いています。ここ PDFと一致UIImageサイズ

は私のコードです:

func drawOnPDF(path: String) { 

    // Get existing Pdf reference 
    let pdf = CGPDFDocument(NSURL(fileURLWithPath: path)) 

    // Get page count of pdf, so we can loop through pages and draw them accordingly 
    let pageCount = pdf!.numberOfPages; 

    // Write to file 
    UIGraphicsBeginPDFContextToFile(path, CGRect.zero, nil) 

    // Write to data 
    //var data = NSMutableData() 
    //UIGraphicsBeginPDFContextToData(data, CGRectZero, nil) 

    for index in 1...pageCount { 
     let page = pdf!.page(at: index) 
     //   let pageFrame = CGPDFPageGetBoxRect(page, kCGPDFMediaBox) 
     let pageFrame = page?.getBoxRect(.mediaBox) 
     page?.getBoxRect(.mediaBox) 

     print(pageFrame) 
     print(img.size) 
     UIGraphicsBeginPDFPageWithInfo(pageFrame!, nil) 

     let ctx = UIGraphicsGetCurrentContext() 

     // Draw existing page 
     ctx!.saveGState(); 
     ctx!.scaleBy(x: 1, y: -1); 
     ctx!.translateBy(x: 0, y: -(pageFrame?.size.height)!); 
     ctx!.drawPDFPage(page!); 
     ctx!.restoreGState(); 

     // Draw image on top of page 


      print(index) 
      print(visibleIndexPath.row) 
      if (index == visibleIndexPath.row + 1) 
      { 


       img.draw(in: pageFrame!) 



     } 


    } 


    UIGraphicsEndPDFContext() 

} 

今ここで私は、画像サイズ(319.0、339.0) を取得していますPDFページのフレームサイズは(0.0、0.0、612.0、792.0)

だから、どのようにしながら、 iOSの両方で同じ設定をすることはできますか?

答えて

0

ctx!.scaleBy(x: 1, y: -1); 

context.scaleBy(x: 319.0/612.0, y: 339.0/792.0)) 

スケール画像のサイズに応じてコンテンツの後、それが収まるように。

.mediaBoxあなたは--->(下)

yourimg.size.widthとyourimg.size.height

+0

何を使用して画像サイズを取得することができ、固定サイズ

を表す列挙型です文脈ですか?どこを定義するのですか?それは私の未解決の識別子のコンテキストを使用して –

+0

あなたのケースではctxです私の欠陥のために申し訳ありません – dragoneye

関連する問題