Я использую UIPrintPageRenderer
вместе с UIMarkupTextPrintFormatter
для печати html-страницы, которая отображается в UIWebView
. Я пытаюсь добиться следующего:
Я хочу отобразить содержимое html в качестве прозрачного слоя в контексте, но цвет фона содержимого html всегда является белым при визуализации с UIPrintPageRenderer
в контексте, покрывающим весь контент ниже.
Стиль html содержит следующий фрагмент кода:
body {
background-color: transparent !important;;
-webkit-print-color-adjust: exact;
}
В UIWebView
я вижу, что фон html действительно прозрачен, потому что я устанавливаю фон UIWebView
на другой цвет.
Это код, который я использую для создания данных PDF:
let printPageRenderer = UIPrintPageRenderer()
let printFormatter = UIMarkupTextPrintFormatter(markupText: htmlContent)
printPageRenderer.addPrintFormatter(printFormatter, startingAtPageAt: 0)
let data = NSMutableData()
UIGraphicsBeginPDFContextToData(data, Constants.Pdf.rect, nil)
let context = UIGraphicsGetCurrentContext()!
for i in 0..<printPageRenderer.numberOfPages {
UIGraphicsBeginPDFPage()
let backCoverView = UIView(frame: Constants.Pdf.rect)
backCoverView.backgroundColor = UIColor(patternImage: UIImage(named: "background.png")!)
backCoverView.layer.render(in: context)
context.clear(printableRect)
printPageRenderer.setValue(NSValue(cgRect: printableRect), forKey: "printableRect")
printPageRenderer.drawPage(at: i, in: UIGraphicsGetPDFContextBounds())
}
UIGraphicsEndPDFContext()
Моя проблема в том, что содержимое html, которое отображается над "background.png", не прозрачно, но имеет белый фон. Прозрачный атрибут в стиле html, по-видимому, игнорируется UIPrintPageRenderer
. Установка background-color
в стиле html, например. blue
изменяет отображаемый цвет фона html от белого до синего. Я также попытался сделать рендеринг html прозрачным, сделав контекст прозрачным с помощью context.clear(printableRect)
безрезультатно.
Как я могу сделать UIPrintPageRenderer
распечатать содержимое html с прозрачным фоном, чтобы уже сделанный фон в контексте не был покрыт белым фоном html?