iPhone操作系统3.2; PDF渲染;用户互动

2024-01-21

我需要创建一个 iPad 应用程序来渲染多个 PDF 文件(一个文件包含一页)。 每个页面都应该是可滚动、可缩放的,如果用户点击 PDF 的一部分,应该会弹出一个网站或照片库。

目前我认为我可以通过以下方式做到这一点:

A.UIWebView

很好地显示 pdf,滚动和缩放也有效。但是实现PDF的可点击部分看起来很麻烦。

  1. 我不知道是否可以使用 CGPDFContextSetURLForRect
  2. 从 UIWebView 获取触摸事件来执行 CGPDFContextSetURLForRect 之类的操作,我自己看起来像是一些“非常糟糕”的黑客行为。看:http://github.com/psychs/iphone-samples/blob/master/WebViewTappingHack/Classes/PSWebView.m http://github.com/psychs/iphone-samples/blob/master/WebViewTappingHack/Classes/PSWebView.m

B、石英

我找到了一些描述如何通过 Quartz 直接显示 PDF 的资源。 看:http://developer.apple.com/iphone/library/documentation/GraphicsImaging/Conceptual/drawingwithquartz2d/dq_pdf/dq_pdf.html http://developer.apple.com/iphone/library/documentation/GraphicsImaging/Conceptual/drawingwithquartz2d/dq_pdf/dq_pdf.html

  1. 这将允许使用 CGPDFContextSetURLForRect
  2. 但我不知道这是否会像 UIWebView 一样支持滚动和缩放?

有人可以告诉我这个吗?

谢谢你的时间!

[编辑:将 3.0 更改为 3.2] [编辑:我的“解决方案”]

Hi!

我可以为 PNG 提供一个可行的实现,但不能为 PDF 提供一个可行的实现。

[抽象的] 我的解决方案是渲染内容,拦截其上的触摸,如果是一次触摸,则检索相对于显示内容的坐标,最后从包含交互区域作为坐标的映射中查找要执行的操作以及单击它们时要执行的操作。

[对于PNG] 实现这样的想法比我想象的要麻烦得多...... 我的实现在很大程度上取决于您想要显示的内容,因为这确实适用于 UIImageView,但我无法让它与 UIWebView 一起工作。

首先,您需要 UIScrollView 和 UIImageView 来呈现内容并支持滚动/缩放。 然后您需要实现一些处理来获取您感兴趣的触摸/手势。 请参阅:developer.apple.com/iphone/library/samplecode/ScrollViewSuite/Listings/1_TapToZoom_Classes_TapDetectingImageView_h.html

苹果的这个示例提供了使该部件正常工作所需的一切。 作为奖励,它还负责转换相对于内容视口的坐标,这非常方便! (否则,如果您的内容是可缩放/滚动的,您只会知道屏幕上发生的点击位置,而只有您需要的信息的一半)

[PDF] 如果你想用 PDF 做到这一点,第一件事就是你需要使用 UIWebView (也许你也可以通过 Quartz 或其他东西来做到这一点)

使用 UIWebView 进行触摸真的很痛苦! 网上提出了很多方法,但只有一种没有人做了它应该做的事情。 经过几天的谷歌搜索,我发现了这个宝石:cocoawithlove.com/2009/05/intercepting-status-bar-touches-on.html

所以...与 UIImageView 不同,子类化 UIWebView 不会给你带来任何好处,你必须子类化 UIApplicationMain 并实现其处理触摸事件的方法。 在这里,您可以重用上面苹果示例中的一些“触摸处理材料”。

现在,如果触摸是可缩放/滚动的,您需要将触摸的坐标转换为您的内容。与 UIImageView 不同,UIWebView 不会为您执行此操作!

我永远无法弄清楚如何从 UIWebView 获取所需的信息(哪个缩放级别的内容的哪一部分)来转换坐标,但由于从 PDF 到 PNG 的要求发生了变化,我不在乎让它工作太多。

希望这可以帮助。


使用 CGPDF* 运算符将允许您编写 UIPDFView,其操作与 UIImageView 完全相同,但使用 PDF 作为源图像。创建您自己的 UIView 自定义子类并实现 drawRect: 以最终调用 CGContextDrawPDFPage。基于快速谷歌搜索(因为我知道关键字),这一页 http://www.random-ideas.net/posts/42似乎很好地解释了事情的这一面。

然后,您可以直接用自定义 UIView 子类替换 UIImageView,并按照 PNG 解决方案的方式进行操作。

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

iPhone操作系统3.2; PDF渲染;用户互动 的相关文章

  • 使用特定的 url 启动 UIWebview

    我目前有一个包含四个按钮的视图 并且希望能够启动 UIWebview 并为每个不同的按钮提供特定的 url 我目前可以使用 url 从外部启动 safari 我知道我可以使用代码在每个按钮中显示 UIWebview 并且可以在 UIWebv
  • 直接将 .aspx 转换为 .pdf [关闭]

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

    我正在尝试将 XML 数据从网页转换为 PDF 文件 并且希望能够完全在 JavaScript 中完成此操作 我需要能够绘制文本 图像和简单的形状 我希望能够完全在浏览器中完成此操作 我刚刚写了一个名为jsPDF https github
  • 是否可以修改 PDF 表单字段名称?

    情况是这样的 我有一个 PDF 其中包含自动生成的 pdf 表单字段名称 问题是这些名称不太用户友好 它们看起来像 topmostSubform 0 Page1 0 Website Address 0 我希望能够更改它们 使它们类似于 We
  • AVCaptureSession 具有多个方向问题

    我正在尝试实现条形码扫描仪 我有一个 AVCaptureSession 它从 AVCaptureDevice 接收视频 我想支持所有方向 使用以下代码 当我运行应用程序时 纵向一切正常 然而 在横向方向上 视图会旋转 但视频输入不会旋转 所
  • iOS:提高图像绘制速度

    我有一系列想要制作动画的图像 UIImageView支持一些基本的动画 但不足以满足我的需求 我的第一个方法是使用UIImageView并设置image当图像属性 这太慢了 速度慢的原因是图像的绘制 这让我感到惊讶 我以为瓶颈会加载图像 我
  • 无法使用文件提供程序从内部存储打开 PDF 以便在 Android 8 和 9 上查看

    仅适用于 Android 8 和 9 我这里有一个 PDF 文件管理器 String url file storage emulated 0 Android data com verna poc files Download mypdf p
  • 编码员的 PDF 规范:Adobe 还是 ISO?

    我想编写一个可以读取和解码 pdf 文档的应用程序 现在我应该在哪里获取此文件格式的规格 PDF 格式是由 ISO 组织标准化的 但我不清楚哪里是获取此类信息的最可靠来源 什么是开始使用这种文件格式的好来源 您实际上可以使用您提到的两个来源
  • UICollectionView 未出现

    我正在尝试设置UICollectionView 以编程方式在我的视图控制器中扩展UIViewController 由于某种原因 我的收藏视图根本没有显示 以下是我所拥有的 为什么没有出现 我将它连接到委托和数据源并将其添加为子视图self
  • 在 Flash Player 10 中打开 pdf

    我需要在 Flash Player 10 中打开 PDF 该 swf 不会在浏览器中运行 并且系统上不会有 adobe reader 程序 我需要知道是否可以在 Flash 播放器中打开 PDF 而无需以任何方式进行转换 我在谷歌上搜索了无
  • jasper 报告 pdf 导出中忽略半透明(半透明)背景色

    问 为什么保存为 PDF 时 Alpha 信息会丢失 Jaspersoft studio 不允许我用 Alpha 指定颜色 因此 我尝试聪明地在着色元素上指定键 并更改代码中的颜色 如下所示 JasperReport jasperRepor
  • 在应用程序服务器上存储 PDF 一段有限的时间并可供下载

    您好 我正在使用 PrimeFaces 5 JSF 2 和 tomcat 有人可以向我展示或给我一个关于如何在应用程序服务器上在有限时间内存储 pdf 的想法吗 我正在使用 tomcat 然后下载它 如果这是用户请求的 此功能与发票相关 因
  • CSS Overflow 属性在 iPad 中不起作用

    我正在为 iPad 设计一些 html 页面 在尝试像 yscroll auto 这样的 css 溢出属性时 iPad 中没有出现滚动条 内容也没有滚动 我在 ipad 模拟器和设备中尝试过 有没有其他方法可以实现这个属性 请帮帮我 提前致
  • 在 iPad 上显示 PDF 文档 - 颜色问题

    我为 iPad 构建了一个 PDF 阅读器 在将预览中的文档与模拟器和设备进行并排比较时 我注意到一些颜色问题 最好的形容就是颜色变得更加浓郁 近距离使用的相似颜色之间的任何差异都会变得更加明显 而所有颜色总体上看起来都更亮 尽管大肆宣传将
  • PDF 附件 NodeMailer

    预先感谢您的回复 我编写了一些使用nodemailer 0 7 1的代码 它发送电子邮件并将pdf附加到电子邮件中 但是 pdf 附件在编码时会自行损坏或截断或发生其他情况 我之所以说这是附件之前的文件 即我本地的文件 是512kb 而电子
  • 将UIWebView显示的PDF保存到本地

    我有一个UIViewController与UIWebView显示一个 pdf 文件 具体取决于之前单击的行UITableView 现在我想添加一个按钮 供用户在本地保存此 pdf 文件以供离线使用 然后还有第二个UITableView它应该
  • HTML Mobile - 强制软键盘隐藏[重复]

    这个问题在这里已经有答案了 我正在为一家优惠券公司开发前端网站 我有一个页面 用户只需输入电话号码和花费的美元 我们想出了一个有趣的内置 Javascript 屏幕键盘 它易于使用且快速 但是 我正在寻找一种解决方案 以在用户聚焦并在这些字
  • UILongPressGestureRecognizer 不起作用,但将其替换为 UITapGestureRecognizer 效果很好。为什么?

    我有一个UIImageView with a UILongPressGestureRecognizer无论我如何配置手势识别器 似乎都不会检测到长按手势 但是 如果我把它换成UITapGestureRecognizer that工作得很好
  • 是否有一种直接的方法可以使用 iTextSharp 将一个 PDF 文档附加到另一个 PDF 文档?

    我在网上搜索了有关如何执行此操作的示例 我发现有些人似乎比他们需要的更多地参与其中 所以我的问题是 使用 iTextSharp 是否有一种相当简洁的方法将一个 PDF 文档附加到另一个 PDF 文档 最好这不会涉及第三个文件 只需打开第一个
  • 使用 MPMoviePlayerViewController 时的 iPad 旋转错误

    问题摘要 使用 MPMoviePlayerViewController 播放视频时更改 iPad 设备或模拟器的方向会导致视频播放器关闭时旋转状态不一致 这是 iPad SDK 3 2 中的一个已知错误 记录于http www openra

随机推荐