问题标签 [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 回答
351 浏览

ios - 随着 html 内容高度的增加,UIWebViewPrintFormatter 在标题底部留下越来越多的空白空间

我有一个UIPrintPageRender使用 html 生成 pdf 报告的自定义。

我发现最终呈现的 html 不会消耗我作为 pageRender 的 contentHeight 传递的计算高度,在标题和正文内容之间留下一个空白区域。

在我的测试中,我发现这个空白空间随着 html 内容的增长而增加。

传递给的矩形的高度drawHeaderForPageAtIndex:inRect:是正确的。我什至用它来绘制页眉的底部(即使我有一个错字并且在屏幕截图中显示页脚)。

我还使用 javascript 来计算 html 内容高度,它还显示了预期的高度,可以与左侧的页面标尺进行比较。

您可以在下面的图像中看到呈现的 html 不会占用标题的整个高度,从而留下额外的间距。

在此处输入图像描述

我在这里附上了原图!(不是缩略图)更好地说明问题。

有没有人遇到过这个问题或者知道我在绘制标题时做错了什么?

更新:
我现在简化了我的测试以排除页眉/页脚仅绘制正文,我看到了相同的结果。

看起来UIWebViewPrintFormatterUIMarkupTextPrintFormatter都会将内容垂直缩小 20%。在下面的输出中,您可以看到 220 像素的文档高度,但格式化程序输出约为 176 像素。

如果我使用 into body 绘制图像,UIViewPrintFormatter则高度是正确的,因此页面渲染器本身不会发生任何奇怪的事情。

webViewDidFinishLoad: 文档高度: 220.00
pdf 页面大小: {595.44006, 841.67999}
SATestPageRendererInit pageRect: {{0, 0}, {595.44006, 841.67999}}, pageMargin: {0, 0, 0, 0}
printableRect: {{0, 0 }, {595.44006, 841.67999}}
pdfContextAddPage: 0 - pageRect: {{0, 0}, {595.44006, 841.67999}}
drawPageAtIndex: 0 inRect: {{0, 0}, {595.44006, 841.67999}}
drawPrintFormatter: forPageIndex: 0 printFormatterRect: {{0, 0}, {595.44006, 176.07098}}

0 投票
1 回答
447 浏览

objective-c - iOS 打印界面导致自定义视图出现转换问题

我现在在 iOS 的打印界面上苦苦挣扎。我拥有的是一个带有自定义 UIView 的视图控制器,它在 drawRect 中进行绘图:

此处为绘图在 iPad 上的外观示例(包括一些彩色测试线):

在此处输入图像描述

我设置了一个 UIPrintRenderer 子类,它打印页眉和页脚,并为自定义 UIView 的 drawRect: 方法提供内容矩形 drawContentForPageAtIndex:inRect:。调试器告诉我,drawRect: 总是被调用——不管 rect drawContentForPageAtIndex:inRect: 是否存在于渲染器类中。所以我不在 rect drawContentForPageAtIndex:inRect: 中进行绘图,我使用 drawRect: 。

当打印机模拟器提供 A4 纸张格式时,我得到 [0, 0, 841.89, 595.276] 的纸张矩形,[11.9905, 11.9906, 817.909, 571.294] 的可打印矩形和 [11.9905, 33.9906, 817.909, 530.294] 的内容矩形]。我确实不明白的是, drawRect: 从打印界面获取 [0, 0, 695, 530.294] 的矩形。那是内容矩形的高度,但宽度是正常绘制时不打印时从矩形开始的高度:[0, 0, 695, 648]。在模拟器输出页面是这样的(当然也添加了一些测试帧、线和圆):

在此处输入图像描述

下面是一些代码,首先是视图控制器中设置打印的部分:

drawRect: 的第一个代码部分也可能与此处相关:

drawRect: 中矩形的 NSLog 输出也相关:

绘图代码使用 Core Graphics 和 UIKit 来绘制框架、线条等。文本输出使用 Core Text。因此,应用正确的 CTM 转换仍有一些工作要做。但主要的第一个问题是:

为什么 drawRect: 从打印界面获取一个奇怪的矩形而不是内容矩形?如果我不能打破这条规则,那么 iPhone 打印而不是 iPad 会变得非常糟糕——使用当前编码的 iPhone 看起来更糟。

我是否应该在打印渲染器的 drawContentForPageAtIndex:inRect: 中更好地执行打印绘图代码?

非常感谢您的帮助:-)

康兰

添加:

似乎确实如此,传递给 drawRect: 的图形上下文不适用于打印要求。当我直接从drawRect返回时:在打印的情况下并将打印代码添加到drawContentForPageAtIndex:inRect:,我得到一个更好的(测试)输出:

在此处输入图像描述

但是我不明白并且仍然需要您帮助的是轴文本的定位代码,这些代码是使用 Core Text 绘制的。我尝试了非常不同的 CTM 转换组合......但我使用的任何组合都会导致文本定位错误。这就是我为 x 轴上的文本输出所做的:

0 投票
1 回答
1776 浏览

ios - 在 iOS 中更改图像的打印尺寸

在我的应用程序中,我让用户制作一张优惠券,预览它,然后他们可以选择打印该优惠券。现在它只是缩小屏幕以仅包含优惠券部分并打印,但它打印到全尺寸 8.5 x 11 并且使用大量墨水,因为优惠券在背景中是黑色的。如何将其更改为仅打印 2.5 x 3.5 英寸的纸张部分?

0 投票
2 回答
655 浏览

ios8 - iOS8 UIPrintPageRenderer 挂起

我正在使用 BNHtmlPdfKit 将 Html 呈现为 PDF。它工作得很好,但在 iOS8 中它只是挂起

老实说,我什至不知道如何调试它——没有错误消息,你可以继续按继续,但只是在同一个断点处中断。最后它只是超时。

有人有什么想法吗?

干杯

0 投票
1 回答
324 浏览

ios - 在自定义 UIPrintPageRenderer 中使用 UIFont 绘制字符串对象

我将 UIPrintPageRenderer 子类化为通过 AirPrint 绘制我自己的打印页面。我有一个简单的 String 对象,我想更改字体的大小。使用drawAtPoint withAttributes 方法,它的字符串被绘制在正确的位置,但字体名称和大小不变。是否可以在 UIPrintPageRenderer 的 drawPageAtIndex 方法中使用 NSAttributedStrings?

示例代码:

0 投票
1 回答
766 浏览

ios - UIPrintPageRenderer/HTML 到 PDF 问题:在渲染的 PDF 中添加了额外的空格

在将 UIWebview 中的 HTML 渲染为 PDF 页面时,我们在使用 UIPrintPageRenderer 时遇到问题。HTML 包含一个包含多行 (....) 的表格,其高度是已知的。

UIWebView 可以很好地呈现该 HTML,但一旦通过 UIPrintPageRenderer 转换为 PDF,就会在行之间添加额外的空格。请参阅附有 2 行表格的示例。PDF 中添加了一个额外的空间,而 HTML 中不存在。 在此处输入图像描述 我们使用该库:https ://github.com/iclems/iOS-htmltopdf 任何帮助都会很好。问候,摩根。

0 投票
1 回答
435 浏览

ios - UIPrintPageRenderer 是否有“renderInContext”的等价物

您可以调用renderInContext图层。有类似的东西UIPrintPageRenderer吗?我基本上想UIImage从 PDF 文档的第一页创建一个UIPrintPageRenderer. 除了上下文部分的实际渲染之外,我还有其余的代码。

编辑:我在这里误解了一些基本的基本概念吗?如果是这样,请随时给我一个快速的教训。

0 投票
1 回答
939 浏览

objective-c - 当方向设置为横向时,UIPrintInteractionController 会附加一个空白页

我正在尝试使用将字符串发送到打印机UIMarkupTextPrintFormatter,当我不更改页面方向时一切都很好 - 默认情况下设置为纵向。

纵向打印预览

但是,当我将页面方向设置为横向时,一个空白页面会附加到呈现的输出中,就好像页边距超出了第一页一样。

横向打印预览

这是我的打印代码:

另外需要注意的是,当页面设置为横向时,Xcode 会记录一些与自动布局相关的错误。

我试图只打印第一页,但找不到任何关于设置页面范围的信息,可以设置UIMarkupTextPrintFormatter一个startPage变量,但设置它并不走运,即使我将它设置为第二页,它也会呈现为t 设置为任何东西。

我可以通过删除空白页或仅将打印范围设置为第 1 页来解决此问题,但到目前为止我无法完成其中任何一个。有任何想法吗?

0 投票
1 回答
6918 浏览

ios - 为 UIPrintPageRenderer / UIPrintInteractionController 设置要打印的页面

我有一个要在我的 iOS 应用程序中使用 AirPrint 打印的 HTML 字符串。但是,字符串是可自定义的,并且允许用户设置边距/填充、字体/字体大小、方向等。

因此,有时输出可能超过 2 页,其中第二页为空白。在那里我想为要打印的页面设置一个范围。实际上,无论输出是什么,我只想打印第一页。

这是打印交互控制器对话框,您可以看到没有设置范围并且输出超过一页:

UIPrintInteractionController 对话框

这是我的代码:

prepareForDrawingPages尽管我认为方法可以解决问题,但我无法找到有关设置范围的足够信息。关于实现这一点的任何想法?

0 投票
1 回答
2245 浏览

swift - 从 UIWebView 创建 PDF

我在从 UIWebView 创建 PDF 时遇到问题。

一切正常,但如果我在 HTML 中使用背景图片,它就会消失。有谁知道怎么了?