Я новичок в Swift, поэтому, пожалуйста, со мной. У меня есть проект, связанный с открытием PDF-файлов. Он устанавливается в Info.plist
. Когда я получаю PDF-вложение по электронной почте, я могу держать палец в приложении PDF, а затем «Открыть в» в своем приложении. В моей AppDelegate
, у меня есть следующие добавления:Сохранить входящий PDF в WebView для памяти
func application(app: UIApplication, openURL url: NSURL, options: [String : AnyObject]) -> Bool {
incomingTransfer = URL
return true
}
incomingTransfer
является Global Variable
объявлена в другом ViewController
как NSURL
. У этого ViewController
также есть UIWebView
, и загружается incomingTransfer
, и я могу видеть новый PDF-файл. Моя цель - иметь кнопку, которая позволяет пользователю сохранять входящий PDF в формате PDF. У меня проблемы с этим. Я думал, что все это выяснилось, но это не спасение как PDF, а скорее как String
. Может кто-то мне помочь, пожалуйста? Моя цель - сохранить входящий файл PDF в формате PDF в память приложения, желательно в DocumentDirectory
. Мне сложно преобразовать Objective C в Swift. Мой первоначальный код для его сохранения был:
let html = String(incomingFileTransfer)
let fmt = UIMarkupTextPrintFormatter(markupText: html)
let render = UIPrintPageRenderer()
render.addPrintFormatter(fmt, startingAtPageAtIndex: 0)
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")
let pdfData = NSMutableData()
UIGraphicsBeginPDFContextToData(pdfData, CGRectZero, nil)
for i in 1...render.numberOfPages() {
UIGraphicsBeginPDFPage();
let bounds = UIGraphicsGetPDFContextBounds()
render.drawPageAtIndex(i - 1, inRect: bounds)
}
UIGraphicsEndPDFContext();
recipeFileName = fileName.text!
print("File Name Entered: \(recipeFileName)")
let documentsPath = NSSearchPathForDirectoriesInDomains(.DocumentDirectory, .UserDomainMask, true)[0]
pdfData.writeToFile("\(documentsPath)/\(recipeFileName).pdf", atomically: true)