我可以创建pdf文件,但我无法在iPhone设备上找到创建的文件。当我在模拟器上运行它时,可以找到它保存的目录。我在哪里可以将其保存到iPhone预览?
这是创建pdf文件的代码:
func createPDF() {
let html = "<b>Hello <i>World!</i></b> <p>Generate PDF file from HTML in Swift</p>"
let fmt = UIMarkupTextPrintFormatter(markupText: html)
// 2. Assign print formatter to UIPrintPageRenderer
let render = UIPrintPageRenderer()
render.addPrintFormatter(fmt, startingAtPageAtIndex: 0)
// 3. Assign paperRect and printableRect
let page = CGRect(x: 0, y: 0, width: 595.2, height: 841.8) // A4, 72 dpi
let printable = CGRectInset(page, 0, 0)
render.setValue(NSValue(CGRect: page), forKey: "paperRect")
render.setValue(NSValue(CGRect: printable), forKey: "printableRect")
// 4. Create PDF context and draw
let pdfData = NSMutableData()
UIGraphicsBeginPDFContextToData(pdfData, CGRectZero, nil)
for i in 1...render.numberOfPages() {
UIGraphicsBeginPDFPage();
let bounds = UIGraphicsGetPDFContextBounds()
render.drawPageAtIndex(i - 1, inRect: bounds)
}
UIGraphicsEndPDFContext();
// 5. Save PDF file
let documentsPath = NSSearchPathForDirectoriesInDomains(.DocumentDirectory, .UserDomainMask, true)[0]
pdfData.writeToFile("\(documentsPath)/file.pdf", atomically: true)
}
答案 0 :(得分:1)
如果您想要预览它,您需要在您自己的应用程序中以自己的视图租借,或者将该pdf共享给其他应用程序,例如通过电子邮件,whatsapp,页面应用程序或任何其他应用程序共享。< / p>
要分享该pdf,您可以使用UIActivityViewController
。
在这里,我正在添加使用与objective-c相同的代码,您可以根据需要将其转换为swift。
NSString *pdfFilePath = [documentsPath stringByAppendingPathComponent:@"file.pdf"];
NSURL *URL = [NSURL fileURLWithPath:pdfFilePath];
UIActivityViewController *activityViewController =
[[UIActivityViewController alloc] initWithActivityItems:@[@"My PDF File", URL]
applicationActivities:nil];
[self presentViewController:activityViewController
animated:YES
completion:^{
}];
Swift 3.0代码将如下:
let pdfFilePath = "path to file.pdf";
let url = NSURL.fileURL(withPath: pdfFilePath);
let activityVC = UIActivityViewController(activityItems: ["My Pdf File",url], applicationActivities: nil)
self.present(activityVC, animated: true, completion: nil);
答案 1 :(得分:0)
使用
let documentsPath = NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true)[0] + "/file.pdf"
let myRequest = URLRequest(url: URL(fileURLWithPath: documentsPath))
webView.loadRequest(myRequest)
您可以在UIWebView中显示pdf的内容。