2016-11-17 1 views
3

나는 모든 셀에 대해 tableview의 pdf를 만들었습니다. 하지만 난 PDF 파일을 만들면 테이블 뷰의 모든 데이터를 표시하지 않습니다 & 때도 pdf 페이지 높이가 셀 데이터에 따라 설정됩니다. 이 문제를 해결하는 방법을 모른다. pdf.please 작성을 위해이 코드를 사용하고 있습니다.모든 데이터를 테이블 뷰의 PDF로 만들기

let _: NSData! 
     do { 
      let priorBounds = table_view.bounds 
      let fittedSize = table_view.sizeThatFits(CGSizeMake(priorBounds.size.width, .infinity)) 
      table_view.bounds = CGRectMake(0, 0, fittedSize.width, fittedSize.height) 
      let pdfPageBounds = CGRectMake(0, 0, 612, 800) 
      let pdfData = NSMutableData() 
      UIGraphicsBeginPDFContextToData(pdfData, pdfPageBounds, nil) 
      do { 
       var pageOriginY = 0 
       while pageOriginY < Int(fittedSize.height) { 
        UIGraphicsBeginPDFPageWithInfo(pdfPageBounds, nil) 
        CGContextSaveGState(UIGraphicsGetCurrentContext()!) 
        do { 
         CGContextTranslateCTM(UIGraphicsGetCurrentContext()!, 0, -CGFloat(pageOriginY)) 
         table_view.layer.renderInContext(UIGraphicsGetCurrentContext()!) 
        } 
        CGContextRestoreGState(UIGraphicsGetCurrentContext()!) 
        pageOriginY += Int(pdfPageBounds.size.height) 
       } 
      } 
      UIGraphicsEndPDFContext() 
      table_view.bounds = priorBounds 
      if let documentDirectories = NSSearchPathForDirectoriesInDomains(.DocumentDirectory, .UserDomainMask, true).first { 
       let documentsFileName = documentDirectories + "/" + (filename as String) 
       debugPrint(documentsFileName) 
       pdfData.writeToFile(documentsFileName, atomically: true) 
      } 
     } 

답변

2

시도해보십시오. 다음과 같이 아래 Rajeskumar의 대답에

func createPdfFromTableView() 
{ 
    let priorBounds: CGRect = self.tblView.bounds 
    let fittedSize: CGSize = self.tblView.sizeThatFits(CGSize(width: priorBounds.size.width, height: self.tblView.contentSize.height)) 
    self.tblView.bounds = CGRect(x: 0, y: 0, width: fittedSize.width, height: fittedSize.height) 
    self.tblView.reloadData() 
    let pdfPageBounds: CGRect = CGRect(x: 0, y: 0, width: fittedSize.width, height: (fittedSize.height)) 
    let pdfData: NSMutableData = NSMutableData() 
    UIGraphicsBeginPDFContextToData(pdfData, pdfPageBounds, nil) 
    UIGraphicsBeginPDFPageWithInfo(pdfPageBounds, nil) 
    self.tblView.layer.render(in: UIGraphicsGetCurrentContext()!) 
    UIGraphicsEndPDFContext() 
    let documentDirectories = NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true).first 
    let documentsFileName = documentDirectories! + "/" + "pdfName" 
    pdfData.write(toFile: documentsFileName, atomically: true) 
    print(documentsFileName) 
} 
+0

UIactivityviewcontroller를 사용하여 만든 파일을 어떻게 공유 하시겠습니까? –

0

하나 개 추가는 다음과 같습니다

원래의 경계를 가지는 전체 장치 화면을 차지하지 않는 jQuery과, 당신은 다음 줄을 삽입 할 수있는 경우 :

self.tblview.bounds = priorBounds 
을 렌더링 단계 (in :) 단계 후

그렇지 않으면 테이블은 원래 의도했던 것보다 많은 공간을 커버하는 방식으로 장치에 그려집니다.

+0

안녕 위의 내용을 어디에 추가 하시겠습니까? –

+0

렌더링 후 (in : 단계. – Diskprotek

관련 문제