2016-09-29 5 views
1

Я создаю pdf-файл из html-файла с изображениями. Я попытался создать из Html, а также из UIWebView, загрузив html в веб-представление. Ниже приведены методы использования как для подходаPdf Создано из Html с использованием UIViewPrintFormatter, не отображающего локальные изображения

1.From HTML

func exportHTMLContentToPDF(HTMLContent: String) { 
    let printPageRenderer = CustomPrintPageRenderer() 

    let printFormatter = UIMarkupTextPrintFormatter(markupText: HTMLContent) 
    printPageRenderer.addPrintFormatter(printFormatter, startingAtPageAtIndex: 0) 

    let pdfData = drawPDFUsingPrintPageRenderer(printPageRenderer) 

    pdfData.writeToFile(pdfPath(), atomically: true) 

} 

2.В UIWebView, загрузив Html

func createPdfFromViewFormatter(viewFormatter:UIViewPrintFormatter) { 

    let printPageRenderer = CustomPrintPageRenderer() 

    printPageRenderer.addPrintFormatter(viewFormatter, startingAtPageAtIndex: 0) 
    let pdfData = drawPDFUsingPrintPageRenderer(printPageRenderer) 

    pdfData.writeToFile(pdfPath(), atomically: true) 


} 

создание Pdf method`

private func drawPDFUsingPrintPageRenderer(printPageRenderer: UIPrintPageRenderer) -> NSData! { 
    let data = NSMutableData() 

    UIGraphicsBeginPDFContextToData(data, CGRect(x: 0.0, y: 0.0, width: printPageRenderer.printableRect.width, height: printPageRenderer.printableRect.height), nil) 


    printPageRenderer.prepareForDrawingPages(NSRange(location: 0, length:printPageRenderer.numberOfPages())) 


    for i in 0..<printPageRenderer.numberOfPages() { 


     UIGraphicsBeginPDFPage() 

     printPageRenderer.drawPageAtIndex(i, inRect: UIGraphicsGetPDFContextBounds()) 

    } 

    UIGraphicsEndPDFContext() 


    return data 
} 

Проблема заключается в том, что изображение в html не показано в созданном pdf.But отображается при загрузке в UIWebView.

ответ

0

У меня такая же проблема: IOS Swift sharing PDF documents with images Я считаю, что это ошибка. Единственное решение, которое я нашел до сих пор, - это создать фиктивный UIWebView, который я скрываю. Я загружаю HTML в UIWebView, а затем создаю PDF. Вот мой код:

override func viewDidLoad() { 
    super.viewDidLoad() 

    hiddenWebView.loadHTMLString(htmlText, baseURL: nil) 
    hiddenWebView.isHidden = true 
} 

override func viewDidAppear(_ animated: Bool) { 
    pdfDocument = getPdf() 
    let tmpDirectoryURL = URL(fileURLWithPath: NSTemporaryDirectory()) 
    let fileURL = tmpDirectoryURL.appendingPathComponent("document.pdf") 
    pdfDocument.write(to: fileURL, atomically: false) 
    documentWebView.loadRequest(URLRequest(url: fileURL)) 
} 

Надеюсь, это поможет.

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

  • Нет связанных вопросов^_^