How to draw text in PDF context in Swift?

南笙酒味 提交于 2019-11-26 20:42:51

问题


I have a simple function that create pdf file and return its path.

func createPDFFileAndReturnPath() -> String {

    let fileName = "pdffilename.pdf"
    let paths = NSSearchPathForDirectoriesInDomains(.LibraryDirectory, .UserDomainMask, true)
    let documentsDirectory = paths[0]
    let pathForPDF = documentsDirectory.stringByAppendingString("/" + fileName)

    UIGraphicsBeginPDFContextToFile(pathForPDF, CGRectZero, nil)

    UIGraphicsBeginPDFPageWithInfo(CGRectMake(0, 0, 100, 400), nil)

    let text = "text" //how to print this in whatever place?

    //text.drawInRect - this doesn't work

    UIGraphicsEndPDFContext()

    return pathForPDF
}

回答1:


Here is your function:

func createPDFFileAndReturnPath() -> String {

    let fileName = "pdffilename.pdf"
    let paths = NSSearchPathForDirectoriesInDomains(.DocumentDirectory, .UserDomainMask, true)
    let documentsDirectory = paths[0] as! NSString
    let pathForPDF = documentsDirectory.stringByAppendingString("/" + fileName)

    UIGraphicsBeginPDFContextToFile(pathForPDF, CGRectZero, nil)

    UIGraphicsBeginPDFPageWithInfo(CGRectMake(0, 0, 100, 400), nil)

    let font = UIFont(name: "Helvetica Bold", size: 14.0)

    let textRect = CGRectMake(5, 3, 125, 18)
    var paragraphStyle:NSMutableParagraphStyle = NSMutableParagraphStyle.defaultParagraphStyle().mutableCopy() as! NSMutableParagraphStyle
    paragraphStyle.alignment = NSTextAlignment.Left
    paragraphStyle.lineBreakMode = NSLineBreakMode.ByWordWrapping

    let textColor = UIColor.blackColor()

    let textFontAttributes = [
        NSFontAttributeName: font!,
        NSForegroundColorAttributeName: textColor,
        NSParagraphStyleAttributeName: paragraphStyle
    ]

    let text:NSString = "Hello world"

    text.drawInRect(textRect, withAttributes: textFontAttributes)

    UIGraphicsEndPDFContext()

    return pathForPDF
}



回答2:


Sebastian's Answer - Updated for Swift 4.2

func createPDFFileAndReturnPath() -> String {

    let fileName = "pdffilename.pdf"
    let paths = NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true)
    let documentsDirectory = paths[0] as NSString
    let pathForPDF = documentsDirectory.appending("/" + fileName)

    UIGraphicsBeginPDFContextToFile(pathForPDF, CGRect.zero, nil)

    UIGraphicsBeginPDFPageWithInfo(CGRect(x: 0, y: 0, width: 100, height: 400), nil)

    let font = UIFont(name: "System", size: 14.0)

    let textRect = CGRect(x: 5, y: 3, width: 125, height: 18)
    let paragraphStyle:NSMutableParagraphStyle = NSMutableParagraphStyle.default.mutableCopy() as! NSMutableParagraphStyle
    paragraphStyle.alignment = NSTextAlignment.left
    paragraphStyle.lineBreakMode = NSLineBreakMode.byWordWrapping

    let textColor = UIColor.black

    let textFontAttributes = [
        NSAttributedString.Key.font: font!,
        NSAttributedString.Key.foregroundColor: textColor,
        NSAttributedString.Key.paragraphStyle: paragraphStyle
    ]

    let text:NSString = "Hello world"

    text.draw(in: textRect, withAttributes: textFontAttributes)

    UIGraphicsEndPDFContext()

    return pathForPDF
}


来源:https://stackoverflow.com/questions/32113468/how-to-draw-text-in-pdf-context-in-swift

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!