使用Swift 2.0生成PDF

时间:2016-05-22 18:43:45

标签: ios swift pdf

所以我想用swift生成一个PDF。我一直试图从目标C转换为快速,现在有一些错误,我不知道如何解决。

以下是代码:

@IBAction func createPDFOnClick(sender: AnyObject!)
{
    pageSize = CGSizeMake(850,1100)
    let fileName: String = "makeME.pdf"
    var path: [AnyObject] = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask,true)
    let documentDirectory: String = path[0] as! String
    let pdfPathWithFileName: String = documentDirectory.stringByAppendingString(fileName)
    self.createPDF(pdfPathWithFileName)

}

func createPDF(filePath: String){

 UIGraphicsBeginPDFContextToFile(filePath,CGRectZero,nil)
 UIGraphicsBeginPDFPageWithInfo(CGRectMake(0,0,850,1100),nil)
 self.drawBackground()
 self.drawText()
 UIGraphicsEndPDFContext()

}

func drawBackground() {
    let context: CGContextRef = UIGraphicsGetCurrentContext()!
    let rect: CGRect = CGRectMake(0,0,pageSize!.width,pageSize!.height)
    CGContextSetFillColorWithColor(context,UIColor.whiteColor().CGColor)
    CGContextFillRect(context,rect)
}

func drawText() {
    var context: CGContextRef = UIGraphicsGetCurrentContext()!
    CGContextSetFillColorWithColor(context,UIColor.blackColor().CGColor)
    var textRect: CGRect = CGRectMake(0,0,[[self myTextView]frame].size.with, self.myTextView.frame.size.height)
    var myString: String = self.myTextView.text!
    myString.drawInRect(textRect)
}

我的错误如下:

  

var path:[AnyObject] = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask,true)

我收到错误"使用未解析的标识符"

  

var textRect:CGRect = CGRectMake(0,0,[[self myTextView] frame] .size.with,self.myTextView.frame.size.height)

我在这里得到"期待分隔符"

提前致谢。

1 个答案:

答案 0 :(得分:2)

您的错误与PDF创建几乎没有关系,并且与Swift语法有关。

  1. 指定目录的参数将作为enum导入Swift。因此,对于目录,您的输入应该是NSSearchPathDirectory的某种情况,例如NSSearchPathDirectory.DocumentDirectory(或者更简洁.DocumentDirectory)。 NSSearchPathDomainMask是带有静态常量的struct,因此它被视为struct。例如,NSSearchPathDomainMask.UserDomainMask(或更简洁.UserDomainMask)。
  2. 您的第二个参数不是Swift语法。尝试:

    var textRect = CGRect(0,0,self.myTextView.frame.size.width, self.myTextView.frame.size.height)