AirPrint UIView 的内容

2024-07-04

我正在尝试通过 iPad 应用程序设置打印,其中单击“打印”将打印包含其所有内容的视图。这是我尝试过的(从网上的一些示例中提取的):

// This is the View I want to print
// Just a 200x200 blue square
var testView = UIView(frame: CGRectMake(0, 0, 200, 200))
testView.backgroundColor = UIColor.blueColor()

let printInfo = UIPrintInfo(dictionary:nil)!
printInfo.outputType = UIPrintInfoOutputType.General
printInfo.jobName = "My Print Job"

// Set up print controller
let printController = UIPrintInteractionController.sharedPrintController()
printController!.printInfo = printInfo
// This is where I was thinking the print job got the
// contents to print to the page??
printController?.printFormatter = testView.viewPrintFormatter()

// Do it
printController!.presentFromRect(self.frame, inView: self, animated: true, completionHandler: nil)

不过,我也读过here https://developer.apple.com/library/ios/documentation/UIKit/Reference/UIViewPrintFormatter_Class/index.html#//apple_ref/occ/cl/UIViewPrintFormatter that viewPrintFormatter仅适用于 UIWebView、UITextView 和 MKMapView,对吗?

当我用它打印时(使用打印机模拟器),我只是得到一个空白页;尝试过各种打印机/纸张尺寸。

非常感谢任何指导!


我不确定这是否是正确的方法,但我最终通过将视图转换为UIImage然后将其设置为打印控制器的printingItem.

更新的代码:

// This is the View I want to print
// Just a 200x200 blue square
var testView = UIView(frame: CGRectMake(0, 0, 200, 200))
testView.backgroundColor = UIColor.blueColor()

let printInfo = UIPrintInfo(dictionary:nil)!
printInfo.outputType = UIPrintInfoOutputType.General
printInfo.jobName = "My Print Job"

// Set up print controller
let printController = UIPrintInteractionController.sharedPrintController()
printController!.printInfo = printInfo

// Assign a UIImage version of my UIView as a printing iten
printController?.printingItem = testView!.toImage()

// Do it
printController!.presentFromRect(self.frame, inView: self, animated: true, completionHandler: nil)

The toImage()方法是 UIView 的扩展:

extension UIView {
    func toImage() -> UIImage {
        UIGraphicsBeginImageContextWithOptions(bounds.size, false, UIScreen.mainScreen().scale)

        drawViewHierarchyInRect(self.bounds, afterScreenUpdates: true)

        let image = UIGraphicsGetImageFromCurrentImageContext()
        UIGraphicsEndImageContext()
        return image
    }
}

如果有人有其他方法,请接受其他方法!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

AirPrint UIView 的内容 的相关文章

随机推荐

  • 如何在 Python 3 中使用 smtplib.sendmail() 对收件人姓名(而不是地址)中的国际字符进行编码?

    我在 Python 3 程序中使用标准 smtplib sendmail 调用来发送电子邮件 如下所示 smtp session sendmail The Sender lt email protected cdn cgi l email
  • 暂停 RTMP 直播流后 VideoJS 不播放

    我正在使用 VideoJS 从 Wowza 服务器进行实时流 但是当我暂停播放器并再次播放时 播放器不会恢复流 我需要重新加载网页才能再次启动流
  • 在 X11 中以快速帧速率捕获 OpenGL 窗口 - 可能吗?

    我有一个大小为 800x600 的 OpenGL 应用程序在我的 Linux 机器 X11 上运行 该应用程序的内容 渲染的图像 应通过网络导出到另一台电脑 首先 我想知道是否可以以大约 30 Hz 的频率拍摄应用程序窗口的快照 将它们保存
  • jQuery 循环淡入淡出两个图像!

    我无法弄清楚如何让简单的淡入淡出循环发挥作用 正如你所见 我对 jQuery 还很陌生 我已经尝试过 但现在需要很长时间才能解决 所以我想我应该寻求一些帮助 我想做的事 我有两个图像 id 为 img1 和 img2 我希望图像 1 淡入
  • 两行标题的填充

    这有点难以解释 如果有人知道更好的标题 请继续更改它 我想在标题后面画一个黑框 我正在使用 h 标签内的跨度来执行此操作 它需要向左和向右一点填充 我的布局是响应式的 因此标题可能会分成两行 div class headline black
  • ipython:如何设置终端宽度

    当我使用ipython terminal并想要打印一个numpy ndarray它有很多列 行会在大约 80 个字符处自动断行 即行的宽度为 cca 80 个字符 z zeros 2 20 print z 据推测 ipython 预计我的终
  • Kivy:如何在树视图中使用 on_key_down 和 on_key_up 键盘事件?

    我在用python 2 7 and kivy 1 10 0 当我点击nameTextInput 然后树视图显示 我希望选择标签up and down键 并且当enter按下键 文本被复制 所选文本被复制到初始表单 就像您单击该项目时当前完成
  • 在派生虚函数中强制执行正确的参数类型

    我发现很难非常简洁地描述这个问题 所以我附上了演示程序的代码 总的想法是 我们需要一组派生类 它们被迫从基类实现一些抽象 Foo 函数 每个派生的 Foo 调用都必须接受不同的参数作为输入 但所有参数也应该从 BaseInput 类派生 到
  • 如何从张量流中的两个张量创建字典?

    我有两个张量 一个用于键 一个用于值 我正在尝试从它们创建一个字典 以便我可以使用创建的字典来更新另一个字典update 功能 我怎样才能实现这个 我不是在寻找tf contrib lookup HashTable 我尝试过使用tf map
  • 如何加快 AWS Fargate 上的部署速度?

    从 EC2 集群实例迁移到 AWS Fargate 后 我意识到部署需要更长的时间 以前需要 1 2 分钟 现在某些部署最多需要 5 分钟 这个帖子 https datree io blog migrating to aws ecs far
  • 以编程方式另存为 PowerPoint 2003 中的 PowerPoint 2007 (pptx)

    我需要能够将 PowerPoint 2003 中的演示文稿 以编程方式 保存为 OpenXML pptx 我安装了 Microsoft Office 兼容包 这确实允许我从 PowerPoint 2003 执行 另存为 PowerPoint
  • ModuleNotFoundError:没有名为“binance.client”的模块; “binance”不是一个包

    嘿 我是 Stack Over Flow 和 Python 的新手 但想学习并希望有人可以帮助我 我正在尝试在 python 中开发一个币安交易机器人 请参阅下面我的脚本 from binance client import Client
  • VS Code,更改调试器的 NodeJS 版本

    我想将 VS Code 的 NodeJS 版本从 4 5 0 更改为 7 7 2 专门针对不同的项目 我在Mac上使用nvm 并且我有上面提到的两个版本 它们用于不同的项目 尽管我可以使用 nvm 从终端进行更改 但 VS Code 使用默
  • 如何扩展 C# 内置类型,例如 String?

    我需要Trim a String 但我想删除字符串本身内所有重复的空格 而不仅仅是在其末尾或开头 我可以用这样的方法来做到这一点 public static string ConvertWhitespacesToSingleSpaces s
  • C#:秒到分钟到小时的转换?

    好吧 首先 我很确定我不会在这项作业中使用 TimeSpan 相反 当用户在文本框中输入秒数时 它会在消息框中显示秒 分钟和小时的公式系列 这就是我被困住的地方 我们应该用这个例子来检查我们的答案 7565 秒是 2 小时 6 分 5 秒
  • 共享库卸载的钩子函数

    我想添加钩子函数 该函数将在卸载共享库时被调用 库在编译时链接 可以做这样的事吗 也许 gcc 有标志吗 我看到了在运行时加载库的类似解决方案 但它不符合我的期望 对于 Linux 系统 dlopen dlclose 手册页解释了如何将这样
  • 如何在 Blazor Web 程序集中检查客户端连接状态

    我有一个 Blazor webasemmbly 应用程序 它使用 asp net core 作为后端 使用 Blazor wasm 作为前端 我有一个类可以检查 HTTP 问题 例如 notfound BadReqest 和 public
  • 如何在javafx中嵌入PApplet?

    所以我让我的处理代码在java中运行 但现在我想将它嵌入到我的 GUI 的 JavaFX 中 我怎样才能这样做呢 我尝试使用以下代码 但它似乎不起作用 package testprocessing import javafx applica
  • requestAnimationFrame 在较弱的机器上运行缓慢。解决办法吗?

    所以 我正在制作一个动画 不是在网站 网页上 它使用Javascript 对于动画 我使用requestAnimationFrame代替setInterval as setInterval不能很好地满足我的需要 然而 尽管requestAn
  • AirPrint UIView 的内容

    我正在尝试通过 iPad 应用程序设置打印 其中单击 打印 将打印包含其所有内容的视图 这是我尝试过的 从网上的一些示例中提取的 This is the View I want to print Just a 200x200 blue sq