2016-08-23 13 views
1

私はiOSアプリケーションでPDF/Aファイルを作成したいのですが、実際にどこから起動するのかはわかりません。SwiftでPDF/Aファイルを作成するには?

(簡単なPDFを生成します)私の実際のコードは次のとおりです。

_ = UIGraphicsBeginPDFContextToFile(temporaryPdfFilePath, paperSize, nil) 
UIGraphicsBeginPDFPageWithInfo(paperSize, nil) 
let currentContext: CGContextRef = UIGraphicsGetCurrentContext()! 

...描く...

UIGraphicsEndPDFContext() 

はフォローする任意のAPIまたは何か他のものはありますか?

+0

ねえ、あなたは解決策を見つけましたか? :) – ReasyEasyPeasy

+0

いいえ、私はそれについてたくさん試しましたが、何もしません:( – Alleria

答えて

4

htmlファイルを準備してpdfに変換します。 スウィフト3.0バージョン

func drawPDFUsingPrintPageRenderer(printPageRenderer: UIPrintPageRenderer) -> NSData! { 
    let data = NSMutableData() 
    UIGraphicsBeginPDFContextToData(data, CGRect.zero, nil) 
    UIGraphicsBeginPDFPage() 
    printPageRenderer.drawPage(at: 0, in: UIGraphicsGetPDFContextBounds()) 
    UIGraphicsEndPDFContext() 
    return data 
} 

func exportHTMLContentToPDF(HTMLContent: String) { 
    let printPageRenderer = CustomPrintPageRenderer() 
    let printFormatter = UIMarkupTextPrintFormatter(markupText: HTMLContent) 
    printPageRenderer.addPrintFormatter(printFormatter, startingAtPageAt: 0) 
    let pdfData = drawPDFUsingPrintPageRenderer(printPageRenderer: printPageRenderer) 
    let pdfFilename = getDocumentsDirectory().appendingPathComponent("nameOfPDFfile.pdf") 

    pdfData?.write(to: pdfFilename, atomically: true) 
    } 
} 

グレートチュートリアル:http://www.appcoda.com/pdf-generation-ios/

+0

とにかく、HTMLを使用せずに、ちょうど_swift_を使用して、** PrintDocument **のようにC#でですか? –

0
// 
// ViewController.swift 
// Ganrate_pdf 
// 
// Created by Tops on 3/23/17. 
// Copyright © 2017 tops. All rights reserved. 
// 

import UIKit 

class ViewController: UIViewController { 

    @IBOutlet weak var lbl_name: UILabel! 
    @IBOutlet weak var web_view: UIWebView! 
    override func viewDidLoad() { 
     super.viewDidLoad() 
      // create html code 
      let html = "<b>Welcome <i>World!</i></b> <p><h1><font color='red'>This is PDF file In swift 3.0</font></h1></p>" 
      let frmt = UIMarkupTextPrintFormatter(markupText: html) 

      // set print format 

      let render = UIPrintPageRenderer() 
      render.addPrintFormatter(frmt, startingAtPageAt: 0) 

      // Create Paper Size for print 

      let page = CGRect(x: 0, y: 0, width: 595.2, height: 841.8) 
      let printable = page.insetBy(dx: 0, dy: 0) 

      render.setValue(NSValue(cgRect: page), forKey: "paperRect") 
      render.setValue(NSValue(cgRect: printable), forKey: "printableRect") 

      // 4. Create PDF context and draw 

      let filedata = NSMutableData() 
      UIGraphicsBeginPDFContextToData(filedata, CGRect.zero, nil) 

      for i in 1...render.numberOfPages { 

       UIGraphicsBeginPDFPage(); 
       let bounds = UIGraphicsGetPDFContextBounds() 
       render.drawPage(at: i - 1, in: bounds) 
      } 

      UIGraphicsEndPDFContext(); 

      // 5. Save PDF file you can also save this file by using another button 


      let documentsPath = NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true)[0] 

      filedata.write(toFile: "\(documentsPath)/myfile.pdf", atomically: true) 

      } 

    override func didReceiveMemoryWarning() { 
     super.didReceiveMemoryWarning() 
     // Dispose of any resources that can be recreated. 
    } 

// Button on view for show the file in webview 
    @IBAction func Ganratepdf(_ sender: UIButton) 
    { 
     let file="myfile" 
    self.ganarate_pdf(filename: file) 
    } 

    func ganarate_pdf(filename:String) 
    { 
     let documentsPath = NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true)[0] 
     let filePath = "\(documentsPath)/\(filename).pdf" 
     let url = URL(fileURLWithPath: filePath) 

     let urlRequest = URLRequest(url: url) 
     web_view.loadRequest(urlRequest) 


    } 
} 
+0

どのようにpdf? –

関連する問題