如何为[String]数组创建的PDF添加边距以进行打印?

时间:2016-07-14 16:09:04

标签: ios arrays pdf swift2 margins

我正在使用iOSXcode7进行Swift2项目。我有一个array保存在UITableView中。我有一个导出UIButton,其中包含array中的内容并将strings分开并逐行放入PDF中,每行都是一个独立的string

变量包括:

var pdfData = NSMutableData()
bookList: [String] = []

这是我的代码的一部分:

    // Loop through book list, increasing each one and displaying individually as string items for body
    for i in 0 ..< bookList.count {
        body += "<p><font size=3><br>\(bookList[i] as String)</br></font></p>"
    }

    html = "\(body)"

    let fmt = UIMarkupTextPrintFormatter(markupText: html)

    // Assign print formatter to UIPrintPageRenderer

    let render = UIPrintPageRenderer()
    render.addPrintFormatter(fmt, startingAtPageAtIndex: 0)

    // 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")

    // 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()

当此PDF文件稍后附在电子邮件中时,它没有任何真正的边距,如果用户想要打印它,它会切断一些东西。如果根据array长度创建一个边距,如何在每个页面或页面周围添加1英寸边距?谢谢。

1 个答案:

答案 0 :(得分:1)

我将页面布局调整为:

 let page = CGRect(x: 50, y: 50, width: 600, height: 750)

这给了我想要的利润。