Creating PDF file from UIWebView

后端 未结 6 1939
天命终不由人
天命终不由人 2020-11-29 19:10
 -(void)createPDFfromUIView:(UIView*)aView saveToDocumentsWithFileName:(NSString*)aFilename
{
    // Creates a mutable data object for updating with binary data, lik         


        
6条回答
  •  Happy的楠姐
    2020-11-29 19:41

    Swift 2.0 solution, how to save pdf from webview to NSData:

    func webViewDidFinishLoad(webView: UIWebView) {
        let pdfData = createPdfFile(webView.viewPrintFormatter())
        pdfData.writeToFile("/path/to/file", atomically: true)
    }
    
    func createPdfFile(printFormatter: UIViewPrintFormatter) -> NSData {
        let renderer = UIPrintPageRenderer()
        renderer.addPrintFormatter(printFormatter, startingAtPageAtIndex: 0);
        let paperSize = CGSizeMake(self.view.frame.size.width, self.view.frame.size.height)
        let printableRect = CGRectMake(0, 0, paperSize.width, paperSize.height)
        let paperRect = CGRectMake(0, 0, paperSize.width, paperSize.height);
        renderer.setValue(NSValue(CGRect: paperRect), forKey: "paperRect")
        renderer.setValue(NSValue(CGRect: printableRect), forKey: "printableRect")
        return renderer.printToPDF()
    }
    

    You also need to add UIWebViewDelegate to your ViewController and extension for UIPrintPageRenderer.

    extension UIPrintPageRenderer {
        func printToPDF() -> NSData {
            let pdfData = NSMutableData()
            UIGraphicsBeginPDFContextToData(pdfData, self.paperRect, nil)
            self.prepareForDrawingPages(NSMakeRange(0, self.numberOfPages()))
            let bounds = UIGraphicsGetPDFContextBounds()
            for i in 0..

提交回复
热议问题