Khi làm việc trên ứng dụng iPhone đọc nguồn cấp dữ liệu hiển thị nsdata (html và pdf) trong giao diện người dùng UIWebView. Tôi đang đánh một cái bẫy trong một số logic xác thực PDF. Tôi có một đối tượng NSData mà tôi biết có chứa một tệp có phần mở rộng .pdf. Tôi muốn hạn chế các tệp PDF không hợp lệ nhận thêm bất kỳ. Đây là lần thử đầu tiên của tôi vào mã xác thực, dường như hoạt động trong phần lớn các trường hợp:Làm cách nào để xác thực rằng NSData là một tệp PDF?
// pdfData is an NSData *
NSData *validPDF = [[NSString stringWithString:@"%PDF"] dataUsingEncoding: NSASCIIStringEncoding];
if (!(pdfData && [[pdfData subdataWithRange:NSMakeRange(0, 4)] isEqualToData:validPDF])) {
// error
}
Thật không may, một tệp PDF mới đã được tải lên cách đây vài ngày. Nó hợp lệ theo nghĩa là UIWebView sẽ hiển thị nó tốt, nhưng nó không kiểm tra xác thực của tôi. Tôi đã theo dõi vấn đề về thực tế rằng đó là một loạt các byte rác ngay từ đầu, với% PDF đến giữa tập hợp các ký tự hex thứ 14 (25 hoặc% chính xác là byte thứ 54):
%PDF: 25504446
Breaking PDF: 00010000 00ffffff ff010000 00000000 000f0100 0000b5e0 04000200 01000000 ffffffff 01000000 00000000 0f010000 0099e004 00022550 44462d31 etc...
Thực tiễn tốt nhất để xác thực NSData là tệp PDF là gì?
Điều gì có thể sai với tệp PDF cụ thể này (nó tuyên bố rằng nó đã được mã hóa bởi PaperPort 11.0, bất kể đó là gì)?
Cảm ơn,
Mike
không có gì trong ImageIO có thể giúp với điều này? – nielsbot