Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/113.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios Swift将UITextView文本保存为.Pdf、.Doc和.Txt文件格式并显示_Ios_Swift - Fatal编程技术网

Ios Swift将UITextView文本保存为.Pdf、.Doc和.Txt文件格式并显示

Ios Swift将UITextView文本保存为.Pdf、.Doc和.Txt文件格式并显示,ios,swift,Ios,Swift,在我的场景中,我试图用.pdf、.doc和.txt三种格式保存UITextView文本。在这里,格式化选项用户可以选择基于警报选项。保存后,需要在预览控制器中显示以进行文件共享。如何做到这一点 func createPDF(text:String, filename:String) { // 1. Create Print Formatter with input text. let formatter = UIMarkupTextPrintFormatter(

在我的场景中,我试图用.pdf、.doc和.txt三种格式保存UITextView文本。在这里,格式化选项用户可以选择基于警报选项。保存后,需要在预览控制器中显示以进行文件共享。如何做到这一点

func createPDF(text:String, filename:String) {

        // 1. Create Print Formatter with input text.
        let formatter = UIMarkupTextPrintFormatter(markupText: 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)/\(filename).pdf", atomically: true)
        print("saved success:\(documentsPath)\(filename)")
        listFiles()
    }
请尝试以下代码:)


如果我理解正确,您需要显示文档
您可以使用
qlviewcontroller

更多信息请访问-



qlviewcontroller
拥有共享控制权

谢谢@MuhammadBassio。顺便说一下.txt和.doc文件怎么样。是否可以使用相同的功能进行存储?确定。谢谢@MuhammadBassiomy我的问题是如何将textview.text创建为.pdf、.docx和.txt。要转换并保存为本地和共享期权。基于您上面的代码看起来是覆盖过程。请你进一步澄清一下好吗?检查更新的答案:),不确定
.doc
let txtData = Data(textView.txt.utf8)
do {
        let documentsPath = NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true)[0]
        let filePath = (documentsPath as NSString).appendingPathComponent("\(filename).pdf")
        let url = URL(fileURLWithPath: filePath)
        // pdfData created by your code above
        // txtData for ".txt"
        pdfData.write(to: url)

        let activityVC = UIActivityViewController(activityItems: [url], applicationActivities: nil)

        // Use your desired viewController here, or just use the rootViewController
        UIApplication.shared.keyWindow?.rootViewController?.presentViewController(activityVC, animated: true, completion: nil)
    } catch (let error) {
        print("\(error)")
    }