【问题标题】:Unable to generate multi page PDF in Swift无法在 Swift 中生成多页 PDF
【发布时间】:2017-06-04 13:22:39
【问题描述】:

我有一个包含静态和动态数据的 html 文件,我需要从该 html 文件生成一个 PDF 文件。我可以创建 PDF 文件,但它只打印第一页。我需要一个三页的 PDF 文件。我使用了以下两个函数来绘制和保存 PDF 文件。 我的代码是:

func exportHTMLContentToPDF(HTMLContent: String) {

    let printFormatter = UIMarkupTextPrintFormatter(markupText: HTMLContent)

    let printPageRenderer = CustomPrintPageRenderer()

    printPageRenderer.addPrintFormatter(printFormatter, startingAtPageAt: 0)

    let pdfData = drawPDFUsingPrintPageRenderer(printPageRenderer: printPageRenderer)

    pdfFilename = "\(AppDelegate.getAppDelegate().getDocDir())/FinalPdf.pdf"

    pdfData?.write(toFile: pdfFilename, atomically: true)

    print(pdfFilename)

}

func drawPDFUsingPrintPageRenderer(printPageRenderer: UIPrintPageRenderer) -> NSData! {

    let data = NSMutableData()

    UIGraphicsBeginPDFContextToData(data, CGRect.zero, nil)

    UIGraphicsBeginPDFPage()

    printPageRenderer.drawPage(at: 0, in: UIGraphicsGetPDFContextBounds())

    UIGraphicsEndPDFContext()

    return data

}

为此,我已按照 app coda 教程进行操作。对于多个页面,它表示将 PDF 页面创建的开始和打印页面渲染器绘制成一个循环。请帮我创建多页 PDF。

【问题讨论】:

标签: ios swift pdf


【解决方案1】:

使用下面的代码代替您当前的 drawPDFUsingPrintPageRenderer 函数:

func drawPDFUsingPrintPageRenderer(printPageRenderer: UIPrintPageRenderer) -> NSData! {
    let data = NSMutableData()

    UIGraphicsBeginPDFContextToData(data, CGRect.zero, nil)
    printPageRenderer.prepare(forDrawingPages: NSMakeRange(0, printPageRenderer.numberOfPages))

    let bounds = UIGraphicsGetPDFContextBounds()

    for i in 0...(printPageRenderer.numberOfPages - 1) {
        UIGraphicsBeginPDFPage()
        printPageRenderer.drawPage(at: i, in: bounds)
    }

    UIGraphicsEndPDFContext();
    return data
}

Viola,多页的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-08-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-01
    • 1970-01-01
    • 2015-06-19
    相关资源
    最近更新 更多