我也尝试过以下解决方案来查看uiwebview中的djvu文件,但这没有帮助.
1.在uiwebview中直接打开djvu文件
let urlPage : URL! = URL(string: "http://192.168.13.5:13/myData/5451890-OP.djvu") webView.loadRequest(URLRequest(url: urlPage))
2.其次,我试图将djvu文件转换为pdf,并将转换后的pdf文件转换为视图.
参考链接:https://github.com/MadhuriMane/ios-djvu-reader
但这会使镜像质量低下.
3.我试图在UIDocumentInteractionController()的帮助下预览文件,它的委托方法却没有用.
请建议任何可行的方法.
解决方法
1)创建Web服务以将djvu文件转换为pdf
例如:http://example.com/djvutopdf/djvuFile/outputFile
2)在UIWebView中读取PDF文件
要创建Web服务,我假设您可以访问任何Linux分布式服务器,在我的案例中是Ubuntu 16.04.
第一步:安装djvulibre
sudo apt-get install djvulibre-bin ghostscript
第二步:测试运行$djvups inputFile.djvu | ps2pdf – outputFile.pdf.
您也可以使用ddjvu命令.但是,使用ddjvu命令转换的文件比djvups命令大10倍.您可以考虑使用–help探索模式,质量等设置.
第三步:创建Web服务(为了简单起见,我使用PHP,在您方便时使用任何东西[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; ?>
最后一步:在App中加载PDF
正如Apple建议的那样,考虑使用WKWebView代替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 } }
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。