2017-01-19 1 views
3

zu generieren Ich habe eine HTML-Datei, die beide statische und dynamische Daten enthält, und ich muss eine PDF-Datei aus dieser HTML-Datei generieren. Ich kann eine PDF-Datei erstellen, druckt aber nur die erste Seite. Ich brauche eine dreiseitige PDF-Datei. Ich habe folgende zwei Funktionen zum Zeichnen und Speichern der PDF-Datei verwendet. Mein Code ist:Nicht möglich, mehrseitiges PDF in Swift

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 

} 

I app Coda Tutorial für diese gefolgt. Bei mehreren Seiten wird angegeben, dass der Beginn der PDF-Seitenerstellung und der Druckseitenrenderer in eine Schleife eingefügt werden sollen. Bitte helfen Sie mir, mehrere Seiten PDF zu erstellen.

+0

Lesen Sie hierzu: https://developer.apple.com/library/content/documentation/2DDrawing/Conceptual/DrawingPrintingiOS/GeneratingPDF/GeneratingPDF.html#//apple_ref/doc/uid/TP40010156-CH10-SW1 – Vijay

Antwort

5

den Code anstelle der aktuellen drawPDFUsingPrintPageRenderer Funktion verwenden:

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 
} 

Viola, mehrere Seite.

Verwandte Themen