问题标签 [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.
ios - 随着 html 内容高度的增加,UIWebViewPrintFormatter 在标题底部留下越来越多的空白空间
我有一个UIPrintPageRender
使用 html 生成 pdf 报告的自定义。
我发现最终呈现的 html 不会消耗我作为 pageRender 的 contentHeight 传递的计算高度,在标题和正文内容之间留下一个空白区域。
在我的测试中,我发现这个空白空间随着 html 内容的增长而增加。
传递给的矩形的高度drawHeaderForPageAtIndex:inRect:
是正确的。我什至用它来绘制页眉的底部(即使我有一个错字并且在屏幕截图中显示页脚)。
我还使用 javascript 来计算 html 内容高度,它还显示了预期的高度,可以与左侧的页面标尺进行比较。
您可以在下面的图像中看到呈现的 html 不会占用标题的整个高度,从而留下额外的间距。
我在这里附上了原图!(不是缩略图)更好地说明问题。
有没有人遇到过这个问题或者知道我在绘制标题时做错了什么?
更新:
我现在简化了我的测试以排除页眉/页脚仅绘制正文,我看到了相同的结果。
看起来UIWebViewPrintFormatter
和UIMarkupTextPrintFormatter
都会将内容垂直缩小 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}}
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 轴上的文本输出所做的:
ios - 在 iOS 中更改图像的打印尺寸
在我的应用程序中,我让用户制作一张优惠券,预览它,然后他们可以选择打印该优惠券。现在它只是缩小屏幕以仅包含优惠券部分并打印,但它打印到全尺寸 8.5 x 11 并且使用大量墨水,因为优惠券在背景中是黑色的。如何将其更改为仅打印 2.5 x 3.5 英寸的纸张部分?
ios8 - iOS8 UIPrintPageRenderer 挂起
我正在使用 BNHtmlPdfKit 将 Html 呈现为 PDF。它工作得很好,但在 iOS8 中它只是挂起
老实说,我什至不知道如何调试它——没有错误消息,你可以继续按继续,但只是在同一个断点处中断。最后它只是超时。
有人有什么想法吗?
干杯
ios - 在自定义 UIPrintPageRenderer 中使用 UIFont 绘制字符串对象
我将 UIPrintPageRenderer 子类化为通过 AirPrint 绘制我自己的打印页面。我有一个简单的 String 对象,我想更改字体的大小。使用drawAtPoint withAttributes 方法,它的字符串被绘制在正确的位置,但字体名称和大小不变。是否可以在 UIPrintPageRenderer 的 drawPageAtIndex 方法中使用 NSAttributedStrings?
示例代码:
ios - UIPrintPageRenderer/HTML 到 PDF 问题:在渲染的 PDF 中添加了额外的空格
在将 UIWebview 中的 HTML 渲染为 PDF 页面时,我们在使用 UIPrintPageRenderer 时遇到问题。HTML 包含一个包含多行 (....) 的表格,其高度是已知的。
UIWebView 可以很好地呈现该 HTML,但一旦通过 UIPrintPageRenderer 转换为 PDF,就会在行之间添加额外的空格。请参阅附有 2 行表格的示例。PDF 中添加了一个额外的空间,而 HTML 中不存在。 我们使用该库:https ://github.com/iclems/iOS-htmltopdf 任何帮助都会很好。问候,摩根。
ios - UIPrintPageRenderer 是否有“renderInContext”的等价物
您可以调用renderInContext
图层。有类似的东西UIPrintPageRenderer
吗?我基本上想UIImage
从 PDF 文档的第一页创建一个UIPrintPageRenderer
. 除了上下文部分的实际渲染之外,我还有其余的代码。
编辑:我在这里误解了一些基本的基本概念吗?如果是这样,请随时给我一个快速的教训。
objective-c - 当方向设置为横向时,UIPrintInteractionController 会附加一个空白页
我正在尝试使用将字符串发送到打印机UIMarkupTextPrintFormatter
,当我不更改页面方向时一切都很好 - 默认情况下设置为纵向。
但是,当我将页面方向设置为横向时,一个空白页面会附加到呈现的输出中,就好像页边距超出了第一页一样。
这是我的打印代码:
另外需要注意的是,当页面设置为横向时,Xcode 会记录一些与自动布局相关的错误。
我试图只打印第一页,但找不到任何关于设置页面范围的信息,可以设置UIMarkupTextPrintFormatter
一个startPage
变量,但设置它并不走运,即使我将它设置为第二页,它也会呈现为t 设置为任何东西。
我可以通过删除空白页或仅将打印范围设置为第 1 页来解决此问题,但到目前为止我无法完成其中任何一个。有任何想法吗?
swift - 从 UIWebView 创建 PDF
我在从 UIWebView 创建 PDF 时遇到问题。
一切正常,但如果我在 HTML 中使用背景图片,它就会消失。有谁知道怎么了?