回答:
あなたは間違いなくキャリバーが欲しいです。ソースファイルにDRMがない限り(Amazon、Adobeなど)、事実上すべてのファイルタイプを他のファイルタイプに変換するために使用できます。DRMがある場合は、Apprentice AlfのブログでCalibreプラグインを使用して削除する方法を確認してください。DRMストリッパーを使用して書籍を海賊版にしたり、ベンダーとの契約に違反したりしないでください。それを使用して、あらゆるデバイスであらゆる形式の本を楽しむことができます。
Calibreは、ほぼすべてを実行できる素晴らしい電子書籍管理プログラムでもあります。Kindle、Androidフォン/タブレットなどを管理できます。必要に応じて、Kindleのメールアドレスにワンクリックで本をメール送信することもできます。失望することはありません:-)
ターミナルから:
sudo apt-get install calibre
または、Ubuntu Software Centerで検索してください
EPUBファイルを実際に変換するには、次のコマンドを使用できます。
ebook-convert file.epub file.pdf
(詳細については、この他の回答を確認してください)
または、Calibre GUIを使用して変換ダイアログの詳細を確認できます。
sudo -v && wget -nv -O- https://raw.githubusercontent.com/kovidgoyal/calibre/master/setup/linux-installer.py | sudo python -c "import sys; main=lambda:sys.stderr.write('Download failed\n'); exec(sys.stdin.read()); main()"
formats:"=EPUB"
、検索ボックスに入力してEPUB形式のファイルのみを検索し、中央のペインのフィルターされたライブラリリストから1つ以上のepubファイルを選択します。[ キャリバー]メニューの[ 書籍の変換 ]アイコンをクリックします。 calibreを試す前に、上記のプログラムを使用してファイルを実際に変換しました。コマンドラインepubからpdfへのコンバーターは、実際には便利なオプションがいくつかあります。
使用法:
1)ファイルを便利な場所に解凍し、ターミナルの解凍されたフォルダーに変更します
2).shファイルを実行可能にする
chmod +x ./epub2pdf.sh
3)ファイルを実行する
./epub2pdf.sh <path-to-epub-file>
デフォルトの出力ディレクトリはホームフォルダーですが、プロパティファイルを使用して変更できる多くのカスタマイズを利用できます。
このプログラムはしばらく更新されていませんが、非常に良好に機能し、epubをpdfに変換するために試してみるのは選択肢の1つであると考えました。
sudo apt install pandoc
pandoc -f epub -t pdf infile.epub -o outfile.pdf
これが私のレシピです:
pandoc -s -t latex --toc --chapters \
--latex-engine=lualatex $BOOK.epub -o $BOOK.pdf
additon場合--toc
とは、--chapters
望ましい結果を生成しません、これらを除外。epub内の写真は、ラテックスで使用するには無効な場合があるため、プロセスで変換する必要があります。
$ pandoc -s -t latex --toc --chapters \
--latex-engine=lualatex $BOOK.epub -o $BOOK.pdf
!LuaTeX error (file /tmp/tex2pdf.23440/3f21bef8dd2877aad72f5cddbf00284ca88fa0e7
.jpg): reading JPEG image failed (no marker found)
==> Fatal error occurred, no output PDF file produced!
pandoc: Error producing PDF
これは回避策です。texファイルを作成できるかどうかを確認します。
$ pandoc \
-s -t latex \
--toc --chapters \
--latex-engine=lualatex $BOOK.epub -o $BOOK.tex
epubコンテナに含まれる画像およびその他のメディアをパスDIRに抽出し、必要に応じて作成し、オプションで[LaTeX]ドキュメントの画像参照を調整して、抽出されたファイルを指すようにします--extract-media= DIR
。ePubファイルも含む現在のディレクトリを選択します。を追加し--extract-media=
ます。これは、現在のディレクトリに抽出することを意味します。$HOME/Documents
$ cd Documents
$ pandoc \
-s -t latex \
--toc --chapters \
--latex-engine=lualatex \
--extract-media=. $BOOK.epub -o $BOOK.tex
pandoc: extracting ./images/9781501144158.jpg
pandoc: extracting ./images/com-01.jpg
pandoc: extracting ./images/f0003-01.jpg
pandoc: extracting ./images/f0005-01.jpg
[ ----- extract-media logging shortened ---- ]
pandoc: extracting ./images/f0177-01.jpg
pandoc: extracting ./images/f0187-01.jpg
pandoc: extracting ./images/logo.jpg
pandoc: extracting ./images/logo1.jpg
pandoc: extracting ./images/title.jpg
「convert」ユーティリティを使用して新しいLaTeX互換JPEGイメージを作成することにより、抽出された.jpgイメージを廃止します(imagemagickプログラムスイートから)
$ cd images
$ convert logo1.jpg logo1.jpeg
そして、以前のpandocで抽出された.jpgイメージを、新しく作成された.jpegイメージに置き換えます。
$ mv logo1.jpeg logo1.jpg
for
コマンドラインで1つのループを使用してこれを行うことができます。
$ cd images/
$ for i in *.jpg; do convert $i `echo $i | sed 's/jpg/jpeg/'`; done
$ rm -f *.jpg
$ for i in *.jpeg; do mv $i `echo $i | sed 's/jpeg/jpg/'`; done
$ cd ..
最初のコマンドラインを再度実行しますが、今回は、LuaTeXエンジン\includegraphics
が--data-dir=DIRECTORY Specify the user data directory to search for pandoc data files. If this option is not specified, the default user data directory will be used. This is, in Unix: $HOME/.pandoc
、オプションを追加して、以前にePubイメージが抽出された場所と同じディレクトリ()を探します--data-dir=.
。
$ pandoc \
-s -t latex \
--toc --chapters \
--latex-engine=lualatex \
--data-dir=. $BOOK.epub -o $BOOK.pdf
calibre
次のコマンドを実行して最初にインストールしてください
sudo apt-get -y install calibre
その後、yout epub
ファイルを次のように単純に変換できますpdf
。
ebook-convert my-book.epub my-book.pdf --enable-heuristics
PS:私はここの同様の投稿で見た答えが本当に好きでした:https : //askubuntu.com/a/170119
sudo apt-get -y install calibre
および第二、単に実行ebook-convert my-book.epub my-book.pdf --enable-heuristics
sudo python -c "import sys; py3 = sys.version_info[0] > 2; u = __import__('urllib.request' if py3 else 'urllib', fromlist=1); exec(u.urlopen('http://status.calibre-ebook.com/linux_installer').read()); main()"