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

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 扩展的知识 例如 今日扩展 照片编辑扩展 动作延伸 自定义键盘扩展 在所有这些中 我在学习上没有困难 但最近我尝试学习 文档提供程序扩展 令我惊讶的是 在互联网上没有找到任何相关教程谈论如何使用它 与其他人一样一
  • 打印 JTable 中选定的行

    我正在制作一个java swing应用程序 我也是一名新手程序员 编程1年半 我正在尝试在按钮内编写一种方法来打印 在打印机中 而不是在控制台中 jTable 的预选行 由用户 该行之前已通过查询打印 在窗口中 这是我的代码 在按钮内 我知
  • Wkhtmltopdf 每页右侧的垂直文本

    下面是使用 wkhtmltopdf 生成的 PDF 示例 我需要在每一页的右书脊上生成文本 我尝试将其添加到标题代码中 似乎会剪辑 PDF 的正文 我正在使用 wkhtmltopdf 的页眉和页脚参数 不太确定如何或是否可以在每个页面的右侧
  • iOS通过AVAssetWriter反转音频

    我正在尝试使用 AVAsset 和 AVAssetWriter 在 iOS 中反转音频 以下代码可以正常工作 但输出文件比输入文件短 例如 输入文件的持续时间为 1 59 但输出文件的持续时间为 1 50 且音频内容相同 void reve
  • 为什么无论 -rdynamic 如何,backtrace 都不包含 Objective-C 符号?

    Update 我正在 Linux 上使用 GNU 运行时 问题是not发生在带有 Apple 运行时的 MacOS 上 更新2 我在 MacOS 上编译了 GNU 运行时并用它构建了示例 该错误确实not发生在带有 GNU 运行时的 Mac
  • 动态更新 UIAlertView 消息和换行符问题

    我需要在 UIAlertView 的消息中显示多行文本 我尝试过添加 n 但没有效果 它仍然显示 这是一个示例 但是 如果我将 iPhone 切换为横向模式 它会按照我的预期显示该消息 然后 如果我切换回纵向模式 它也会正确显示 更新 经过
  • 如何调试不在启动时运行的 Launchd 脚本?

    我有一些launchd脚本来自Homebrew 但是 当我重新启动计算机时 我必须手动运行它们 launchctl load w Library LaunchAgents com mysql mysqld plist
  • 自动布局+基于总行数的动态表高度约束

    首先 这与动态单元格的高度无关 所以不要把它搞混了 我有一个场景 我创建了三张卡 详细信息卡 显示位置的具体详细信息 图表卡 根据选择显示不同的图表 更多详细信息卡 卡显示更多详细信息 以下是上述卡片的屏幕 查看以上屏幕的层次结构 Cont
  • Objective-C 中的 at 符号和大括号,@{ ... } 是什么意思?

    我在 Objective C 中有这一行 NSMutableArray mutableArray mutableArray addObject Something aObject Otherthing anotherObject 什么是 部
  • 为什么使用 UIImageJPEGRepresentation 方法通过 writetofile 保存的 .jpeg 文件大小比 ios 中的 UIImageWriteToSavedPhotosAlbum 大

    我正在尝试拯救一个UIImage设备中 jpeg 文件的对象 我正在使用这段代码 void saveImageToDocumentsDirectory UIImage mimage withFileName NSString fileNam
  • AppleScript:对传递给 Firefox 的 URL 中的任意查询字符串值进行编码

    我很长一段时间都使用 Firefox 作为 PC 或 Mac 上唯一的浏览器 简而言之 我的问题是 我想在 mac 上使用 automator 创建一个服务 Applescript 使用translate google com 进行相当即时
  • Objective-C 语法是什么,椭圆式点表示法? “……”

    我在 Joe Hewitt 的 Three20 源代码中注意到了这一点 而且我以前从未在 Objective C 中见过这种特殊的语法 甚至不知道如何在适当的谷歌搜索中引用它 来自 UITableViewDataSource TTSecti
  • 在Mac中如何在Android Studio中的项目窗口之间切换?

    我的操作系统是Mac 我在Android Studio中打开了几个项目 有时我想在项目之间切换以选择一个项目 是否有任何键盘快捷键可以像 command ctrl tab 一样执行此操作 Use Cmd Cmd 反引号 它在 Android
  • C# 或 Windows 相当于 OS X 的 Core Data?

    我迟到了 现在才开始在 OS X Cocoa 中使用 Core Data 它令人难以置信 并且确实改变了我看待事物的方式 C 或现代 Windows 框架中是否有等效的技术 即拥有可免费保存 数据管理 删除 搜索的托管数据类型 还想知道Li
  • 如何在Python中捕获打印机事件

    我想在打印机开始打印时捕获信号 如果你告诉我如何获取将要打印的文档的路径 那就太好了 pywin32print看起来很有用 但不知道怎么用 要获得新打印作业的通知 您可以使用FindFirstPrinterChangeNotificatio
  • Python 导入错误:未找到符号,但文件中不存在符号is

    当我尝试导入时出现此错误ssrc spread ImportError dlopen Library Frameworks Python framework Versions 2 6 lib python2 6 site packages
  • 设置使用 iPhone 相机拍摄的图像的类型

    如果我们使用 iPhone 相机拍摄照片 图像将默认以 JPEG 格式保存 我想以其他格式 例如 PNG 保存捕获的图像 是否可以 当我们从应用程序调用 iPhone 相机时 是否可以通过代码执行此操作 我们可以设置捕获图片后必须保存的图像
  • UITextField 字体大小在开始或停止输入字符时发生变化

    我见过很多线程 但没有找到解决这个问题的任何具体解决方案 我使用 XIB 创建了 UITextfield 尚未以编程方式对该字段执行任何操作 一旦我开始打字 文本字段的字体就会改变 一旦我将焦点移出文本字段 并且随着键盘消失 字体大小就会减
  • 使用 NSSet/NSMutableSet 来过滤对象?

    我已经看到一些有关使用 NSSet NSMutableSet 过滤对象的问题 答案 这些情况使用简单类型的对象 例如NSString or int 以下是用于过滤的代码示例NSString对象 NSSet smallArray NSSet
  • OSX 和 SED - 删除文档目录中第 25 行之后的所有行

    我有一个包含数千个 txt 文件的目录 我需要修剪文件 以便删除每个文件中第 25 行之后的每一行 我使用的是 Mac OSX 10 14 6 我怎样才能做到这一点 我所做的尝试 经过研究 我认为 Mac OSX 终端中的 SED 是实现此

随机推荐