2017-01-19 8 views
3

私は静的データと動的データの両方を含むhtmlファイルを持っており、そのhtmlファイルからPDFファイルを生成する必要があります。私はPDFファイルを作成することができますが、それは最初のページだけを印刷します。私は3ページのPDFファイルが必要です。私は以下の2つの関数を使ってPDFファイルを描画して保存しました。 私のコードは次のとおりです。私はこのためのアプリコーダのチュートリアルに従っているSwiftで複数ページの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 

} 

。複数ページの場合は、PDFページ作成の開始と印刷ページレンダラーの描画をループに組み込むことが含まれています。複数ページのPDFを作成するのを手伝ってください。

+0

この記事を読む:https://developer.apple.com/library/content/documentation/2DDrawing/Conceptual/DrawingPrintingiOS/GeneratingPDF/GeneratingPDF.html#//apple_ref/doc/uid/TP40010156-CH10-SW1 – Vijay

答えて

5

は、あなたの現在の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 
} 

ヴィオラ、複数ページの。

関連する問題