文档格式转换神器 - Pandoc

Avatar
不若风吹尘
2024-09-09T17:11:06
43
0

Pandoc 是一个强大的命令行工具,它能够将文档从一种格式转换为另一种格式。以下是 Pandoc 支持的部分流行格式:

  • Markdown (markdown) - 广泛用于 Web 写作,易于阅读和编写。
  • HTML (html) - Web 标准,几乎所有的网页都使用 HTML
  • JSON (json) - 数据交换的标准格式,广泛用于 APIs 和配置文件。
  • plain (plain) - 纯文本格式
  • GitHub Flavored Markdown (gfm) - GitHub 使用的 Markdown 变体。
  • LaTeX (latex) - 科学出版领域的标准。
  • Docx (docx) - Microsoft Word 文档格式,广泛使用。
  • EPUB (epub) - 电子书格式,广泛用于电子阅读器。
  • odt (odt) - 一种开放标准的文档格式,主要用于自由和开源软件。如 LibreOfficeOpenOffice
  • rtf - 一种跨平台的文件格式,可以保留一些基本的格式设置。
  • IPYNB (ipynb) - Jupyter 笔记本格式,常用于科学计算和数据分析。

除了上边列出的常见文档格式,Pandoc 还支持许多格式,稍后我们可以通过命令进行查看。

Pandoc 安装

本文中的安装及运行示例均在 Windows 11 系统下进行

下载 Pandoc 安装包

我们这里选用二进制方式安装,需要下载 pandoc-3.3-windows-x86_64.zip 这个包 (包下载地址在文档尾部)。解压缩后将目录 path 配置到系统环境变量中。

配置环境变量

PATH 环境变量中添加 Pandoc 安装目录的路径。

测试 Pandoc 命令

pandoc -v

支持的文档格式列表

输入格式

可以使用 --list-input-formats 选项查看支持的所有输入格式

pandoc --list-input-formats

输出格式

可以使用 --list-output-formats 选项查看支持的所有输出格式

pandoc --list-output-formats

这些格式覆盖了从简单的纯文本到复杂的排版文档的各种需求。通过使用 Pandoc,可以轻松地在不同的文档格式之间进行转换,这对于需要在多种平台和应用程序中共享内容的场合特别有用。

Pandoc 转换示例

基本转换

pandoc input.md -o output.pdf

转为 pdf 格式

pandoc --pdf-engine=xelatex --highlight-style=tango -V CJKmainfont="Microsoft YaHei" -V mainfont="Consolas" -V colorlinks -V urlcolor=NavyBlue --template=eisvogel --listings D:\0docs\Articles\zh-Hans\CSharp\4-Behind-The-Scenes-Of-Collection-Expressions-Part-4-The-Spread-Element.md -o D:\0docs\Articles\zh-Hans\CSharp\4-Behind-The-Scenes-Of-Collection-Expressions-Part-4-The-Spread-Element.pdf

注意

PDF 格式是一种广泛应用的文档格式。需要注意的是,Pandoc 只能将 PDF 作为输出目标格式,而不能从 PDF 转换为其他格式。如果需要将 PDF 转换成其他格式,需要使用其他的工具或服务。如果您有转换 PDF 格式的需求,还需要安装一个 TeX 引擎。请参阅 《使用 Pandoc 将文档转换为 PDF 格式》 这篇文章以获取更多信息。

通过 URL 获取 HTML 文档并转换为 Markdown 格式

pandoc -f html -t gfm --extract-media="media/" https://devblogs.microsoft.com/dotnet/announcing-the-dotnet-community-toolkit-830/ -o microsoft.md --verbose

同时下载图片到 media/ 目录下

# --verbose 表示显示调试信息
# --extract-media 表示图片等资源的输出目录
# -t gfm 是一种兼容标准 Markdown 的格式
pandoc -f html -t gfm --request-header User-Agent:"Mozilla/5.0" --extract-media="D:\0docs\5-ImageMagick\images\basics\" https://usage.imagemagick.org/basics/ -o Usage/Basics.md --verbose

批量转换

gci -r -i *.md | foreach { $html = $_.DirectoryName + "\" + $_.BaseName + ".html"; pandoc $_.FullName -o $html }

这个 PowerShell 命令用于递归地查找所有 .txt 文件,并将每个找到的 .txt 文件使用 Pandoc 转换为 .rtf 格式。下面是命令的逐部分解析:

  • gci -r -i *.txt:

    • gciGet-ChildItem 命令的别名,用于获取指定路径下的子项。
    • -r 表示递归地搜索子目录。
    • -i *.txt 表示只查找扩展名为 .txt 的文件。
  • | foreach:

    • | 是管道符号,用于将前一个命令的输出传递给下一个命令。
    • foreachForEach-Object 命令的别名,用于对管道中的每个对象执行一个脚本块。
  • { ... }:

    • { ... } 是一个脚本块,定义了 foreach 循环中对每个对象执行的操作。
  • $rtf = $_.DirectoryName + "\" + $_.BaseName + ".rtf";:

    • $rtf 是一个变量,用于存储输出的 .rtf 文件的完整路径。
    • $_ 是一个特殊变量,代表管道中当前的对象(即当前处理的 .txt 文件)。
    • $.DirectoryName 获取当前文件所在的目录。
    • $.BaseName 获取当前文件的基本名称(不包含扩展名)。
    • ".rtf" 添加 .rtf 扩展名。
  • pandoc -f markdown -s $_.FullName -o $rtf:

    • pandoc 是 Pandoc 文档转换工具的命令。
    • -f markdown 指定输入格式为 Markdown。
    • -s 表示单独的文档(独立模式),这通常会产生一个完整的文档而不是片段。
    • $.FullName 获取当前文件的完整路径(包括文件名和扩展名)。
    • -o $rtf 指定输出文件的路径和名称。

总结

Pandoc 是一个功能强大的文档转换工具,它可以将不同格式的文档相互转换。通过使用 Pandoc,您可以轻松地将文档从一种格式转换为另一种格式,从而满足不同的需求。

安装包下载地址:

参考资料:

Last Modification : 9/18/2024 11:33:44 PM


In This Document