我有一个可以查看已存储在项目中的PDF的应用程序。我希望能够创建一个新的PDF文档并将其存储在应用程序目录中,以便稍后在现有查看器中查看。 PDF将通过显示在UITableView
上的数组var todoList: [String] = []
创建。我知道要创建一个PDF,我必须创建一个文件名,路径和目录。我不知道该怎么做。我看到了对URL和URL请求的在线引用,但我不确定这是否是我想要的正确途径。有人能给我一些建议和指导吗?我能找到的所有东西都是Objective-C。使用Swift for iOS以编程方式创建和存储PDF文档
回答
我用这个代码来创建和保存文件(使用HTML)
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)
}
然后我装成UIWebView
从文档目录,此代码:
func loadPDF(filename: String) {
let documentsPath = NSSearchPathForDirectoriesInDomains(.DocumentDirectory, .UserDomainMask, true)[0]
let filePath = "\(documentsPath)/\(filename).pdf"
let url = NSURL(fileURLWithPath: filePath)
let urlRequest = NSURLRequest(URL: url)
webView.loadRequest(urlRequest)
}
你帮助了我,这是一个很大的帮助。我现在有一个传入的PDF,正在从'NSURL'中查看,我想将它保存为新的PDF。我找不到Swift 2上的任何内容。你能帮忙吗? – ChallengerGuy
您应该使用[Alamofire](https://github.com/Alamofire/Alamofire#downloading-a-file)下载您的PDF。 –
图像不使用这种方法呈现在pdf内部。任何想法 ? – Max
对于斯威夫特3:
createPdf() {
// 1. Create Print Formatter with input text.
let formatter = UIMarkupTextPrintFormatter(markupText: textView.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)/new.pdf", atomically: true)
print("saved success")
}
这怎么能保存到临时目录? – Derry
- 1. 如何使用swift以编程方式将pdf文档保存到iCloud Drive?
- 2. Java以编程方式创建并保存Google文档
- 3. 以编程方式创建PDF相册
- 4. 如何以编程方式在Google文档中创建文档?
- 5. 如何以编程方式从PDF文件创建PDF书签?
- 6. 使用XSD以编程方式创建XML文档
- 7. 以编程方式创建可滚动下拉菜单(iOS/Swift)
- 8. 如何在iOS中以编程方式创建PDF
- 9. 以编程方式创建NSObjects ios
- 10. 以编程方式创建存储过程
- 11. PHPExcel创建/样式/保存PDF文档
- 12. 如何以编程方式在iOS中使用swift创建组织相册?
- 13. HTML to PDF与通过PHP以编程方式创建PDF
- 14. [iOS] [Swift]以编程方式为新闻应用程序内容创建布局
- 15. 以编程方式在PDF文件中创建链接
- 16. 使用Microsoft.Web.Administration以编程方式创建
- 17. 以编程方式在swift中以编程方式创建scrollview无插座
- 18. 如何通过模板以编程方式创建Word文档
- 19. 使用Objective-C以编程方式创建TableVIew iOS
- 20. 以编程方式创建scenekit文件(swift)
- 21. 以编程方式为本地存储库创建NuGet包
- 22. 以编程方式创建Word 2010文档
- 23. 以编程方式创建ViewController和awakeFromNiB?
- 24. 以可编程方式在可可中创建新文档
- 25. 以编程方式创建.pfx文件
- 26. 以编程方式创建designer.cs文件
- 27. 以编程方式创建ZIP文件
- 28. 以编程方式编写PDF文件
- 29. 如何使用genshi.builder以编程方式构建HTML文档?
- 30. 在iOS中以编程方式创建AAC文件?
一旦你有'NSData'对于PDF,使用'NSData'的方法将数据写入路径。 – rmaddy
我有NSData,但是如何将它作为PDF写入路径? – ChallengerGuy
首先查看'NSData'的文档并找到用于将其写入文件的方法。 – rmaddy