我有UIWebView
。我想用AirPrint打印它的内容。我想出了这段代码:
@IBAction func print(_ sender: Any) {
let printController = UIPrintInteractionController.shared
let printInfo = UIPrintInfo(dictionary:nil)
printInfo.outputType = UIPrintInfoOutputType.general
printInfo.jobName = "some name"
printController.printInfo = printInfo
let formatter = webView.viewPrintFormatter()
formatter.perPageContentInsets = UIEdgeInsets(top: 72, left: 72, bottom: 72, right: 72)
printController.printFormatter = formatter
printController.present(animated: true, completionHandler: nil)
}
当我运行应用程序时,打印交互控制器一切正常。
但是,我在html中有类似的东西,因为我想强调一些文字:
<span style="color: #ff0000">some text</span>
“某些文字”在网页视图中显示为红色,但在我查看打印交互控制器中的预览时它是黑色的!换句话说,所有的颜色都消失了!
我尝试将HTML更改为:
<span style="background: #ff0000">some text</span>
但打印预览显示相同。我很惊讶,因为<hr>
和<h3>
标记在预览中都呈现得很好。
有没有办法打印彩色文字?
注意:
答案 0 :(得分:1)
看一下CSS的这一部分:
@media print {
*,
*:before,
*:after {
background: transparent !important;
color: #000 !important;
box-shadow: none !important;
text-shadow: none !important;
}
此@media print
部分定义了内容在打印时的外观规则。 link
在此部分中,您有一个*:after
元素,该元素会在页面上的每个元素后面应用内容。 link
在*:after
部分中,您声明了一种黑色(#000
)的颜色,甚至通过将此颜色声明为!important
来加倍确定黑色 - 使此声明比任何颜色更重要元素本身的颜色声明。 link
所以你有几种方法可以解决这个问题:
只需从颜色线中删除!important
标记:
颜色:#000;
从CSS中删除整个颜色线。
这一切都取决于你的具体目标。