gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 07:35:38 25 4
gpt4 key购买 nike

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

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

A. UIWebView

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

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

B. quartz

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

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

有人可以帮我解答一下吗?

感谢您的宝贵时间!

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

嗨!

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

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

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

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

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

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

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

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

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

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

希望这有帮助。

最佳答案

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

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

关于ipad - iPhone操作系统3.2; PDF渲染;用户互动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2914125/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com