问题标签 [uiprintpagerenderer]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
78 浏览

ios - 在双面(正面和背面)打印机上打印 WebView 内容,正面和背面具有不同的边距

我有一个 WebView,想通过 AirPrint 打印它的 HTML 内容。我想为此内容添加自定义页边距。我能够使用我自己的子类来实现它UIPrintPageRenderer

现在,每当我的应用程序用户使用双面打印机(打印页面的正面和背面)时,我想为首页和背面设置不同的页边距。

UIPrintPageRenderer 无法完成此任务,因为它要求headerHeight,footerHeight作为单个属性并且它没有类似的东西headerHeight(forPage:)

我还探索了创建 PDF 文件的选项,但显然 PDF 文件仅使用 UIPrintPageRenderer 生成。

另外,我不知道如何UIViewPrintFormatter从 WKWebView 覆盖或获取自定义,因为这个对象是由 WebView 的函数返回的func viewPrintFormatter() -> UIViewPrintFormatter

0 投票
1 回答
691 浏览

ios - pdf 创建后 UIGraphicsBeginPDFContextToData 不显示图像

我正在HtmltoPDF创作。当某些图像 URL 但不适用于我的服务器图像 URL 时,它工作正常。

从谷歌下载的工作网址
在此处输入图像描述

服务器图像 URL 中的问题

在此处输入图像描述

我在这里放了我的pdf生成代码。请找到它

您可以在此处找到完整的演示。

谢谢,

0 投票
0 回答
64 浏览

ios - 在 iOS 上延迟渲染打印页面

我需要在跨平台应用程序中打印自定义 UI。在 Windows 上,工作流程如下:

  1. 选择要打印的内容
  2. 打开 Windows 打印对话框/打印预览。这仅在需要时查询打印页面。
  3. 开始打印并在打印每一页时报告进度。

我正在尝试在 iOS 上复制此工作流程,但似乎所有打印页面都需要在打开 iOS 打印对话框 (UIPrintInteractionController) 之前准备好打印。这是一个大问题,因为用户可能要打印很多页,而每一页都可能需要一段时间来准备打印。因此,准备和打开 UIPrintInteractionController 需要很长时间。

在 iOS 上是否有任何方法可以在预览或打印时一次懒惰地查询一个(甚至几个)打印页面?还是他们都必须在展示 UIPrintInteractionController 之前做好准备?

编辑:打印多页时这是一个主要问题,因为它很容易耗尽内存,同时在内存中保存这么多 UIImage。

我尝试将 PrintItems 属性与 UIImages 以及 UIPrintPageRenderer 一起使用。我正在使用 Xamarin.iOS,所以请原谅 C# 语法,但你明白了。Swift 或 Objective C 中的答案会很好。这是我的示例伪代码:

0 投票
1 回答
295 浏览

ios - swift UIPrintPageRenderer printableRect.size.width 始终为零 (0)

我正在使用 UIActivityViewController 进行打印(在其他活动中)​​。因此,我将我的 UIPrintPageRenderer 的自定义子类的实例传递给它,相关代码如下。

本质上,我想并排打印两个多行属性字符串,就像两列一样(最终,我希望将一个嵌入另一个并包裹起来,但我们不要在这里超越自己) . 右侧文本视图必须根据其内容固定大小(其子类覆盖 sizeToFit() 来实现这一点)。左侧文本视图应填充剩余的宽度。

所以我使用 UITextView 实例,填充属性字符串,并将它们各自的 .viewPrintFormatter()` 输出作为 UIPrintFormatters 分配给 UIPrintPageRenderer。

这部分有效。两个属性字符串都打印在页面上。

但是,它们在页面的左边缘打印在彼此的顶部。

我尝试使用 UIEdgeInsets 来限制它们的打印失败,除非我硬编码值。看来这是因为我0在查询printableRect.size.width.

为什么我的 UIPrintPageRendere 的 printableRect 总是零宽度?

实现两个多行属性字符串并排打印的正确方法是什么?

0 投票
1 回答
157 浏览

ios - UIPrintPageRenderer 在 iPad 上的大小不同

我正在使用viewPrintFormatter()from aWKWebView打印一些 HTML。

我有一个CustomPrintPageRendererwhich 是一个子类,UIPrintPageRenderer它设置它的paperRectprintableRect595.2x841.8footer50。

我调用此代码从以下代码生成 PDF WKWebView

这一切在模拟器上运行得很好iPhone,但是当我在模拟器上使用它时iPad(具体来说,我正在测试 iPad Pro 11 英寸第二代),生成的 PDF 会爬到第二页。

将页面底部的 1 行文本移至第 2 页。

当 WKWebView 实际上没有使用任何框架因为它没有显示在屏幕上时,为什么这在 iPad 和 iPhone 上会有所不同。似乎 iPad 可能在其计算中忽略了页脚。

我能做些什么来解决这种行为?

会不会是苹果的bug?

0 投票
1 回答
109 浏览

ios - 如何为使用 UIPrintPageRenderer 创建的 PDF 设置 Legal Page 大小?

我正在设置这个:

作为在 UIPrintPageRenderer 中创建 PDF 的合法页面大小(即 8.5 x 14 英寸)为“paperRect”,但是当我打印 PDF 时,它的大小始终为 A4(即 612 x 792 = 8.5 x 11 英寸)。

获取 Legal Page size PDF 的正确方法是什么?

0 投票
1 回答
149 浏览

ios - 使用插入 HTML 代码的 UIImage 创建 PDF 文件

这是一个很好的文档示例,如何使用 html 字符串创建 pdf 文件。

除图像外,所有作品都很好

我有 UIImage 对象,当我通过 WKWebView 预览它时,我想在 HTML 代码中使用它

这就是我加载 WKWebView 的方式

我在这里找到了一个使用 Base64 编码的解决方案。在 WKWebView 中预览 HTML 内容看起来不错。图片在网页上。

但是,当我使用包含我的 Base64 编码图像的 html 字符串src生成 PDF 文件时,生成的 PDF 文件不会显示图像。

所以第一张图片是WKWebView中的预览图:

在此处输入图像描述

第二个是基于相同的html内容生成PDF:

在此处输入图像描述

如您所见,徽标丢失了。

我将跳过整个 HTML 代码创建功能,但这里是我如何从中创建 PDF 的代码:

0 投票
0 回答
51 浏览

html - 基于 HTML 内容构建 PDF 页面以适应 A4 大小

我发现可以从矩形创建 A4 格式的信息:

UIPrintPageRenderer我需要这个矩形来为我的对象指定页面大小。

同样在我的特殊情况下,我使用 Web 视图来构建基于 HTML 代码的 PDF 页面。

我找到了如何采用 HTML 页面以适应 A4 大小的答案:

从那个例子中有趣的是,与 Swift 代码相比,它们提供的只是高度和宽度的不准确值。

只需要确保哪些值是正确的。或者我们可能需要使用英寸、毫米来代替。

我的 PDF 页面必须具有 A4 格式,并且 HTML 必须具有相同的大小。从上面的值可以看出它们是不同的。