无法使用文本颜色打印 UIWebView。为什么?
Can't print UIWebView with text color. Why?
我有一个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>
"some text"在网页视图中显示为红色,但在打印交互控制器中查看预览时显示为黑色!也就是说,所有的颜色都没有了!
我尝试将 HTML 更改为:
<span style="background: #ff0000">some text</span>
但打印预览显示相同。我很惊讶,因为 <hr>
和 <h3>
标签在预览中都呈现得很好。
有没有办法打印彩色文本?
备注:
- 我做过select"Simulated Color Laser Printer"
- 我知道我可以截取 webview 的屏幕截图并打印出来。但这不会只打印屏幕上显示的 HTML 部分吗?
看看你的这一部分 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.
中删除整个颜色线
- 从 CSS.
中删除 *:after 部分
- 从您的 CSS 中删除 @media 打印部分。
这完全取决于您的具体追求。
我有一个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>
"some text"在网页视图中显示为红色,但在打印交互控制器中查看预览时显示为黑色!也就是说,所有的颜色都没有了!
我尝试将 HTML 更改为:
<span style="background: #ff0000">some text</span>
但打印预览显示相同。我很惊讶,因为 <hr>
和 <h3>
标签在预览中都呈现得很好。
有没有办法打印彩色文本?
备注:
- 我做过select"Simulated Color Laser Printer"
- 我知道我可以截取 webview 的屏幕截图并打印出来。但这不会只打印屏幕上显示的 HTML 部分吗?
看看你的这一部分 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.
中删除整个颜色线
- 从 CSS. 中删除 *:after 部分
- 从您的 CSS 中删除 @media 打印部分。
这完全取决于您的具体追求。