目前,我使用mkdocs-material
使用美人鱼图,配置如下(在mkdocs.yml
中):
...
markdown_extensions:
- pymdownx.superfences:
custom_fences:
- name: mermaid
class: mermaid
...
但是,我在导出PDF时遇到了麻烦。
我已经尝试了几个插件。它们中的大多数依赖于Weasy Print,并且在javascript部分或美人鱼图上存在问题(没有渲染,仍然是代码块的风格)。有一个插件(mkdocs-pdf-with-js-plugin),它以一种简单的方式打印页面,使用浏览器来完成这项工作。但是,它不包含combined
功能(将所有页面合并为单个PDF文件),我需要作为mkdocs-pdf-export-plugin包。
是否有其他插件支持导出PDF与美人鱼图和组合功能?
我目前的解决方法
执行命令:ENABLE_PDF_EXPORT=1 mkdocs build
。每个降价文件将导出为PDF文件。
然后,我将定义所有PDF合并为一个唯一文件时的顺序,通过将PDF名称从上到下:
Inchapters.txt
:
A.pdf
B.pdf
C.pdf
...
然后运行以下脚本。请记住,这个脚本只是我所做的事情的一个提示,它还没有完成,也没有按"当前状态"运行。
# ================================================================================================
# Move all pdfs from "site" (the output dir of pdf exporting) to the scripts/pdf_export/pdfs
# ================================================================================================
find site -name "*.pdf" -exec mv {} scripts/pdf_export/pdfs ;
cd scripts/pdf_export/pdfs
# ================================================================================================
# Merge all pdfs into one single pdf file wrt the file name's order in chapters.txt
# ================================================================================================
# REMEMBER to put the chapters.txt into scripts/pdf_export/pdfs.
# Install: https://www.pdflabs.com/tools/pdftk-server/
# Install for M1 only: https://stackoverflow.com/a/60889993/6563277 to avoid the "pdftk: Bad CPU type in executable" on Mac
pdftk $(cat chapters.txt) cat output book.pdf
# ================================================================================================
# Add page numbers
# ================================================================================================
# Count pages https://stackoverflow.com/a/27132157/6563277
pageCount=$(pdftk book.pdf dump_data | grep "NumberOfPages" | cut -d":" -f2)
# Turn back to scripts/pdf_export
cd ..
# https://stackoverflow.com/a/30416992/6563277
# Create an overlay pdf file containing only page numbers
gs -o pagenumbers.pdf
-sDEVICE=pdfwrite
-g5950x8420
-c "/Helvetica findfont
12 scalefont setfont
1 1 ${pageCount} {
/PageNo exch def
450 20 moveto
(Page ) show
PageNo 3 string cvs
show
( of ${pageCount}) show
showpage
} for"
# Blend pagenumbers.pdf with the original pdf file
pdftk pdfs/book.pdf
multistamp pagenumbers.pdf
output final_book.pdf
然而,我们需要其他定制,如目录、书封面和作者部分,…以上所有步骤都只是合并和添加页码!有很多事情要做。