架构师成长之路工具篇(1):markdown撰写文档

2023-05-16

今天笔者想说的工具就是markdown, 正所谓工欲善其事必先利其器,选择高效的工具自然能提升工作效率。
笔者使用的markdown工具是: typora

word太重,太复杂, 在写文档的时候,常常为了调整一些格式和排版问题而花费大量时间在互联网上到处搜索,这里显示不出来,那里空白太多等等。

鉴于此,笔者越来越习惯于使用markdown来撰写文档。 不管是API文档,还是模块的设计文档,又或者一些指南性的说明文档等等。

当然,markdown也有缺点, 比如因为markdown是文本文件,所以其内就无法包含图片, 要在markdown中显示图片,就需要指定图片文件的路径。 因此,笔者的习惯是,每当要写文档的时候,就以文档名创建一个文件夹,其内是一个 xxx.md 文件以及一个 images这样一个子文件夹用于存放图片。

现在笔者日常工作中也会涉及不少撰写文档的任务,仍然想使用markdown来完成。 但有一些问题:

  • 发布文档一般需要pdf文档
  • 发布的文档需要有页眉,页脚,甚至还需要有水印

发布pdf格式这个问题不难,typora就能直接导出pdf格式,但是他无法给导出的文件添加页眉页脚以及水印信息。

这个问题也有两个解决办法,其一, 使用pdf编辑器来添加页眉页脚以及水印等信息,但是有些编辑器无法再页眉或页脚中添加 图形化的logo标志;其二,就是笔者今天想说的,使用typora先将markdown转为html格式, 然后再使用 wkhtmltopdf 工具将 html文件转换为最终的pdf格式,并添加页眉页脚以及水印等信息。

wkhtmltopdf 工具是什么,这里就不赘述了,网上有很多关于它的信息。 这里只记录笔者使用wkhtmltopdf 来将html转换为pdf的过程。

笔者是在Windows写了一个bat脚本来进行转换,免得每次都需要去输入各种参数:

rem call :getname %1

set aa = %~n1

wkhtmltopdf --enable-local-file-access --margin-top 20mm --header-html ./logo.html --header-center %~n1 --header-spacing 10 --margin-bottom 20mm --footer-spacing 10 --footer-line --footer-font-size 5 --footer-left "Page [page]/[topage]" --footer-html ./footer.html %1 %~n1.pdf
pause

将此段bat保存为文件,比如 html2pdf.bat , 然后如果有一个叫做 test.html的文件,将其拖拽到html2pdf.bat文件上,脚本就是自动执行,如果执行成功,会生成 一个叫做 test.pdf 的文件, pdf文件的名称和html文件的名称相同。

注意: 从typora中导出的html文件内的图片路径引用路径和markdown中的路径是一样的, 因此,需要将test.html文件存放在test.md文件 的同一个目录下进行html到pdf的转换,html2pdf则可以放在任何地方

以上的名称中还有两个另外的html文档, logo.html 和 footer.html,前者是用来在页眉处显示一个图片logo的(如公司logo),后置就是页脚的扩展信息。

wkhtmltopdf 可以通过参数设置页眉页脚,但是如果要显示更丰富的页眉页脚信息,就需要自己编辑html来作为页眉或页脚的参数传入。 这里的logo.html内容为:

<!DOCTYPE html>
<img src="./images/xxx_logo.jpg"  alt="NOBO AUTOMOTIVE" />

footer.html 的内容为:

<!DOCTYPE html>
<div align="right"> 
	<font size=1 color=gray><span>&copy </span> Copyright 
	<span id="time"></span>
	by </font> <font size=1><strong> XXX TECHNOLOGY CO., LTD</strong> </font> 
<div>


<script type="text/javascript">
document.getElementById('time').innerHTML=new Date().toLocaleString();
</script>

这个页脚显示出来的效果就是:

©Copyright Thursday, December 17, 2020 18:12:33 by XXX TECHNOLOGY CO., LTD

即 添加了 转换文档(即发布) 时的日期,时间,星期,以及公司名称等等

为了方面可以将一下内容放在一个目录里面。

html2pdf.bat    //转换脚本
logo.html       //页眉显示logo
footer.html     //页脚信息
images          //放置logo图片的目录

最后在使用wkhtmltopdf 的时候也遇到一些问题,比如 表格过长,过宽 都会导致转换出来的pdf转换异常, 经过几番周折,终于找到了解决问题的方法, 在使用typora编辑markdown时,需要将如下内容放入markdown文件的开头,然后再导出html文件

<div>
<style type="text/css"> 
thead {
    display: table-row-group;
}
table td {
    word-break: break-all;
}
* {
page-break-inside: avoid;
page-break-after: avoid;
page-break-before: avoid;
}
</style>
</div> 

注意: 将这些css放入div标签,只是为了在typora中查看markdown文件的时候,其内容不显示而已。

后续如果再有其他问题,再持续更新。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

架构师成长之路工具篇(1):markdown撰写文档 的相关文章

  • 如何记录作为参数的闭包的参数

    我尝试记录函数的闭包参数 sends the request out Parameter pzurl request description including url method formdata Parameter responseP
  • Markdown 报告未在 Rstudio 中执行

    我正在生成错误 gt options encoding UTF 8 require knitr knit March 2013 Report Rmd Loading required package knitr processing fil
  • 如何在 Markdown 表格中编写列表?

    可以在 Markdown 表格中创建一个列表 项目符号 编号与否 一个表看起来像这样 Tables Are Cool col 3 is right aligned 1600 col 2 is centered 12 zebra stripe
  • R Markdown 中未定义 Tex Proof 环境,生成的 Tex 文件中未定义 amsthm

    编辑以提供更多信息 我正在使用以下 R markdown 文件来生成以下 Tex 文件 我在 rmd 标头中包含 amsthm 它生成一个没有 amsthm 的 Tex 文件 因此 在编译期间并未定义证明环境 这是我的 rmd 文件 tit
  • 带有特定乳胶模板的 bookdown

    我非常相信 Rmarkdown 和 bookdown 是内容出版的未来 但是一些出版商使用特定的 LaTeX 模板 并且为了提交手稿 他们需要在该精确的模板中使用它 例如 请参阅此施普林格手稿模板 http resource cms spr
  • 如何在代码/预块中添加 Markdown 格式?

    这似乎违背了代码块的目的 但我希望能够将代码块中的某些内容加粗 例如 如果我想将返回行加粗 int main void return 0 您必须在 HTML 中执行此操作 按设计 http daringfireball net projec
  • gulp通过markdown json用jade生成html文件

    我在用着gulp markdown to json and gulp jade 我的目标是从 markdown 文件中获取数据 如下所示 template index jade title Europa This is a test gra
  • Markdown 中的 RTL

    是否有任何现有的 Markdown 插件规范包含对 RTL 语言的支持 我希望是这样的 This paragraph is left to right lt This paragraph is right to left 或者其他什么 我可
  • 是否有 Swift 代码的 Github markdown 语言标识符?

    我在用着https jbt github io markdown editor https jbt github io markdown editor在线文档工具 我想知道是否有一个标识符可以识别 swift 语法元素 谢谢 swift s
  • 《美人鱼》中的空间

    我有一个 md文件已保存 我正在使用 Atom 和 Mermaid Preview 包查看它 我将关闭他们的 GitHub 页面上的示例 graph TD A gt B A gt C B gt D C gt D 这渲染得很好 但是如何在文本
  • 如何在在线编辑器中查看在线 Markdown 文档 [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我有一个在线 Markdown 文档 例如 www example com README md 我想要
  • PHP 替换,但替代替换字符串

    好的 这就是我想做的 我正在尝试使用 PHP 来开发本质上是tinyMarkdown 实现的子集 不值得使用完整的 Markdown 类 我本质上需要执行 str replace 但每次出现针时都会交替替换替换字符串 以便处理开始和结束 H
  • 停止pandoc自动添加id

    我在用Pandoc对Markdown的扩展 http pandoc org MANUAL html pandocs markdown来生成 HTML 以下降价 test specificId test2 test3 生成以下 html h1
  • 在 R Markdown 文件中嵌入 pdf 并调整分页

    我即将完成博士学位 我需要在 R Markdown 文本中间的某个位置嵌入一些论文 pdf 格式 将 R Markdown 转换为 PDF 时 我希望将这些 PDF 论文嵌入到转换中 但是 我希望这些 PDF 论文也根据 Markdown
  • 使用 KnitR 在 R 中以编程方式创建 Markdown 表

    我刚刚开始了解 KnitR 以及使用 Markdown 生成 R 文档和报告 这对于我与工作有关的许多日常报告来说似乎是完美的 然而 我没有看到的一件事是使用 Markdown 格式打印数据框和表格的简单方法 有点像xtable 但使用 M
  • 自定义 github 页面的预览图像

    是否可以自定义在将链接发布到 github 页面时看到的预览图像 我觉得他们专门解决了 github 存储库的问题here https docs github com en github administering a repository
  • R markdown 引文标识符

    R markdown 允许使用 YAML 元数据部分中的参考书目元数据字段指定参考书目文件 例如 title Sample Document output html document bibliography bibliography bi
  • 标记(Markdown)+ Mermaid(流程图和图表)

    努力去争取 美人鱼 https github com knsv mermaid https github com knsv mermaid跟 共事 标记 https github com chjj marked https github c
  • npmjs.org - 找不到自述文件

    我是 npm 包的主要作者scramjet 一个月以来 我遇到了关于可视性的问题README md在 npmjs 中 The npm 中的超燃冲压发动机包 https www npmjs com package scramjet shows
  • 怎么修? WordPress wp-markdown 插件损坏了语法荧光笔进化插件帖子?

    过去几个月我一直在 WordPress 上记录一些 C 代码 或者可以是任何代码 其中语法荧光笔进化 https wordpress org plugins syntaxhighlighter installation 插入 一切都很顺利

随机推荐

  • GO语言百分号参数

    常用 参数 v 值的默认格式 T 值得类型的GO语法表示 t 单词true或者false b 表示为二进制 c 该值对应的unicode码值 d 表示十进制 o 表示八进制 f 有小数部分但无指数部分 q 双引号输出
  • java第八节-重复执行

    import java util Scanner public class hello public static void main String args for System out println 34 hello 34 impor
  • java基础第九节-跳转控制语句-数组

    continue用在循环中 xff0c 基于条件控制 xff0c 跳过某次循环体内容的执行 xff0c 继续下一次的执行 break用在循环中 xff0c 基于条件控制 xff0c 终止循环体内容的执行 xff0c 结束当前的整个循环 数组
  • JAVA基础-基本类型转换

    int 和string的相互转换 1 int转换String public static String valuesOf int i 返回int参数的字符串表示形式 xff0c 该方法是String类的方法 1 String转换int pu
  • ubuntu系统-查看系统版本信息

    cat etc issue
  • Ubuntu查看cpu使用情况

    top命令查看cpu等信息 id是 xff1a 空闲 CPU 占用的 CPU 百分比
  • Ubuntu系统查看内存信息

    free命令查看内存信息 h 选项会在数字后面加上适于可读的单位 free h total xff1a 总物理内存大小 used xff1a 内存使用量 free xff1a 剩余可用内存
  • 嘉立创打样的阻抗匹配

    一 适用条件 最好使用4层板以上 xff0c 2层做匹配没啥意义 xff0c 套用大佬的话 主要是中间层和表层的距离近 xff0c 表层和中间层的玻璃纤维厚度是0 2mm xff0c 双层板最少是0 6mm xff0c 这里的差距很大 xf
  • echo 命令总结

    echo命令的功能是在显示器上显示一段文字 xff0c 一般起到一个提示的作用 此外 xff0c 也可以直接在文件中写入要写的内容 也可以用于脚本编程时显示某一个变量的值 xff0c 或者直接输出指定的字符串 echo命令的语法是 xff1
  • Android音频子系统(十三)------audio音频测试工具

    你好 xff01 这里是风筝的博客 xff0c 欢迎和我一起交流 测试音频延时的话 xff0c 一般使用WALT来测试是最为准确的 xff0c 他是借助了外部硬件来捕获音频信号 xff0c 某宝上有卖 xff1a 就是有丢丢小贵 xff0c
  • 一位北邮信通硕士的求职历程,看看 或许有帮助

    序 xff1a 写在前面的话 这篇文章的适用对象为 xff1a 非技术类方向的同学 xff0c 如果你是技术大牛 xff0c 你可以跳过这篇文章了 如果你觉得自己不喜欢技术或者技术不适合你 xff0c 此文或许会给你些有用的东西 简单介绍一
  • [转]STM32 串口传输处理方式 FreeRTOS+队列+DMA+IDLE (二)

    紧接着上一篇文章 xff0c 如何合理处理多个串口接收大量数据 此种方法 xff0c 很厉害 xff0c 很NB xff0c 首先 xff0c 利用DMA 可节省大量CUP资源 其次 xff0c 利用IDLE空闲中断来接收位置个数的数据 最
  • [转]FreeRTOS消息队列、信号量、事件标志组、任务通知

    功能及区别列表 消息队列 xff08 需要传递消息时使用 xff09 在任务与任务间 中断和任务间传递信息 xff0c 可以数据传输 事件标志组 xff08 多个事件同步 xff0c 不需要传递消息时使用 xff09 实现任务与任务间 中断
  • ubuntu 终端打不开解决办法

    由于ubuntu自带的是python3 5 在新安装了python3 6以后 xff0c 开机突然发现无论是点击图标还是使用快捷键终端都无法打开 xff0c 解决办法如下 xff1a xff11 xff0e 按Ctrl 43 Alt 43
  • Jack server already installed in "/***/.jack-server" 异常

    xff08 1 xff09 在新增新用户后 xff0c 进行android编译 xff0c 出现如下异常 xff1a Ensure Jack server is installed and started FAILED bin bash c
  • gstreamer移植qnx(二):交叉编译glib

    一 简介 这里以glib的2 63 0版本 xff0c QNX系统的版本是 xff1a 6 6 这里是为了编译gstreamer的依赖库 xff0c 也就是说最终目标 xff0c 是将gstreamer移植到QNX6 6系统上 我选择的是g
  • repo安装与简单使用

    一 概述 当一个大的项目需要拆分成很多的子项目 xff0c 或者说一个软件系统拆分成多个子系统 每一个子项目或者子系统都对应一个git repository 这种需求在实际项目当中是很常见的 xff0c 有的可能就直接写一个shell脚本来
  • 通过qemu-img命令将raw image转换成VMware虚拟硬盘vmdk

    为了在VMware中跑QNX系统 xff0c 我需要想办法将编译BSP生成的img文件固化到VMware的虚拟硬盘中去 xff0c 之前一直找不到方法 xff0c 到渐渐的只能用很笨的方法几次中专 将生成的img文件通过win32DiskI
  • WSL2 Ubuntu安装Qt(包括QtCreator)

    最近因为需要在Linux下使用qtcreator做一些界面开发的预研和学习 xff0c 主要是因为要交叉编译Qt 但又不想再使用虚拟机了 xff0c 真的太消耗内存了 于是就想着直接使用Windows10 下面的WSL2 怎么安装WSL2这
  • 架构师成长之路工具篇(1):markdown撰写文档

    今天笔者想说的工具就是markdown xff0c 正所谓工欲善其事必先利其器 xff0c 选择高效的工具自然能提升工作效率 笔者使用的markdown工具是 xff1a typora word太重 xff0c 太复杂 xff0c 在写文档