gpt4 book ai didi

iphone - 如何验证 NSData 是 PDF?

转载 作者:太空狗 更新时间:2023-10-30 03:47:27 25 4
gpt4 key购买 nike

正在开发一个在 UIWebView 中显示 nsdata(html 和 pdf)的提要阅读 iPhone 应用程序。我在某些 PDF 验证逻辑中遇到了障碍。我有一个 NSData 对象,我知道它包含一个扩展名为 .pdf 的文件。我想进一步限制无效的 PDF。这是我第一次尝试验证代码,它似乎适用于大多数情况:

// pdfData is an NSData *
NSData *validPDF = [[NSString stringWithString:@"%PDF"] dataUsingEncoding: NSASCIIStringEncoding];
if (!(pdfData && [[pdfData subdataWithRange:NSMakeRange(0, 4)] isEqualToData:validPDF])) {
// error
}

不幸的是,几天前上传了一个新的pdf。从某种意义上说,它是有效的,即 UIWebView 可以很好地显示它,但它没有通过我的验证测试。我已经追踪到这个问题是因为它一开始是一堆垃圾字节,%PDF 出现在第 14 组十六进制字符的中间(25 或 % 恰好是第 54 个字节):

%PDF: 25504446
Breaking PDF: 00010000 00ffffff ff010000 00000000 000f0100 0000b5e0 04000200 01000000 ffffffff 01000000 00000000 0f010000 0099e004 00022550 44462d31 etc...

将 NSData 验证为 PDF 的最佳做法是什么?
这个特定的 PDF 可能有什么问题(它声称它是由 PaperPort 11.0 编码的,不管它是什么)?

谢谢,

迈克

最佳答案

swift 4

extension Data {
var isPDF: Bool {
guard self.count >= 1024 else { return false }
let pdfHeader = Data(bytes: "%PDF", count: 4)
return self.range(of: pdfHeader, options: [], in: Range(NSRange(location: 0, length: 1024))) != nil
}
}

关于iphone - 如何验证 NSData 是 PDF?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3823541/

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