イムをレンダリングすることはありません:UIMarkupTextPrintFormatterは、SWIFT 3.0のHTMLコンテンツのうち、PDFファイルを作成するbase64で画像に
/**
*
*/
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;
}
すべては私のbase64でエンコードされた画像を除いて微細化されます。ウェブビューまたはSafariまたはChromeブラウザのHTMLコンテンツ自体が正しく表示され、すべての画像が正しく表示されます。しかし、画像は決してpdfにレンダリングされません。
なぜ画像がレンダリングされず、レンダリングされるのですか?
私は実験を行うことをお勧めします。 2つの画像を保持するクレタHTML。 Fistはbase64でエンコードされ、2つ目はファイルイメージを指します。 iPhoneのSafariブラウザでこの画像を開きます。それをPDFとしてiBooksにエクスポートします。両方の画像がネイティブのSafariアプリでレンダリングされていることを確認してください。 – Ramis
iOSプラットフォーム向けにやっていますか? – Ramis
私はiOSプラットフォームでそれをします。画像ファイルでテストしますが、btwでテストします。自分のhtmlテンプレートを含むwebviewを開くと、base64イメージが正しく表示されます。 – Mulgard