2012-01-13 76 views
8

Tôi đang cố gắng tải xuống nội dung pdf từ điểm cuối dịch vụ web đang đến dưới dạng nhị phân. Sau khi giải mã thành base64, tôi đính kèm tệp đã giải mã vào chế độ xem web, trong đó không tìm thấy lỗi tiêu đề pdf đang hiển thị.không tìm thấy tiêu đề PDF: '% PDF' không tìm thấy

Có ai biết cách tôi có thể tiến hành khắc phục lỗi này không? Tôi có bỏ lỡ bất kỳ bước nào ở đây không?

Cảm ơn.

+0

gì nhìn mã của bạn như thế nào? Lỗi đó rất có thể xảy ra nếu tệp PDF không tồn tại hoặc không thể là –

+0

mwinn22, tôi đang sử dụng lớp Base64 từ http://blog.objectgraph.com/index.php/2010/04/20/encrypting-decrypting-base64-encode -decode-in-iphone-objective-c/và chỉ giải mã giá trị từ mảng và lưu trữ trong nsdata. – kforkarim

Trả lời

2

Tôi gặp lỗi này khi phát triển ứng dụng đọc pdf của vấn đề là PDF không tồn tại ở nơi bạn gọi nó. Dữ liệu nhị phân đang được trả về là phản hồi lỗi mà dịch vụ web của bạn đang gọi. Ví dụ nếu tôi yêu cầu một tài liệu pdf tại địa chỉ:

http://localhost:8080/template/DocumentServlet?documentId=923447&JSSESIONID=77EFJD3IJD8I3MMWW2435353J

nếu tài liệu đó không tồn tại tại địa chỉ đó thì tôi sẽ nhận được một phản ứng lỗi, và đó là những gì các dữ liệu nhị phân được rằng đang được trả lại .

+0

matt, tôi có thể thấy dữ liệu đang được tải xuống và phân tích thành nsdata, có thể có khả năng tôi không giải mã đúng cách, bây giờ tôi không có lỗi đó nhưng nó không hiển thị bất kỳ thứ gì trên pdf. Chỉ cần pdf màu xám, và tôi đã viết thư cho pdf và đã cố gắng để mở pdf, nhưng nó mang lại cho tôi một lỗi các tập tin pdf bị hư hỏng. – kforkarim

+0

@kforkarim: Anh ấy không nói rằng không có dữ liệu, anh ấy nói rằng dữ liệu là phản hồi lỗi, không phải tệp PDF bạn đã cố gắng nhận. Đảm bảo rằng URL bạn đang cố gắng truy cập là URL chính xác và tài nguyên tồn tại và có thể truy cập được (bạn có quyền, có thể truy cập, v.v.). –

3

Hãy thử thêm một cái gì đó giống như

NSData *dataContent; // response data. 
CFDataRef myPDFData; 
myPDFData = (CFDataRef)dataContent; 
CGDataProviderRef provider = CGDataProviderCreateWithCFData(myPDFData); 

pdfDocument = CGPDFDocumentCreateWithProvider(provider); 

CGDataProviderRelease(provider); 

Sau đó tải pdfDocument vào webview của bạn.

hoặc xem xét tạo một trình chỉnh sửa zoomPDFViewer tùy chỉnh. Apple có một ví dụ tốt tại http://developer.apple.com/library/ios/#samplecode/ZoomingPDFViewer/Introduction/Intro.html thats những gì tôi đã làm như tôi không thể nhận được pdfdocument để tải một cách chính xác trong một webview.

0

đây là giải pháp nếu bạn sử dụng dịch vụ của SAP web: trong hệ thống SAP có một phương pháp để chuyển đổi dữ liệu nhị phân (XSTRING) để Base64: cl_http_utility => encode_x_base64 Sử dụng http nó có thể chuyển Base64 dữ liệu. Trong xcode tôi đã sử dụng thư viện này: a link

// 3) Decode Base 64 
// Then you can put that back like this 
NSData *b64DecData = [Base64 decode:b64EncStr]; 

thì: [webDisplay loadData:b64DecData MIMEType:@"application/pdf" textEncodingName:@"utf-8" baseURL:nil];