将EPUB文件转换为PDF格式

我想知道在Ubuntu中将epub文件转换为pdf的方法。无论是使用GUI还是命令行转换,只要我的epub能够转换为pdf即可。谢谢。
7个回答

你绝对会喜欢上Calibre。它可以将几乎任何文件类型转换为其他文件类型,只要源文件没有数字版权管理(如亚马逊、Adobe等)。如果有数字版权管理,请查看Apprentice Alf's blog以获取使用Calibre插件去除数字版权管理的帮助。请勿使用数字版权管理解除工具盗版图书或违反与供应商的协议。使用它可以让你在任何设备上以任何格式享受你的图书
Calibre还是一款功能强大的电子书管理程序,几乎可以做任何事情。它可以管理Kindle、安卓手机/平板等。如果需要,它甚至可以通过一键点击将图书发送到你的Kindle邮箱地址。你绝对不会失望的 :-)
从终端中输入以下命令进行安装: sudo apt-get install calibre 或者在Ubuntu软件中心搜索并安装。
要实际转换EPUB文件,可以使用以下命令:
使用以下命令将EPUB文件转换为PDF文件:

ebook-convert file.epub file.pdf (有关详细信息,请参阅this的其他答案)

或者您可以通过Calibre GUI查看转换对话框的详细信息。


10我同意Calibre是正确的选择,但我不会安装存储库中的版本,因为它们已经过时了。几乎每个星期五都会有一个新版本,所以我会使用Calibre网站上推荐的命令进行安装: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()" - To Do
IOError: [Errno socket error] [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:590) - noobninja
4sudo -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()" - noobninja
1有关转换系统的完整文档,请参阅http://manual.calibre-ebook.com/conversion.html - The Demz
@ToDo的代码产生了错误,请使用noobninja的代码(14.04LTS)。 - Jadeye
只是一个愚蠢的提示,在安装calibre之后,可以使用以下命令(不带引号)将文件夹中的所有文件转换为.epub格式:"find . -name *.epub -exec ebook-convert {} {}.pdf ;" - FabricioFCarv
官方网站最新的安装推荐:sudo -v && wget -nv -O- https://download.calibre-ebook.com/linux-installer.sh | sudo sh /dev/stdin W - aderchox
Okular可以打开epub文件。然后你可以直接将其打印为pdf文件。 - Rainer Glüge

sudo apt install pandoc
pandoc -f epub -t pdf infile.epub -o outfile.pdf

cannot produce pdf output from pdf - nilon
听起来你的来源实际上是一个PDF文件,而不是某个epub文件。 - Phillip -Zyan K Lee- Stockmann

  1. 从默认的Ubuntu软件源中使用sudo apt install calibre命令安装Calibre。
  2. 打开Calibre并点击菜单中的添加图书图标。将会打开一个文件选择窗口。
  3. 浏览到您想要添加的epub文件,并选择一个或多个epub文件添加到Calibre中。
  4. 在中央窗格的Calibre库中选择一个或多个epub文件。或者在搜索框中输入formats:"=EPUB"来搜索只有EPUB格式文件,并从过滤后的库列表中选择一个或多个epub文件。然后点击Calibre菜单中的转换图书图标。
  5. 将会打开一个新的转换窗口。在输入格式中选择EPUB,在输出格式中选择PDF。点击确定按钮开始转换文件。
  6. 要找到您的PDF文件,点击转换为PDF的文件。在Calibre右侧的窗格中,您将看到一个名为路径:的条目。点击打开。点击"点击打开"的链接,以在PDF文件所在的目录中打开一个新的文件浏览器窗口。

2我尝试过这个,但在将epub转换为pdf时出现了错误。 - CodeConnoisseur

epub to pdf converter

在尝试calibre之前,我实际上使用了上述程序进行文件转换,这是一个命令行epub到pdf转换器,它具有一些方便的选项。

使用方法:

1)将文件解压缩到方便的位置,并在终端中切换到解压后的文件夹

2)使.sh文件可执行

 chmod +x ./epub2pdf.sh 

3) 运行文件
 ./epub2pdf.sh <path-to-epub-file>

默认的输出目录是“home”文件夹,但可以通过属性文件进行大量定制,从而改变它。
虽然这个程序已经有一段时间没有更新了,但它的功能非常好,我认为对于那些想将epub转换为pdf的人来说,这可能是一个不错的选择。

这是我的食谱:
pandoc -s -t latex --toc --chapters \
        --latex-engine=lualatex $BOOK.epub -o $BOOK.pdf

如果添加 --toc--chapters 不产生所期望的结果,可以将它们省略。有时候 EPUB 内部的图片无法与 LaTeX 一起使用,因此在处理过程中需要进行转换。
$ 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

这是一个解决办法。检查一下是否可以生成一个文本文件:
$ 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'工具(来自imagemagick程序套件)创建新的LaTeX兼容的JPEG图像,以取代提取的.jpg图像。
$ cd images
$ convert logo1.jpg logo1.jpeg 

替换之前用pandoc提取的.jpg图片为新创建的.jpeg图片。
$ mv logo1.jpeg logo1.jpg 

可以在命令行中使用单个for循环来完成这个任务。
$ 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引擎在与之前提取ePub图像的相同目录中寻找其\includegraphics(通过添加选项--data-dir=.来指定用户数据目录以搜索pandoc数据文件。如果未指定此选项,则将使用默认的用户数据目录。在Unix系统中为:$HOME/.pandoc)。

$ pandoc \
-s -t latex \
--toc --chapters \
--latex-engine=lualatex \
--data-dir=. $BOOK.epub -o $BOOK.pdf

你好,感谢您的回复。只是想报告一下,使用 lualatex 引擎会导致错误。但是使用 xelatex 则完全没有问题:pandoc -s -t latex --toc --latex-engine=xelatex $BOOK -o $BOOK.pdf - milia

请先通过运行以下命令安装calibre软件。
sudo apt-get -y install calibre 

之后,您可以使用以下方法将您的epub文件简单地转换为pdf
ebook-convert my-book.epub my-book.pdf --enable-heuristics

PS:我真的很喜欢在这里看到的类似帖子上的答案:https://askubuntu.com/a/170119

9嗯,你弄错了。这个问题是关于将 EPub 转换为 PDF,不是反过来。 - David Foerster
是的,应该反过来,但是想法已经很清楚了。首先安装sudo apt-get -y install calibre,然后简单地运行ebook-convert my-book.epub my-book.pdf --enable-heuristics - Evgeny Bobkin
1calibre是一个庞大的软件包。当前安装需要:执行此操作后,将使用额外的906 MB磁盘空间。 - Scott Wade

只需在能够打印为PDF的文档查看器中打开EPUB文件即可。对我来说,okular效果非常好。