我正在尝试将Markdown文件转换为PDF。我只想找两件事:
我可以使用哪些工具?我尝试过Pandoc,但它使用Latex进行格式化,这不容易使用。
答案 0 :(得分:11)
Pandoc可以将Markdown转换为HTML,但样式/布局是另一个主题。如果您想生成PDF但使用CSS进行样式化,则需要能够解释CSS的内容。即使用浏览器并打印到PDF,支付Prince或尝试wkhtmltopdf。顺便说一句,pandoc现在也可以使用wkhtmltopdf
:
pandoc -t html5 --css mystyles.css input.md -o output.pdf
但我怀疑如果你想要一个精美排版的PDF免费,你将需要学习LaTeX或ConTeXt这是一个现代的,更独立的LaTeX替代品,两者都可以与pandoc一起使用。请参阅creating a PDF with pandoc。
您还可以尝试PanWriter:我构建的降价编辑器,您可以在其中注入CSS并从分页预览中导出PDF。
答案 1 :(得分:5)
用于浏览Markdown文档的工具非常简单,还支持导出到PDF功能:
GFMS - Github Flavored Markdown Server
它简单轻便(无需配置)HTTP服务器可以在包含markdown文件的任何目录中启动以浏览它们。
特点:
gfms -p 8888
wget "http://localhost:8888/file.md?pdf" -O file.pdf
答案 2 :(得分:1)
通过正确的设置,pandoc
做得很好,但是仍然缺少我真正希望它具有的代码块下面的灰色背景:(。按照{{3}的开头},这就是我为GitHub Flavored Markdown(gfm)设计的相当不错的pandoc
命令的想法。
在Ubuntu 20.04上测试:
sudo apt update
sudo apt install pandoc
sudo apt install wkhtmltopdf # a dependency to convert HTML To pdf
wget https://raw.githubusercontent.com/simov/markdown-viewer/master/themes/github.css
# Convert test.md to test.pdf using the github.css CSS style theme
pandoc -f gfm -t html5 --metadata pagetitle="test.md" --css github.css \
test.md -o test.pdf
wget
命令用于从以下位置下载github.css GitHub CSS格式主题文件:@mb21's answer。它是https://github.com/simov/markdown-viewer/tree/master/themes的一部分,我写过有关Markdown Viewer Chrome plugin here的内容。
从上方分解pandoc
命令:
-f gfm # from format = Github Flavored Markdown
-t html5 # to format = html5
--metadata pagetitle="test.md" # html output format (-t html) requires a
# mandatory html title, so just set it to the input file name:
# "test.md"
--css github.css # use the github.css file as the CSS styling file for
# the html output
test.md # this is the INPUT markdown (Github Flavored Markdown) file
-o test.pdf # save the OUTPUT PDF as test.pdf
降价示例文件, test.md:
Snippet from my project here: https://github.com/ElectricRCAircraftGuy/eRCaGuy_hello_world/blob/master/markdown/github_readme_center_and_align_images.md
## 1.1. Align images left, right, or centered, with NO WORD WRAP:
This:
```html
**Align left:**
<p align="left" width="100%">
<img width="33%" src="https://i.stack.imgur.com/RJj4x.png">
</p>
**Align center:**
<p align="center" width="100%">
<img width="33%" src="https://i.stack.imgur.com/RJj4x.png">
</p>
**Align right:**
<p align="right" width="100%">
<img width="33%" src="https://i.stack.imgur.com/RJj4x.png">
</p>
```
Produces this:
**Align left:**
<p align="left" width="100%">
<img width="33%" src="https://i.stack.imgur.com/RJj4x.png">
</p>
**Align center:**
<p align="center" width="100%">
<img width="33%" src="https://i.stack.imgur.com/RJj4x.png">
</p>
**Align right:**
<p align="right" width="100%">
<img width="33%" src="https://i.stack.imgur.com/RJj4x.png">
</p>
If you'd like to set the text itself to left, center, or right, you can include the text inside the `<p>` element as well, as regular HTML, like this:
```html
<p align="right" width="100%">
This text is also aligned to the right.<br>
<img width="33%" src="https://i.stack.imgur.com/RJj4x.png">
</p>
```
上面的Panoc转换命令:
pandoc -f gfm -t html5 --metadata pagetitle="test.md" --css github.css \
test.md -o test.pdf
输出PDF屏幕截图:
不如in my other answer here好,因为它仍然缺少代码块下的灰色背景(请看Markdown Viewer的样子),但看起来还不错!
答案 3 :(得分:1)
您可以为此使用 gh-md-to-html,它是一个命令行工具,可以完全满足您的需求(完全披露:我是作者)。
您可以通过 installing wkhtmltopdf
安装它,然后使用
pip3 install gh-md-to-html[pdf_export]
然后使用
gh-md-to-html path_to_your_file.md -p <name>.pdf -c path_to_your_css.html
让我们剖析一下这个命令的各个部分是做什么的:
-p
选项声明在哪个文件名下保存生成的 pdf 文件; “<name>
”会自动替换为您的输入文件的名称。-c
选项是 html
文件的路径,该文件包含 <style>
-tags 中的 css,该文件将在将所述文件转换为 pdf 之前嵌入到生成的 html 文件中.顾名思义,gh-md-to-html
使用 wkhtmltopdf
将文件转换为 html,然后转换为 pdf。
无论如何,生成的 pdf 文件的样式类似于 GitHub 的 README 文件样式;如果您想禁用它以便您可以使用自定义 css 来决定整个样式,您可以为命令提供选项 -s false
,这将禁用默认样式。
不过,在这两种情况下,代码块都以正确的语法突出显示。
转换过程部分在线完成(使用 GitHub 的 markdown REST API);如果您不希望这样,您可以使用 pip3 install gh-md-to-html[offline_conversion]
,然后使用 gh-md-to-html
选项运行 -o OFFLINE
。
答案 4 :(得分:0)
在某种程度上,我建议您只学习所需的基本乳胶格式 - 它会删除渲染器的一层解释。
但是,pandoc确实支持html输入,所以从理论上讲,你可以导出markdown-&gt; html(使用自定义css),然后再次调用pandoc转换为html。我不知道格式化是否会保存(或者多少) - css可能真的难以解析。