使用Swift for iOS以编程方式创建和存储PDF文档

挑战者

我有一个可以查看项目中已经存储的PDF的应用程序。我希望能够创建一个新的PDF文档并将其存储在app目录中,以便以后在已存在的查看器中查看。将通过var todoList: [String] = []显示在上的数组创建PDF UITableView我知道要创建PDF,必须创建文件名,路径和目录。我不知道该怎么做。我在网上看到了有关URL和URL请求的参考,但是我不确定这是否是我想要做的正确方法。有人可以给我一些建议和指导吗?我所能找到的一切都是针对Objective-C的。

丹尼·纳尔维兹(Danny Narvaez)

我使用此代码创建和保存文件(使用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, 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 pdfData = NSMutableData()
    UIGraphicsBeginPDFContextToData(pdfData, .zero, 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)/file.pdf", atomically: true)
}

然后,UIWebView使用以下代码将其从documents目录加载

func loadPDF(filename: String) {
    let documentsPath = NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true)[0]
    let url = URL(fileURLWithPath: documentsPath, isDirectory: true).appendingPathComponent(filename).appendingPathExtension("pdf")
    let urlRequest = URLRequest(url: url)
    webView.loadRequest(urlRequest)
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Swift 3 尝试以编程方式创建和使用 UINavigationController

来自分类Dev

使用swift在iOS上以编程方式创建热点

来自分类Dev

使用Fabric.js以编程方式创建和选择组

来自分类Dev

如何以编程方式创建和使用UIcollectionView?

来自分类Dev

在iOS Swift中以编程方式创建Segues

来自分类常见问题

如何使用Swift以编程方式创建UILabel?

来自分类Dev

Swift 框架的创建和使用

来自分类Dev

以编程方式创建可滚动的下拉菜单(iOS / Swift)

来自分类Dev

iOS/Swift 4:从以编程方式创建的标签更改颜色

来自分类Dev

以编程方式在swift ios中创建复选框按钮

来自分类Dev

iOS:使用IB创建按钮与以编程方式创建按钮

来自分类Dev

如何以编程方式使用Java客户端创建和发布索引

来自分类Dev

有什么方法可以以编程方式创建和使用展开序列吗?

来自分类Dev

使用Button和Title Swift以编程方式创建NavBar

来自分类Dev

在Swift中使用以编程方式创建的UITableViewCell子类

来自分类Dev

如何使用Swift以编程方式创建Hexagon UIButton或Clickable ImageView

来自分类Dev

在Swift中使用绑定以编程方式创建基于视图的NSTableView

来自分类Dev

如何使用 Swift 在 iOS 中以编程方式呈现弹出窗口?

来自分类Dev

以编程方式创建NavigationController(Swift)

来自分类Dev

如何创建和使用自定义字体来生成PDF文档

来自分类Dev

iOS SDK:关于在以编程方式创建对象时使用属性?

来自分类Dev

我应该使用什么角色以编程方式在 Cloudant/BigCouch/CouchDB 中创建和删除数据库?

来自分类Dev

Swift-以编程方式创建Views Issue,无法找到存储的属性

来自分类Dev

使用swift以编程方式进行UITableView

来自分类Dev

如何使用Swift以编程方式分配IBOutlet?

来自分类Dev

如何使用Swift以编程方式粘贴?

来自分类Dev

渐变视图无法以编程方式使用 swift

来自分类Dev

使用BAPI_GOODSMVT_CREATE以编程方式创建文档批处理吗?

来自分类Dev

如何使用Swift创建以编程方式创建Hexagon UIButton或Clickable ImageView

Related 相关文章

  1. 1

    Swift 3 尝试以编程方式创建和使用 UINavigationController

  2. 2

    使用swift在iOS上以编程方式创建热点

  3. 3

    使用Fabric.js以编程方式创建和选择组

  4. 4

    如何以编程方式创建和使用UIcollectionView?

  5. 5

    在iOS Swift中以编程方式创建Segues

  6. 6

    如何使用Swift以编程方式创建UILabel?

  7. 7

    Swift 框架的创建和使用

  8. 8

    以编程方式创建可滚动的下拉菜单(iOS / Swift)

  9. 9

    iOS/Swift 4:从以编程方式创建的标签更改颜色

  10. 10

    以编程方式在swift ios中创建复选框按钮

  11. 11

    iOS:使用IB创建按钮与以编程方式创建按钮

  12. 12

    如何以编程方式使用Java客户端创建和发布索引

  13. 13

    有什么方法可以以编程方式创建和使用展开序列吗?

  14. 14

    使用Button和Title Swift以编程方式创建NavBar

  15. 15

    在Swift中使用以编程方式创建的UITableViewCell子类

  16. 16

    如何使用Swift以编程方式创建Hexagon UIButton或Clickable ImageView

  17. 17

    在Swift中使用绑定以编程方式创建基于视图的NSTableView

  18. 18

    如何使用 Swift 在 iOS 中以编程方式呈现弹出窗口?

  19. 19

    以编程方式创建NavigationController(Swift)

  20. 20

    如何创建和使用自定义字体来生成PDF文档

  21. 21

    iOS SDK:关于在以编程方式创建对象时使用属性?

  22. 22

    我应该使用什么角色以编程方式在 Cloudant/BigCouch/CouchDB 中创建和删除数据库?

  23. 23

    Swift-以编程方式创建Views Issue,无法找到存储的属性

  24. 24

    使用swift以编程方式进行UITableView

  25. 25

    如何使用Swift以编程方式分配IBOutlet?

  26. 26

    如何使用Swift以编程方式粘贴?

  27. 27

    渐变视图无法以编程方式使用 swift

  28. 28

    使用BAPI_GOODSMVT_CREATE以编程方式创建文档批处理吗?

  29. 29

    如何使用Swift创建以编程方式创建Hexagon UIButton或Clickable ImageView

热门标签

归档