Ios Swift将UITextView文本保存为.Pdf、.Doc和.Txt文件格式并显示
在我的场景中,我试图用.pdf、.doc和.txt三种格式保存UITextView文本。在这里,格式化选项用户可以选择基于警报选项。保存后,需要在预览控制器中显示以进行文件共享。如何做到这一点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(
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)")
}