使用mkdocs将包含美人鱼图的标记文件渲染为组合PDF文件



目前,我使用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

然而,我们需要其他定制,如目录、书封面和作者部分,…以上所有步骤都只是合并和添加页码!有很多事情要做。

最新更新