标签: ios-pdfkit

如何摆脱 PDFView 中的“突出显示”上下文菜单项?

我正在使用 PDFKit 渲染 PDF,并使用“UIMenuController”添加了自定义菜单。但现在从 iOS 16 开始已弃用。

\n

我使用以下代码删除 share\xe3\x80\x81lookup 菜单项:

\n
@available(iOS 13.0, *)\nopen override func buildMenu(with builder: UIMenuBuilder) {\n    builder.remove(menu: .lookup)\n    builder.remove(menu: .share)\n    builder.remove(menu: .replace)\n    super.buildMenu(with: builder)\n}\n
Run Code Online (Sandbox Code Playgroud)\n

但是,当用户长按选择 PDF 中的文本时,无法删除“突出显示”上下文菜单。有没有办法摆脱这个菜单项?以及如何在 PDFView 中使用 UIEditMenuInteraction ?

\n

任何帮助将非常感激。

\n

ios swift ios-pdfkit ios16

7
推荐指数
1
解决办法
854
查看次数

检测 PDFView 确实滚动

iOS 上的 PDFKit 是否公开了 PDFView 的底层 UIScrollView 或者是否有任何其他方法可以直接检测用户是否滚动了 PDFView?

我的用例是在滚动文档时隐藏导航栏,因此作为一种解决方法,我已将自己的平移手势识别器添加到 PDFView 的父级,并在gestureRecognizerShouldBegin 中隐藏并始终返回 false 但我希望有更像 UIScrollViewDelegate 的东西我在文档中遗漏了。

cocoa-touch ios ios-pdfkit

6
推荐指数
1
解决办法
3224
查看次数

iOS PDFKit 在 PDFView 中调整 pdf 框架

我有一个 PDF,其中包含不同高度的页面,我希望以水平分页方式显示,一次一页,页面之间没有间隙,并且每个页面的顶部与视图的顶部对齐。例如:

所需的渲染

我想使用PDFKit's PDFView,特别是因为这些设置可以通过以下方式实现:

let pdfView = PDFView()
pdfView.displayDirection = .horizontal
pdfView.displaysPageBreaks = false
pdfView.usePageViewController(true, withViewOptions: nil)
Run Code Online (Sandbox Code Playgroud)

但是,这会产生以下结果:

实际渲染

这是由于页面的高度不同。每个页面在 中垂直居中PDFView,如果页面的高度大于视图的高度(例如第 2 页),则按比例缩放以适应。

为了尝试解决第一个问题,垂直偏移,我尝试了几件事。首先,这是毛,我知道这是错的,检查视图层次结构,并找到个人视图(已命名的类的观点后PDFTextInputView,页面呈现内我已经试过调整其框架的)origin.y0时最外面的滚动视图(另一个私人视图)滚动。这是因为每当下一页或上一页滚动到视图中时,页面都会呈现在视图的顶部。但是,一旦用户捏住以放大该页面,其框架会自动跳回居中。除了依赖私有视图层次结构之外,这种方法是行不通的。

为了尝试解决“高页面问题”(第 2 页),我尝试在出现新页面时调整 PDFView 的比例因子。遗憾的是,.PDFViewPageChanged通知仅滚动视图结束减速才会触发,因此页面在滚动时会缩小,然后当我调整比例因子时,它会跳转以适应屏幕的宽度。然后我转向.PDFViewVisiblePagesChanged在下一页/上一页出现时确实会触发的.PDFViewPageChanged.

我尝试过的其他事情:

  • 调整transform文档视图
  • 截取捏合手势并调整文档视图的中心
  • 创建我自己的页面控制器并每页渲染一个 PDF 页面(不使用pdfView.usePageViewController

有没有人对我如何实现我所追求的有任何想法?

ios swift ios-pdfkit apple-pdfkit

6
推荐指数
1
解决办法
1524
查看次数

如何使用 Swift 从 PDF 中提取图像?

我知道PDFKit允许将 text+formatting 提取为NSAttributedString,但是我找不到有关使用 Swift 从任何 PDF 文档中提取每个单独数字的任何信息。

任何帮助将不胜感激,谢谢!

编辑:https : //stackoverflow.com/a/40788449/2303865解释了如何将整个页面转换为图像,但是我需要解析已经属于一系列 PDF 文档的所有图像,而不知道它们的位置,所以该解决方案不适用于我的问题。

ios swift ios-pdfkit

5
推荐指数
1
解决办法
1510
查看次数

在iOS 12中使用PDFKit时,如何处理由内存泄漏引起的崩溃?

我在使用pdfKit CollectionViewController,每个单元格都有一个不同的PDF,将从文档目录中下载PDF。

当我在iOS 11下使用以下代码时,它可以正常工作。但是,当我在iOS 12上使用它时,会发生内存泄漏和随后的崩溃。

这是我得到的错误:

线程4:EXC_BAD_ACCESS(代码= 1,地址= 0x107b5401c)

这是我的代码:

func loadData(_ finame: String) {
    let dbPath = finame
    let url = URL(fileURLWithPath: dbPath)
    if let pdfDocument = PDFDocument(url: url) {
        self.pdfView.document = pdfDocument
        self.pdfView.autoScales = true
        self.pdfView.maxScaleFactor = 4.0
        self.pdfView.minScaleFactor = pdfScaleFactor
        if #available(iOS 12.0, *) {
            self.pdfView.pageShadowsEnabled = false
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我该如何解决这个问题?

ios swift ios-pdfkit

5
推荐指数
0
解决办法
300
查看次数

iOS PDFkit 无法向 pdf 文档添加自定义属性

我正在尝试将自定义属性添加到 pdf 文档元数据,但在savedocument(document)后,自定义属性未添加到文档中。

    @IBOutlet weak var pdfContainerView: PDFView!
    private func setDocumentAttributes(){
        if let document = pdfContainerView.document{
            var attributes = document.documentAttributes
            attributes!["NewAttribute"] = "Test"
            document.documentAttributes = attributes
            savedocument(document)
        }
    }
Run Code Online (Sandbox Code Playgroud)

pdf ios ios-pdfkit

5
推荐指数
0
解决办法
287
查看次数

自定义 UIMenuItem 不适用于 PDFKit 的 PDFView

我正在尝试UIMenuItem为我的PDFView

这是我在示例 Xcode 项目中所做的

#import <PDFKit/PDFKit.h>
#import <objc/runtime.h>

#import "ViewController.h"

@interface ViewController ()

@property(nonatomic) PDFDocument *document;
@property(nonatomic) PDFView *pdfView;

@end

@implementation ViewController

- (void)viewDidLoad {
  [super viewDidLoad];
  // Do any additional setup after loading the view.

  NSURL *pdfPath = [[NSBundle mainBundle] URLForResource:@"pdf" withExtension:@"pdf"];

  _document = [[PDFDocument alloc] initWithURL:pdfPath];
  _pdfView = [[PDFView alloc] initWithFrame:CGRectZero];
  _pdfView.document = _document;

  [self.view addSubview:_pdfView];

  _pdfView.translatesAutoresizingMaskIntoConstraints = NO;
  [_pdfView.topAnchor constraintEqualToAnchor:self.view.topAnchor].active = YES;
  [_pdfView.bottomAnchor constraintEqualToAnchor:self.view.bottomAnchor].active = YES;
  [_pdfView.leadingAnchor constraintEqualToAnchor:self.view.leadingAnchor].active = YES;
  [_pdfView.trailingAnchor constraintEqualToAnchor:self.view.trailingAnchor].active = YES; …
Run Code Online (Sandbox Code Playgroud)

objective-c ios ios-pdfkit apple-pdfkit ios13

5
推荐指数
1
解决办法
259
查看次数

Add a tap gesture recognizer to PDFView in iOS 13

My code works in iOS 12. But after upgrading to iOS 13, it does not work.

let pinPointRecognizer = UITapGestureRecognizer(target: self, action: #selector(self.pinPoint(sender:)))
pinPointRecognizer.numberOfTapsRequired = 1
self.pdfView.addGestureRecognizer(pinPointRecognizer)
Run Code Online (Sandbox Code Playgroud)

I have tried adding the pinPointRecognizer.numberOfTouchesRequired = 2 and it can trigger pinPoint() function. But I want to trigger pinPoint() in a single tap.

Is this behaviour a bug that will be fixed in the future iOS version? Is there a workaround to fix this?

Thanks!

Updated:

Thank you all for your reply! …

uitapgesturerecognizer ios-pdfkit ios13

5
推荐指数
1
解决办法
358
查看次数

当 autoScales 设置为 true 时,iOS PDFView 会导致底层断言

我正在开发一个需要显示相当大的 PDF 文件的应用程序。我使用 PDFKits PDFView 来实现此目的,然后将其包装在 UIViewRepresentable 中。问题是,设置时PDFView.autoScales = true我在启动时出错。该应用程序仍然可以运行,自动缩放功能也可以运行,但我仍然想修复该错误。我还应该提到,在 iOS 开发方面,我完全是一个初学者。

这是我的 makeUIView 的实现:

func makeUIView(context: UIViewRepresentableContext<PDFKitRepresentedView>) -> PDFKitRepresentedView.UIViewType {
    let pdfView = PDFView()
    pdfView.autoScales = true
    pdfView.pageBreakMargins.top = 0.0
    pdfView.pageBreakMargins.bottom = 0.0
    pdfView.pageShadowsEnabled = false
    pdfView.document = PDFDocument(url: self.url)        
    return pdfView
}
Run Code Online (Sandbox Code Playgroud)

这是错误:

[Assert] -[UIScrollView _clampedZoomScale:allowRubberbanding:]: Must be called with non-zero scale
[Unknown process name] CGAffineTransformInvert: singular matrix.
Run Code Online (Sandbox Code Playgroud)

每当 PDFView 初始化时,它们似乎都会被打印。有什么想法可能是什么问题吗?

uikit ios swift ios-pdfkit swiftui

5
推荐指数
2
解决办法
1425
查看次数

在 iOS 16 PDFKit 中禁用自动 PDF 分析

自从升级到 iPadOS 16 以来,Xcode 的控制台已经充满了诸如[VKImageAnalyzer processRequest:] returned 0或 之类的消息[VKImageAnalyzer processRequest:] block returned NULL analysis- 这发生在模拟器中,并且在物理设备上我收到有关字体的警告,例如CoreText performance note: Client called CTFontCreateWithName() using name "Times-Roman" and got font with PostScript name "TimesNewRomanPSMT". For best performance, only use PostScript names when calling this API.

我的应用程序使用 PDFKit 显示乐谱的 PDF 文件,因此 iOS 16 中引入的 PDF 文件的自动图像分析与其完全无关。除了向控制台发送垃圾邮件之外,此功能还会消耗不必要的资源。

我找不到任何有关禁用 PDFKit 中自动 PDF 分析的方法的文档。任何想法都会非常受欢迎。

ocr ios-pdfkit visionkit ios16 ipados16

5
推荐指数
0
解决办法
241
查看次数