2010-05-24 37 views
5

Tôi muốn xem tệp .doc, .docx, .rtf, .ppt trong iphone.xem tệp .doc, .docx, .rtf, .ppt trong iphone bằng cách sử dụng Webview

Nhưng tôi đoán có điều gì đó không ổn ở bên cạnh tôi và không hoạt động đối với các định dạng trên nhưng mã của tôi hoạt động tốt cho các tệp .txt và .pdf.

Tôi đã đọc tài liệu liên quan đến Webview, nó cho biết nó hỗ trợ xem tài liệu ở trên.

dưới đây là đoạn tôi cho .doc

[webView loadData:requestData MIMEType:@"application/msword" textEncodingName:@"UTF-8" baseURL:nil]; 

cho .ppt Tôi đang sử dụng loại MIME như "application/vnd.ms-powerpoint"

Lưu ý: Nếu tôi làm kiểu MIME là "text/html" cho .doc/.rtf sau đó nó hiển thị một số dữ liệu rác Vì vậy, tôi nghĩ rằng có cái gì đó còn thiếu trong loại MIME từ phía tôi.

Mọi trợ giúp đều được đánh giá cao.

Đang chờ trả lời của bạn.

Cập nhật: ........

Có vẻ như có một số vấn đề với NSData cho mở các loại định dạng tập tin. Dữ liệu của tôi được mã hóa vì vậy tôi không thể sử dụng requestWithURL trực tiếp và điều khác là tôi cần phải vượt qua chứng chỉ để có được các tập tin và các chứng chỉ không làm việc proplerly nếu tôi lưu các thông tin sử dụng

[[NSURLCredentialStorage sharedCredentialStorage] setDefaultCredential:credential 
             forProtectionSpace:protectionSpace]; 

và sau đó làm cho yêu cầu sử dụng bên dưới

[webView loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:[urlStr stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]]] ] 

Có cách nào để sử dụng NSData cho các định dạng trên không?

+0

Vui lòng tham khảo này tập hợp các kiểu MIME (chỉ hoạt động cho pptx) - http://stackoverflow.com/questions/4212861/what-is-a -correct-mime-type-for-docx-pptx-etc –

Trả lời

4

Không phải tất cả định dạng (docx) đều được hỗ trợ. Điều này trông giống như official word. Trong ví dụ Apple không chỉ định một loại mime.

This question đề xuất bạn phải sử dụng NSURLRequest thay vì loadData.

Chỉnh sửa:

Theo tôi thấy, bạn không thể chuyển trực tiếp dữ liệu để tảiData cho các loại này.

Công việc dễ dàng xung quanh là ghi vào tệp tạm thời. Bạn có thể xóa nó trong webViewDidFinishLoad hoặc, về mặt kỹ thuật, ngay sau khi tệp đã được mở.

Công việc khó khăn xung quanh là sử dụng NSURLCache. Bạn sẽ có thể thực hiện một NSURLCache tùy chỉnh và có WebKit sử dụng nó thông qua setSharedURLCache. Bộ nhớ cache của bạn về cơ bản sẽ biết cách lấy các tệp được mã hóa cục bộ của bạn và giả vờ rằng chúng được lưu trữ. Tôi đã không thử điều này, nhưng tôi nghĩ rằng đó là đặt cược tốt nhất của bạn. Cách tiếp cận này có thể bị chặn giống như loadData.

+1

Cảm ơn bạn đã trả lời. Bởi dữ liệu được mã hóa nên có vẻ như tôi không thể sử dụng NSURLRequest trực tiếp. Có cách nào tôi có thể sử dụng NSData để mở các tệp .doc, .ppt của tôi không. – Ekra

+1

Cảm ơn bạn đã trả lời. Tôi đã thử phương pháp đầu tiên hoạt động. Làm việc trên phương pháp thứ hai – Ekra

0

Dùng thử trên iPhone thay vì Simulator

3

Bạn cần cung cấp thứ gì đó cho baseURL :.Ví dụ:

[webView loadData:requestData MIMEType:@"application/msword" textEncodingName:@"UTF-8" baseURL:[NSURL URLWithString:@"http://localhost/"]]; 

Làm việc cho tôi ngay bây giờ.

5

Thử sử dụng QuickLook Framework là một tính năng tuyệt vời do Apple cung cấp. Nếu bạn đã thấy điều này khi bạn chọn BẤT K F FILE trên MAC System và nhấn SPACE BAR thì bạn sẽ xem trước nhanh chóng tệp của bạn có thể là bất kỳ thứ gì ... * .pdf, * .doc, * .docx hoặc bất kỳ thứ gì. .. Ngay cả khi bạn chưa cài đặt các phần mềm đó cho cùng một tệp, bạn sẽ nhận được một PREVIEW cho các tệp đó ...

Khuôn khổ QuickLook cũng có chức năng tương tự ... Vui lòng xem một số liên kết tương tự. .

+1

tôi biết bạn muốn sử dụng WebView nhưng điều này cũng tốt nhất cho bất kỳ tệp nào ... :) – DShah

+1

cảm ơn nhận xét của bạn. Tôi cũng sẽ tìm tùy chọn này – Ekra

Các vấn đề liên quan