armin/md2pdf

将多个markdown文件转换为HTML和PDF。

0.2.1 2023-05-24 12:12 UTC

This package is auto-updated.

Last update: 2024-08-24 14:54:21 UTC


README

PHP应用程序,用于将多个markdown文件转换为HTML和PDF。

这是pandoc等工具的更简单替代方案。

这是一个非常早期的原型! 尚未发布任何版本。

文档

请在此存储库中查看完整文档或查看生成的PDF版本(待办事项)。

第一步

下载最新的phar二进制文件或将此包(armin/md2pdf)添加到您的composer.json中。

当使用Composer要求包时,您可以在CLI上使用

vendor/bin/md2pdf

现在,您需要在项目的根目录中创建md2pdf.yaml文件。

最小示例

title: Test Document
author: Armin Vieweg
baseUrl: https://github.com/a-r-m-i-n/md2pdf/blob/master
rootPath: .
structure:
  - section: Documentation
    level: 1
  - docs/index.md
  - docs/configuration.md
  - section: README Contents
    level: 1
  - README.md

output: md2pdf-documentation.pdf

在此文件中,我们定义了HTML/PDF输出的结构。我们还可以使用部分来分离内容。

现在,您可以简单地运行

vendor/bin/md2pdf build

早期版本

如前所述,这是一个非常早期的原型。代码需要大量重构,一些功能尚未正常工作或仍然缺失。

计划实现四种模式供您选择

  • init - 用于启动初始md2pdf.yaml文件
  • check - 检查结构和新的缺失文件
  • update - 更新md2pdf.yaml结构(应用检查结果)
  • build - 创建实际输出

目前,仅实现了build模式。

功能

  • 合并配置的markdown结构(文件)并转换为HTML(使用league/commonmark
  • 提供扩展锚点(包括清理的文件名)
  • 将文档中的相对链接替换为扩展锚点(尚未正常工作)
  • 将配置的baseUrl添加到存储库中文件的相对链接之前(不是配置的markdown结构的一部分)
  • 为每个标题提供目录(带有页码,适合打印)
  • 为每个标题提供书签(适合PDF阅读器)
  • 向结构添加自定义部分以分离内容
    • 级别可定制(从1开始)
    • 您还可以使用contents子键传递其他格式化文本,它接受格式化的markdown输入
  • 嵌入式代码的语法高亮(可配置,使用scrivo/highlight.php
  • 可配置样式
  • 手动页面断裂和方向更改(<!-- PAGEBREAK --> <!-- PAGEBREAK:L --> <!-- PAGEBREAK:P -->
  • 将转换后的markdown内容(通过HTML)输出到PDF(使用mpdf/mpdf
  • Phar编译器
    • 由于文件大小原因,仅将TTF字体"DejaVuSerif"和"DejaVuSans"包含在phar二进制文件中

缺失

  • 模式:init,check和update
  • 重构了markdown内容中相对链接的分析
  • PDF设置
    • 大小、边框等
    • 自定义字体的路径
  • 保存HTML文件的能力
  • 禁用书签的配置
  • 清理(删除tmp目录)
  • 完整的文档