chr*_*low 11 html css printing cgcontext swift
我正在使用a UIPrintPageRenderer与a UIMarkupTextPrintFormatter一起打印一个html页面,该页面呈现在UIWebView.我试图实现以下目标:我想将html内容作为透明层渲染到上下文中,但是当使用UIPrintPageRenderer上下文覆盖下面的所有内容进行渲染时,html内容的背景颜色始终为白色.
html样式包含以下代码段:
body {
background-color: transparent !important;;
-webkit-print-color-adjust: exact;
}
Run Code Online (Sandbox Code Playgroud)
在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()
Run Code Online (Sandbox Code Playgroud)
我的问题是通过"background.png"呈现的html内容不透明但具有白色背景.html样式中的透明属性似乎被忽略了UIPrintPageRenderer.将background-colorhtml样式设置为例如blue将渲染的html背景颜色从白色更改为蓝色.我也尝试通过使上下文透明而使得渲染的html透明context.clear(printableRect)无济于事.
如何 UIPrintPageRenderer使用透明背景打印html内容,以便上下文中已渲染的背景不被html的白色背景覆盖?
| 归档时间: |
|
| 查看次数: |
1209 次 |
| 最近记录: |