Ios 访问iPhone上创建的pdf文件

Ios 访问iPhone上创建的pdf文件,ios,iphone,swift,Ios,Iphone,Swift,我可以创建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 = UIMarkupT

我可以创建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)
}
func createPDF(){
让html=“Hello World!在Swift中从html生成PDF文件”
设fmt=UIMarkupTextPrintFormatter(markupText:html)
//2.将打印格式化程序分配给UIPrintPageRenderer
让render=UIPrintPageRenderer()
render.addPrintFormatter(fmt,起始页面索引:0)
//3.分配paperRect和printableRect
让page=CGRect(x:0,y:0,宽度:595.2,高度:841.8)//A4,72 dpi
让printable=CGRectInset(第0页,第0页)
render.setValue(NSValue(CGRect:page),forKey:“paperRect”)
render.setValue(NSValue(CGRect:printable),forKey:“printableRect”)
//4.创建PDF上下文并绘制
设pdfData=NSMutableData()
UIGraphicsBeginPDFContextToData(pdfData、CGRectZero、nil)
对于1中的i…render.numberOfPages(){
UIGraphicsBeginPDFPage();
let bounds=UIGraphicsGetPDFContextBounds()
render.drawPageAtIndex(i-1,inRect:bounds)
}
UIGraphicsSendPdfContext();
//5.保存PDF文件
让documentsPath=NSSearchPathForDirectoriesInDomains(.DocumentDirectory、.UserDomainMask,true)[0]
pdfData.writeToFile(“\(documentsPath)/file.pdf”,原子性:true)
}

如果你想预览它,你需要在你自己的应用程序中以自己的视图租用,或者以其他方式将该pdf共享到其他应用程序,如通过电子邮件、whatsapp、pages应用程序或任何其他应用程序共享

要共享该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);
使用


你可以在UIWebView中显示pdf的内容。

print((documentsPath))@Vinodh我可以在Mac上看到这个文件夹,但问题是我在iPhone上看不到。我制作了UIAlertController,并在上面打印了文档SPATH。然后我看到它保存在iPhone上的位置,但仍然无法访问。希望您能理解我的意思是使用iExplorer应用程序查看或访问iPhone中的文档目录我现在对ios编程还不熟悉。你能帮我把它转换成Swift吗。那我可以试试。你用的是哪种swift版本?我用的是swift 3。我真的很感激。
let documentsPath = NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true)[0] + "/file.pdf"
    let myRequest = URLRequest(url: URL(fileURLWithPath: documentsPath))
    webView.loadRequest(myRequest)