2016-03-04 3 views
0

Я пытаюсь создать простой pdf-файл с CGPDFContextCreateWithURL, но когда я показываю pdf, он пуст. Мой код:PDF является пустой страницей при использовании CGPDFContextCreateWithURL

Мой drawSuperPDF() функция

func drawSuperPDF(filename: String) { 

    let documentsURL = NSFileManager.defaultManager().URLsForDirectory(.DocumentDirectory, inDomains: .UserDomainMask)[0] 
    let pdfFileName = documentsURL.URLByAppendingPathComponent(filename) 
    let fullPath = pdfFileName.path! 

    let url = NSURL(fileURLWithPath: fullPath) 


    var mediaBox:CGRect = CGRectMake(0, 0, 612, 792) 


    let myPDFContext = CGPDFContextCreateWithURL(url, &mediaBox, nil) 


    drawHeaders() 



CGPDFContextEndPage(myPDFContext) 


} 

Мои drawHeaders() и drawHeaderText() функции

func drawHeaders() { 


    drawHeaderText(CGPoint(x: 30, y: 10), headerText: "Hello World:", underline: true) 


    drawHeaderText(CGPoint(x: 30, y: 25), headerText: "Hello World:", underline: true) 


    drawHeaderText(CGPoint(x: 30, y: 40), headerText: "Hello World:", underline: true) 


    drawHeaderText(CGPoint(x: 30, y: 70), headerText: "Hello World:", underline: true) 




} 

func drawHeaderText(point: CGPoint, headerText: String, underline: Bool) { 

    let drawingPoint = CGPoint(x: point.x, y: point.y) 

    if underline { 


     var multipleAttributes = [String : NSObject]() 
     multipleAttributes[NSFontAttributeName] = UIFont.boldSystemFontOfSize(12) 
     multipleAttributes[NSUnderlineStyleAttributeName] = NSUnderlineStyle.StyleSingle.rawValue 


     headerText.drawAtPoint(drawingPoint, 
      withAttributes: multipleAttributes) 


    } else { 

     let font = UIFont.systemFontOfSize(12) 
     headerText.drawAtPoint(drawingPoint, 
      withAttributes: [NSFontAttributeName : font])} 

} 

И, наконец, мой showPDFFile()

func showPDFFile() { 

    let fileName = "test4.pdf" 
    let documentsURL = NSFileManager.defaultManager().URLsForDirectory(.DocumentDirectory, inDomains: .UserDomainMask)[0] 
    let pdfFileName = documentsURL.URLByAppendingPathComponent(fileName) 
    let fullPath = pdfFileName.path! 
    let webView : UIWebView = UIWebView(frame: CGRectMake(0, 0, self.view.frame.width, self.view.frame.height)) 
    let url : NSURL = NSURL(fileURLWithPath: fullPath) 
    let request : NSURLRequest = NSURLRequest(URL: url) 

    webView.scalesPageToFit = true 
    webView.loadRequest(request) 

    self.view.addSubview(webView) 


} 
+0

Вы вызываете «CGPDFContextEndPage», но не вызов BeginPage. Я был бы удивлен, если бы это не было необходимо, прежде чем вы начнете рисовать на странице. –

+0

Спасибо, Дэвид, я добавил CGPDFContextBeginPage (myPDFContext, nil) , и теперь я могу рисовать простые фигуры с использованием основной графики, но не могу рисовать текст - очень расстраивающе. – Tom

+0

:) Не может быть всего. Я напишу это как ответ. Пожалуйста, подтвердите это как правильное и задайте новый вопрос для текста, возможно, что-то, что вы делаете неправильно с текстовыми вызовами, но должно быть достаточно простым для определения. –

ответ

0

Прежде чем вы начнете рисовать в формате PDF страницы, вам нужно «запустить» страницу, позвонив по номеру CGPDFContextBeginPage. Вызовы для начала страницы и конечной страницы должны быть сбалансированы, кстати.

Смежные вопросы