Im stworzenie pliku PDF z zawartością html w szybkim 3,0:UIMarkupTextPrintFormatter nigdy base64 renderuje obrazy
/**
*
*/
func exportHtmlContentToPDF(HTMLContent: String, filePath: String) {
// let webView = UIWebView(frame: CGRect(x: 0, y: 0, width: 694, height: 603));
// webView.loadHTMLString(HTMLContent, baseURL: nil);
let pdfPrinter = PDFPrinter();
let printFormatter = UIMarkupTextPrintFormatter(markupText: HTMLContent);
// let printFormatter = webView.viewPrintFormatter();
pdfPrinter.addPrintFormatter(printFormatter, startingAtPageAt: 0);
let pdfData = self.drawPDFUsingPrintPageRenderer(printPageRenderer: pdfPrinter);
pdfData?.write(toFile: filePath, atomically: true);
}
/**
*
*/
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;
}
Wszystko jest renderowany w porządku z wyjątkiem moich base64 zakodowane obrazy. Zawartość HTML w przeglądarce internetowej lub przeglądarce Safari lub Chrome jest poprawnie wyświetlana i poprawnie wyświetla wszystkie obrazy. Ale obrazy nigdy nie są wyświetlane w pliku PDF.
Dlaczego obrazy nie są renderowane i jak mogę je renderować?
Polecam zrobić eksperyment. Kreta HTML zawierająca dwa obrazy. Pięść jest zakodowana w base64, a druga wskazuje na plik obrazu. Otwórz ten obraz za pomocą przeglądarki Safari na iPhonie. Następnie wyeksportuj go do iBooks jako plik PDF. Zobacz też, czy oba obrazy są renderowane przez natywną aplikację Safari. – Ramis
Czy robisz to na platformę iOS? – Ramis
Robię to na platformę iOS tak. Przetestuję to z plikiem obrazu, ale przy okazji. kiedy otwieram przeglądarkę internetową zawierającą mój szablon html, obrazy base64 są wyświetlane poprawnie. – Mulgard