如何设置Asciidoctor-pdf跳过语法解析直接将纯文本转换为PDF
Asciidoctor-pdf 纯文本无解析转PDF实现方法
Asciidoctor-pdf 没有提供一键关闭全部AsciiDoc语法解析的独立命令行选项,但可以通过以下两种成熟方案实现纯文本直接转PDF,完全规避点号开头行、乱码、特殊字符触发解析报错的问题,不需要提前用sed等工具清理源文件:
- 方案1:使用原样(passthrough)块包裹全量文本(稳定性最高,推荐)
AsciiDoc的原样分隔块会完全跳过块内所有内容的语法解析,所有字符、行格式都会按纯文本原样渲染。不需要手动修改源文本文件,直接在命令行拼接块标记即可,参考命令:asciidoctor-pdf -o 输出文件.pdf <(echo -e "....\n"; cat 待转换的纯文本文件.txt; echo -e "\n....")
命令里的....是原样块的首尾标记,如果你的纯文本里本身存在连续4个点号的行,只需要把首尾标记换成更长的连续点串(比如......),只要标记长度比文本内最长的连续点号行更长,就不会出现解析冲突。 - 方案2:开启兼容模式降低语法识别敏感度
如果不想用块包裹的方式,可以在调用命令时追加兼容模式参数,关闭大部分高级语法识别规则,参考命令:asciidoctor-pdf -a compat-mode -a prewrap 待转换的纯文本文件.txt
这个模式下点号开头的行不会被自动识别为列表、注释、标题等语法元素,不过如果文本中存在连续多个等号、反斜杠等特殊块标记字符,还是存在小概率解析失败的可能,稳定性不如方案1。
转码时如果不需要保留文本里的原始换行格式,可以额外追加
-a hardbreaks属性,会自动按页面宽度折行,避免长行超出PDF页面边界。
内容的提问来源于stack exchange,提问作者user7548
相关产品推荐
相关产品推荐

