Pamiętając, że pliki .djvu są mniej popularne niż podobne formaty, takie jak EPUB, MOBI, PDF i inne formaty plików eBook, chciałbym zastosować następujące podejście, aby obejść problem.
1) stworzenie serwisu internetowego do konwertowania plików djvu na pdf Np .: http://example.com/djvuToPdf/djvuFile/outputFile
2) Czytaj plik PDF w UIWebView
stworzenie serwisu internetowego Przypuszczam, że masz dostęp do dowolny serwer rozproszony Linux, w moim przypadku Ubuntu 16.04.
Etap pierwszy: Instalacja djvulibre sudo apt-get install djvulibre-bin ghostscript
dwuetapową: Test Run $ djvups inputFile.djvu | ps2pdf - outputFile.pdf
. Możesz także użyć polecenia ddjvu
. Jednak pliki przekonwertowane za pomocą komendy ddjvu
są 10 razy większe niż polecenie djvups
. Warto rozważyć użycie --help
, aby poznać ustawienia, takie jak mode
, quality
i tak dalej.
Krok trzeci: Tworzenie usługi sieciowej (aby zachować rzeczy proste, używam PHP, używać niczego w dogodnym [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;
?>
końcowy etap: load PDF w App
As Apple radzę, zastanów się nad użyciem WKWebView zamiast 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
}
}
możesz przekonwertować pliki djvu na pdf, a następnie załadować w przeglądarce internetowej. –
Próbowałem tego samego. Ale nie można znaleźć żadnego rozwiązania do konwersji pliku djvu do pliku pdf. Czy możesz mi pomóc? –
możesz przekonwertować je online i przesłać na swój serwer hostingowy. http://djvu2pdf.com/ –