我尝试使用mybook.adoc
将mybook.pdf
转换为pandoc
,并收到以下错误。
$ pandoc -s mybook.adoc -t asciidoc -o mybook.pdf
pandoc: cannot produce pdf output with asciidoc writer
是否有其他工具可以代替pandoc
使用或与{{1}}一致使用?
如何将asciidoc转换为pdf?
答案 0 :(得分:8)
如果您使用的是VS Code,请Ctrl + SHFT + P
,然后键入AsciiDoc: Export document as pdf
答案 1 :(得分:5)
先决条件:所需要的只是Ruby(1.9.3或更高版本)
安装用于AsciiDoc的本机PDF转换器-Asciidoctor PDF:
gem install asciidoctor-pdf --pre
运行:
asciidoctor-pdf mybook.adoc
您应该在同一目录中获得文件mybook.pdf。
答案 2 :(得分:2)
AsciiDoc有几个工具链可以从AsciiDoc源渲染PDF。您可以使用基于Ruby的AsciiDoc - >虾 - >由Asciidoctor开发的PDF toolchain,或者您可以使用旧的AsciiDoc - > DocBook - > FOP toolchain。这些是渲染/发布程序,而Pandoc主要提供转换,最适合从另一种类型的源格式转换。
答案 3 :(得分:2)
将AsciiDoc文档转换为PDF的最简单方法如下-
完成。
答案 4 :(得分:1)
另一个我经常使用的工作流程是使用AsciiDoctor处理器从您的AsciiDoc文件创建HTML,并将自定义CSS样式表与打印样式规则链接:
asciidoctor -a stylesheet=path-to-stylesheet.css file.adoc
然后您可以在浏览器中打开HTML文件并打印为PDF。
对于更高级的样式,例如页码,页眉,页脚,分页符和列,可以使用PrinceXML(或其他类似产品)。这是一个命令行处理器,它将使用HTML文件使用的CSS中的样式规则将HTML文件转换为PDF。 PrinceXML应用CSS3标准中的样式规则,但浏览器尚不支持这些样式规则,从而使您可以创建样式精美的布局。
答案 5 :(得分:1)
如果已安装Docker,则可以使用AsciiDoctor Docker Image。然后,您可以按照以下说明以交互方式或以批处理方式使用图像:
先决条件
安装Docker映像:
$ docker pull asciidoctor/docker-asciidoctor
通过执行以下命令来创建pdf:
$ cd [directory to where my book.adoc is located]
$ docker run --rm -v $(pwd):/documents/ asciidoctor/docker-asciidoctor asciidoctor-pdf mybook.adoc
docker run
启动Docker容器--rm
清理-执行命令后删除Docker容器-v
mount a volume到图片$(pwd)
获取当前目录的路径,例如上面[directory to where my book.adoc is located]
的值documents
正在运行的容器中已安装的卷的名称asciidoctor/docker-asciidoctor
用于创建Docker容器的Docker映像的名称asciidoctor-pdf
实际触发pdf生成的命令mybook.adoc
用于从中生成pdf的AsciiDoc源文件的名称另请参阅docker run文档
答案 6 :(得分:0)
在@Remis的回答之后,我使用了asciidoctor的pdf后端。
我不知道如何在nixos上安装asciidoctor-pdf
,但设法find进行了以下替换:
asciidoctor -r asciidoctor-pdf -b pdf or asciidoctor-pdf
答案 7 :(得分:0)
我现在意识到从asciidoc到pdf的理想途径是首先将asciidoc转换为docbook。它采用了预期的asciidoc领域和docbook-> pdf转换器,并在各自的关注区域中使用了它们。
此外,我发现使用数学公式代替pandoc
可以更方便地使用dblatex
进行docbook-> pdf转换。因此,我的转换管道如下:
asciidoc -> asciidoctor -> 医生手册-> dblatex -> pdf >
示例制作文件:
make: my.adoc
asciidoc -b docbook my.adoc
dblatex my.xml
This discussion页表明asciidoc的主要目的是编译为docbook。