Create and store PDF document programmatically using Swift for iOS

前端 未结 2 1505
灰色年华
灰色年华 2020-12-04 20:35

I have an app that can view a PDF that is already stored within the project. I want to be able to create a new PDF document and store it in the app directory to later view

2条回答
  •  既然无缘
    2020-12-04 21:08

    For Swift 3:

    createPdf() {
        // 1. Create Print Formatter with input text.
    
        let formatter = UIMarkupTextPrintFormatter(markupText: textView.text)
    
        // 2. Add formatter with pageRender
    
        let render = UIPrintPageRenderer()
        render.addPrintFormatter(formatter, startingAtPageAt: 0)
    
    
        // 3. Assign paperRect and printableRect
    
        let page = CGRect(x: 0, y: 0, width: 595.2, height: 841.8) // A4, 72 dpi
        let printable = page.insetBy(dx: 0, dy: 0)
    
        render.setValue(NSValue(cgRect: page), forKey: "paperRect")
        render.setValue(NSValue(cgRect: printable), forKey: "printableRect")
    
    
        // 4. Create PDF context and draw
        let rect = CGRect.zero
    
        let pdfData = NSMutableData()
        UIGraphicsBeginPDFContextToData(pdfData, rect, nil)
    
    
        for i in 1...render.numberOfPages {
    
            UIGraphicsBeginPDFPage();
            let bounds = UIGraphicsGetPDFContextBounds()
            render.drawPage(at: i - 1, in: bounds)
        }
    
        UIGraphicsEndPDFContext();
    
    
        // 5. Save PDF file
    
        let documentsPath = NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true)[0]
    
        pdfData.write(toFile: "\(documentsPath)/new.pdf", atomically: true)
    
        print("saved success")
    }
    

提交回复
热议问题