2017-11-24 21 views
8

Tôi đang có ứng dụng iOS mà tôi muốn xem dữ liệu từ .djvu tệp. Có cách nào để đọc .djvu tệp trong Swift hoặc bên trong UIWebview.Cách xem tệp DJVU trong UIWebview

Tôi cũng đã thử các giải pháp sau để xem tệp djvu trong uiwebview nhưng điều đó không hữu ích.

1. Trực tiếp mở tập tin djvu trong uiwebview

let urlPage : URL! = URL(string: "http://192.168.13.5:13/myData/5451890-OP.djvu")   
webView.loadRequest(URLRequest(url: urlPage)) 

2. Thứ hai tôi đã cố gắng để chuyển đổi tập tin djvu sang pdf và cho thấy rằng chuyển đổi tập tin pdf vào xem. Tham chiếu liên kết: https://github.com/MadhuriMane/ios-djvu-reader Nhưng điều đó mang lại hình ảnh phản chiếu với chất lượng thấp.

3. Tôi đã thử xem trước tệp với sự trợ giúp của UIDocumentInteractionController() và phương thức ủy quyền nhưng không hoạt động.

Vui lòng đề xuất mọi cách có thể để thực hiện việc này.

+0

bạn có thể chuyển đổi tệp djvu thành pdf rồi tải trong chế độ xem web. –

+0

Tôi đã thử như cũ. Nhưng không thể tìm thấy bất kỳ giải pháp để tập tin djvu conver vào tập tin pdf. Bạn có thể giúp đỡ không? –

+0

bạn có thể chuyển đổi chúng trực tuyến và tải lên trên máy chủ lưu trữ của bạn. http://djvu2pdf.com/ –

Trả lời

2

Hãy nhớ rằng các tệp .djvu ít phổ biến hơn các định dạng tương tự như EPUB, MOBI, PDF và các định dạng tệp eBook khác, tôi sẽ có cách tiếp cận sau để khắc phục sự cố.

1) Tạo một dịch vụ Web để chuyển đổi các file djvu sang pdf cũ .: http://example.com/djvuToPdf/djvuFile/outputFile

2) Đọc các tập tin PDF trong UIWebView

Để tạo một Web Service tôi sẽ giả định rằng bạn có quyền truy cập vào bất kỳ máy chủ phân phối Linux nào, trong trường hợp của tôi là Ubuntu 16.04.

Bước một: Cài đặt DjVuLibre sudo apt-get install djvulibre-bin ghostscript

Bước hai: chạy thử nghiệm $ djvups inputFile.djvu | ps2pdf - outputFile.pdf. Bạn cũng có thể sử dụng lệnh ddjvu. Tuy nhiên, các tệp được chuyển đổi với lệnh ddjvu là lớn hơn 10x so với lệnh djvups. Bạn sẽ muốn xem xét sử dụng --help khám phá các cài đặt như mode, quality và cứ tiếp tục như vậy.

Bước ba: Tạo một Web Service (để giữ cho mọi thứ đơn giản, tôi sử dụng PHP, sử dụng bất cứ điều gì một cách thuận tiện [Python golang])

<?php 

$inputFile = $_GET['input_file']; 
$outputFile = $_GET['output_file']; 

// use shell exec to execute the command 
// keep in mind that the conversion takes quite a long time 
shell_exec(sprintf("djvups %s | ps2pdf - %s", $inputFile, $outputFile)); 

$name = $outputFile; 
//file_get_contents is standard function 
$content = file_get_contents($name); 
header('Content-Type: application/pdf'); 
header('Content-Length: '.strlen($content)); 
header('Content-disposition: inline; filename="' . $name . '"'); 
header('Cache-Control: public, must-revalidate, max-age=0'); 
header('Pragma: public'); 
header('Expires: Sat, 26 Jul 1997 05:00:00 GMT'); 
header('Last-Modified: '.gmdate('D, d M Y H:i:s').' GMT'); 
echo $content; 


?> 

chung kết Bước: tải PDF trong App

Như Apple khuyên, hãy xem xét sử dụng WKWebView thay cho UIWebView.

if let pdfURL = Bundle.main.url(forResource: "pdfFile", withExtension: "pdf", subdirectory: nil, localization: nil) { 
    do { 
     let data = try Data(contentsOf: pdfURL) 
     let webView = WKWebView(frame: CGRect(x:20,y:20,width:view.frame.size.width-40, height:view.frame.size.height-40)) 
     webView.load(data, mimeType: "application/pdf", characterEncodingName:"", baseURL: pdfURL.deletingLastPathComponent()) 
     view.addSubview(webView) 

    } 
    catch { 
     // catch errors here 
    } 

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