【发布时间】:2016-11-27 08:33:30
【问题描述】:
我有一个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" 在 web 视图中显示为红色,但是当我在打印交互控制器中查看预览时它是黑色的!换句话说,所有的颜色都消失了!
我尝试将 HTML 更改为:
<span style="background: #ff0000">some text</span>
但打印预览显示相同。我很惊讶,因为<hr> 和<h3> 标签在预览中都呈现得很好。
有没有办法打印彩色文本?
注意事项:
- 我确实选择了“模拟彩色激光打印机”
- 我知道我可以截取 web 视图并打印出来。但这不会只打印屏幕上显示的 HTML 部分吗?
【问题讨论】:
-
我刚刚使用您引用的确切跨度设置了一个 HTML 页面,将其加载到 UIWebView 中并使用您的打印代码打印它,我看到了红色文本。似乎还有其他原因导致了问题。您能否提供一个指向未打印的实际网站的链接?
-
@CraigGrummitt 抱歉,我似乎无法编辑问题。这是我试图进行的编辑的 pastebin 链接:pastebin.com/raw/B87WUivY
-
Apple 有一些代码可以将 HTML 转换为 PDF。我没试过,但也许它会解决你的问题github.com/ResearchKit/ResearchKit/blob/…
标签: ios swift printing uiwebview airprint