创建自动调整大小的打印输出

2024-04-03

我的应用程序需要打印一些东西。布局应该有点动态(有时特定字段可能包含更多数据,这可能需要它们自动换行或类似的),但打印输出不应超过一页。如果数据太多,我想稍微减小字体大小,然后重试,然后重复,直到所有内容都适合一个页面(永远不会so许多数据的字体会小得难以阅读)。

我需要在同一页上打印文本和图像。

布局应如下所示:

+------------------------------------------------------------------+
| +------+                                               +-------+ |
| | seal |                   text field 1                | photo | |
| |      |                   text field 2                |       | |
| +------+                                               +-------+ |
| ---------------------------------------------------------------- |
|  text header 1:                 text data                        |
|  text header 2:                 longer text data                 |
|  text header 3 with long title: very long text data which does   |
|                                 not fit on a single line         |
| ---------------------------------------------------------------- |
|  text header 4:                 text data                        |
.                                                                  .
.     (...)                          (...)                         .
.                                                                  .
|                                                                  |
+------------------------------------------------------------------+

数据为text field 1略有变化,但没有达到重要程度。数据为text field 2可以相当短,但也可以非常长,并且应该适合两个图像元素之间,必要时可自动换行。两个字段应(大约)在两个图像之间垂直居中。

页面其余部分的数据字段通过中间的垂直线进行分组,但所有数据字段应从页面左侧的相同偏移量开始,该偏移量由最长标头的长度定义。

我已经部分使用独立式解决了这个问题NSView(独立的,如,不是窗口的一部分)在我的 XIB 文件中。我已经创建了NSTextField用于保存标题和数据的元素。对齐要求被定义为对NSTextField元素,如果一切都合适(即不需要自动换行,并且不需要减小字体大小),那么它看起来就应该是这样的。

然而,还存在一些问题:

  • 我不知道如何制作NSTextField将其文本换行,但保持尽可能小,垂直,以适合所有内容。看来我要么需要将其设置为超过一行高(这将导致行之间出现不必要的空白),要么自动换行会遮盖第二行。
  • 打印 API 希望我传递一个NSView在我知道页面上的可打印区域是什么之前。因此,我看不到调整大小的选项NSView所以它最适合页面。目前,这会导致页面具有过大的侧边距或过大的顶部/底部边距,具体取决于所使用的打印机及其设置。

我以正确的方式处理这件事吗?如果是的话,我该如何解决以上两个问题?如果不是,我应该做什么?

我确实查看了 Core Printing API,但这似乎有点太低级了。

Thanks,


如果将Behavior 设置为None 或Selectable,NSTextField 将换行并且高度足够高。

要调整打印视图的大小,您可以创建 NSView 的子类并实现 KnowsPageRange: 和 rectForPage:。在 KnowsPageRange: 中,您计算​​页数 (1) 并返回 YES。在 rectForPage: 中,您设置高度和宽度约束,以便视图与页面大小相同,调用 [selflayoutSubtreeIfNeeded] 并返回 self.bounds。 [[NSPrintOperation currentOperation] printInfo] 将为您提供打印信息。

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

创建自动调整大小的打印输出 的相关文章

  • iOS:调用 Objective-C 方法的处理开销是多少?

    我正在编写一些实时音频处理代码 该代码将在音频单元的渲染回调中执行 该线程处于系统识别的最高优先级 Apple 指示最大限度地减少此调用中进行的处理量 他们的建议之一是避免 Objective C 方法调用 But why 调用 Objec
  • 如何在 Mac 上使用 Process.Start() 或等效的 Mono 并传入参数

    我正在尝试编写一些 C 代码来启动浏览器Process Start app args 其中 apps 是浏览器的路径 例如 Applications Google Chrome app Contents MacOS Google Chrom
  • 创建类似于邮件应用程序菜单的 iPhone 弹出菜单

    当您想要回复消息时 我想创建一个类似于邮件应用程序中的弹出菜单 我在多个应用程序中看到过这一点 所以我不确定框架中是否内置了某些内容或一些示例代码 在 Swift 中创建操作表 代码已使用 Swift 5 进行测试 从 iOS 8 开始 U
  • NSMutableArray 实例变量内存管理

    我正在做最后一点内存管理整理 但有些东西我不明白 我已经检查了所有文档 Stack Overflow 等 但仍然不明白 我怀疑这与数组有关 我有一个NSMutableArray作为实例变量 我用它来保存从另一个数组中的对象创建的对象 vie
  • iPhone iOS 保存从 UIImageJPEGRepresentation() 获得的数据第二次失败:ImageIO: CGImageRead_mapData 'open' failed

    我的 UIImage 操作遇到了一个奇怪的问题 我正在进行保管箱同步 并且必须将我的图像存储为本地文件 为此 我使用以下命令保存它们UIImagePNGRepresentation image or UIImageJPEGRepresent
  • NSDictionary 上的 NSPredicate

    我试图根据字母表在表格视图中创建部分 并在这些部分下按字母顺序对我的条目进行排序 我已经收集了 bandArrayIndex 中 bandArray 每个条目的第一个字母 现在我尝试使用 NSPredicate 来计算每个字母有多少个 我正
  • 最小的 iOS 蓝牙管理器示例

    我一直在构建一个最小的示例 用于使用 iOS 5 0 中的 BluetoothManager 私有框架来检测附近的蓝牙设备 使用此问题中找到的答案 寻找触手可及的通用蓝牙设备 https stackoverflow com question
  • 是否有针对不同屏幕尺寸的单独故事板?

    基本上我已经完成了一个应用程序 我唯一的问题是 ATM 机应用程序在设计时只考虑了 4 英寸显示屏 当在 3 5 英寸模拟器上运行时 应用程序会丢失 0 5 英寸 显然 那么我的问题是 如何在 Xcode 5 中为不同的屏幕尺寸设置不同的故
  • NSSharingService 共享子菜单

    如何在 Mac 应用程序中添加共享子菜单 例如 Safari gt 文件 gt 共享 我戳了戳Apple 共享服务示例代码 http developer apple com library mac samplecode SharingSer
  • 如何使用 iPhone SDK 实现可滑动的图像堆栈(例如照片应用程序)?

    我想获取一堆图像 或者可能是一组用于下载图像的 URL 并以全屏方式显示它们 一次一个 使用 iPhone SDK 使用用户滑动来平滑地为堆栈中的下一个图像设置动画 Apple 的 Photo app 似乎可以做到这一点 此外 如果尚未检索
  • 是否有适用于 iPad 2 的条码扫描仪 SDK? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 从 UIImagePickerController 相机视图推送 viewController

    我正在开发一款消息应用程序 类似于 WhatsApp 用户可以互相发送文本和图像消息 当用户想要发送图像时 他可以从相机胶卷中选择一张图像 也可以用相机拍摄一张图像 这就是我介绍的方式UIImagePickerController对于这两种
  • NSString – 静态还是内联?有性能提升吗?

    如果我写的话会有任何性能提升吗 NSString helloStringWithName NSString name static NSString formatString Hello return NSString stringWith
  • 一个好的8086模拟器[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 mac 有没有 8086 模拟器 如果是 哪个是最好的 除非您需要真正的原始 8086 带有自定义操作系统 否则您应该尝试 DosBox
  • 使用 iPhone 中的地图视图读取当前位置名称

    我读取了当前位置的纬度和经度值 然后成功将该位置固定在 iPhone 中 现在我想使用这个纬度和经度值读取该地名 我使用以下代码来读取查找当前位置 void mapView MKMapView mapView1 didUpdateUserL
  • 如何将 UILabel 的值绑定到实例变量?

    我是 mac objective c 的新手 我的问题是 我想知道是否可以将 UILabel 文本绑定到变量 而不必在值更改时手动设置文本 例如 在 Mac OS 上 当我打开新的 Finder 窗口并删除文件时 任务栏中的全局可用空间就会
  • 如何在 OS X 上使用 OpenSSL 1.0.1 编译 PHP 5.5.19

    我已经安装了 OpenSSL 1 0 1j usr local ssl现在我尝试使用此版本的 OpenSSL 编译 PHP 5 5 19 这是我的配置过程 export CFLAGS arch x86 64 export CXXFLAGS
  • 在 XCode 中链接静态 ObjC 库的过程

    我正在尝试链接到静态库 但不断收到链接器错误 我发现了一些发布示例的网站 但我无法看到我做错了什么 首先 我创建一个链接到我的库的项目 添加 gt 现有文件找到我的 xcodeproj 文件选择 将项目复制到目标组文件夹 选择我的宿主项目作
  • 减少 CoreData 的调试输出?

    我正在开发一个使用 CoreData 的 iOS macOS 项目 它工作正常 但它会向控制台输出大量调试信息 这使得控制台无法使用 因为我的打印语句隐藏在所有与 CoreData 相关的内容中 我有一个非常简单的 CoreData 设置
  • 推送动画,没有阴影和停电

    我有一个简单的iOS NavigationController基于应用程序 二UICollectionViews 相继 如果元素打开 第一个合集 被点击时 第二集 将被打开 非常简单 重要的提示 Both UICollectionViews

随机推荐