我有一个与打开PDF文件相关的项目。这是在Info.plist
中设置的。当我在电子邮件中收到PDF附件时,我可以用手指按住PDF附件,然后在我的应用程序中“打开”。在我的AppDelegate
中,我添加了以下内容:
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)
1条答案
按热度按时间gjmwrych1#
我想明白了。我创建了一个名为“PDFFile”的
class
。在“PDFFile”中有两个variables
,分别名为var name: String
和var url: NSURL
。在我的“IncomingTransfer”ViewController
中,我有“保存”button
使用UITextField
中的键入名称创建并保存新文件,并且将AppDelegate
中指定的incomingURL分配给url
variable
。然后使用NSCoding
将两者保存到PDFFile
类中。然后,我从PDFFileClass
array
数据中为dataSource
设置一个UITableView
。当用户单击UITableViewCell
时,我创建了一个segue
,并将其转到一个新的ViewController
,其中包含UIWebView
。此WebView
使用指定的url
变量(从NSCoding
保存)从urlRequest
加载PDF。AppDelegate
代码:传入文件代码并保存
button
代码:稍后查看保存的传入PDF
ViewController
代码:// MARK:属性@IBOutlet弱变量pdfItemWebView:UI网页视图!这很复杂,但对我很有效。可能有一个更简单的方法,但这是我想出来的,它适合我的需要。