架构师成长之路工具篇(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撰写文档 的相关文章

  • R Markdown 中未定义 Tex Proof 环境,生成的 Tex 文件中未定义 amsthm

    编辑以提供更多信息 我正在使用以下 R markdown 文件来生成以下 Tex 文件 我在 rmd 标头中包含 amsthm 它生成一个没有 amsthm 的 Tex 文件 因此 在编译期间并未定义证明环境 这是我的 rmd 文件 tit
  • 如何在代码/预块中添加 Markdown 格式?

    这似乎违背了代码块的目的 但我希望能够将代码块中的某些内容加粗 例如 如果我想将返回行加粗 int main void return 0 您必须在 HTML 中执行此操作 按设计 http daringfireball net projec
  • 如何在 Sublime Text Markdown 预览中启用 MathJax 渲染

    我正在使用 Sublime Text 3 编写一个包含数学的 Markdown 文档 Markdown Preview 包可以在浏览器 Chrome 中实时渲染文档 所以当我写这篇文章时 变化是显而易见的 以下是我的 Markdown 文本
  • gulp通过markdown json用jade生成html文件

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

    In python 3 x with tkinterGUI 我开发了一个带有常规简单窗口的程序 我想展示一个markdown格式字符串保存在名为的字符串中markdownText在程序窗口上 markdownText italic or b
  • 带有 Pandoc 的内联 CSS

    如果在某处记录了以编程方式实现此目的的简单方法 不是通过在浏览器字段中复制 粘贴并单击按钮进行转换 我深表歉意 在我的搜索和阅读中我找不到它 我想以编程方式将 Markdown 和 CSS 文件转换为听起来可能称为 内联 CSS 的文件 例
  • 在 R Markdown 文件中嵌入 pdf 并调整分页

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

    我刚刚开始了解 KnitR 以及使用 Markdown 生成 R 文档和报告 这对于我与工作有关的许多日常报告来说似乎是完美的 然而 我没有看到的一件事是使用 Markdown 格式打印数据框和表格的简单方法 有点像xtable 但使用 M
  • Markdown/Github:作为列表子项的代码块的语法突出显示

    在Github MD中 如果我们想在列表的子级时启用代码块 我们需要用8个空格来表示它 但是如何让该代码块具有语法高亮功能呢 以下代码无法按预期工作 1 foo python print bar 2 bar python print bar
  • Pandoc:如何在目录前添加表格?

    我想在 pandoc markdown 生成的目录之前添加一个表格 我找到了参数 include before 这样 我可以在目录之前添加文本 但是有没有办法添加表格呢 下面显示我的代码 我希望目录位于两个表和 header1 之间 而不是
  • R markdown 引文标识符

    R markdown 允许使用 YAML 元数据部分中的参考书目元数据字段指定参考书目文件 例如 title Sample Document output html document bibliography bibliography bi
  • 您可以将文本文件中的信息导入/引用到 Markdown 文件中吗?

    我找不到这方面的示例 但是是否可以通过引用将文本导入到 Markdown 文件中 例如 假设我有我的README md Markdown 可以导入吗somefile txt进入自述文件 就像图像参考一样 简单回答 不 Markdown 不支
  • 如何在 IPython 中设置 markdown 链接的基本 url?

    我很高兴地设置 在我的 IPython html 笔记本 IPython 0 12 的 Markdown 单元中 以便能够将链接缩写为 wiki documentation doc html 在 Markdown 单元格中 但这使得保存笔记
  • 如何删除 GitHub markdown 项目符号/列表上的额外行空间?

    GitHub 的 Markdown 代码 1 First item subitem 1 Second item 之间产生很大的空间First Second和subitem 如何制作subitem靠近第一个项目 而不是正好在它们的中间 这是我
  • 用于渲染 html 子集的 Django templatetag

    我有一些 html 在本例中是通过 TinyMCE 创建的 我想将其添加到页面中 但是 出于安全原因 我不想只打印用户输入的所有内容 有谁知道模板标签 最好是过滤器 只允许呈现 html 的安全子集 我意识到 Markdown 和其他人就是
  • markdown - 我可以有下划线而不转义它们并且没有 markdown 斜体吗?

    我想要其中包含下划线的文本 它不是代码 所以我不想使用代码格式 我想停止将 Markdown 视为指令斜体化 it 我可以转义 每个下划线 看 但我总共有 20 个 在源代码中看起来很丑 很难维护 而且不是很干燥 还有其他选择吗 一些 Ma
  • Prettier 不断用下划线替换星号字符

    我正在尝试在 Visual Studio Code 中编写一些 Markdown 文本 每当我编写以下内容时 some text 我保存文件后它就会被替换为 some text 我将其范围缩小为由 Prettier 扩展引起的 我尝试寻找一
  • 创建pdf时在markdown中分页

    我正在使用 doxygen 1 8 6 创建 Markdown 文本文件的 pdf 现在我想在 Markdown 文件的特定阶段获得分页符 我使用了这个link http daringfireball net projects markdo
  • 保存 WMD 编辑器控件的内容

    我正在尝试实现 StackOverflow 上使用的 WMD 编辑器来创建一些基本的 Wiki 风格的功能 我已经到了保存到数据库的时间了 但我不确定应该保存什么 如果我保存生成的 HTML 那么我可以正确检索并显示它 但在重新编辑时 我面
  • 将“复制到剪贴板”添加到 GitHub markdown 的简单方法?

    具体来说 我有一些用于安装的代码块 我希望用户能够快速将其复制并粘贴到终端中 我想要一个用于代码块 复制到剪贴板 的按钮 由于 git 克隆 URL 有一个 复制到剪贴板 按钮 我想知道我是否可以利用该按钮 或者如果不能 是否可以将一些相对

随机推荐

  • python多文件使用同一个全局变量的定义和使用方法

    Python是一种面向对象的开发语言 xff0c 在函数中使用全局变量 xff0c 一般应作全局变量说明 xff0c 只有在函数内经过说明的全局变量才能使用 xff0c 下面介绍下Python全局变量有关问题 应该尽量避免使用Python全
  • D3VO 2020CVPR论文阅读

    Deep Depth Deep Pose and Deep Uncertainty for Monocular Visual Odometry 论文链接 摘要 xff1a 提出的D3VO单目视觉里程计框架从三个层面上利用了深度学习网络 xf
  • python在windows下获取cpu、硬盘、bios、主板序列号

    此处使用的是wmi库 xff0c 可以去google里面搜索 python wmi import os sys import time import wmi zlib def get cpu info tmpdict 61 tmpdict
  • gcc中调试代码常用的宏

    红色是比较常用的 宏 意义 FILE 本文件名 LINE 本行位于该文件的第几行 FUNCTION 函数名 PRETTY FUNCTION c语言中和同上 xff0c C 43 43 中稍有区别 VA ARGS 格式化输出 VA ARGS
  • Qt基础学习(5)-----抽屉效果之QToolBox

    cpp view plain copy print mydialog h ifndef MYDIALOG H define MYDIALOG H include lt QDialog gt class QToolBox class MyDi
  • linux下c语言抓包库libpcap

    安装命令 xff1a sudo apt get install libpcap dev 由于自己还没仔细研究过 xff0c 暂时也只是想在这里留个记录 xff0c 方便以后需要时使用 下面是百度百科里的例子 include lt pcap
  • scons简易手册

    在编译大程序时免不了要写个makefile来管理 xff0c 但是makefile的规则对于大多数人来说都还太复杂了 于是我找到了autotools工具 xff0c 尽管方便了一些 xff0c 但是还是不够傻瓜 目前scons是我用过最傻瓜
  • Round-Robin负载均衡算法及其实现原理

    第一次在pjsip协议栈中了解到这个实习负载均衡的机制 于是网上查了下资料 xff0c 下面的介绍应该可以很容易理解 轮询调度算法 Round Robin Scheduling 轮询调度算法的原理是每一次把来自用户的请求轮流分配给内部中的服
  • tipc协议详解

    TIPC协议和实现解析 1 TIPC简介TIPC是爱立信公司提出的一种透明进程间通信协议 主要适用于高可用 HAL 和动态集群环境 该软件当前主要由风河 windriver 公司在维护 主要支持Linux Solaris 和 VxWorks
  • python循环方法总结

    1 for循环 语法 xff1a for x in range xff08 100 xff09 补充 xff1a rang xff08 100 xff09 xff1a 数据范围0 99 range xff08 1 xff0c 100 xff
  • Ftp 线程池方式 解决多线程问题

    FTP 线程池 方式 解决多线程问题 1 pom xml中添加依赖 lt ftp gt lt dependency gt lt groupId gt commons net lt groupId gt lt artifactId gt co
  • cannot connect to X server localhost:10.0

    使用SSH连接服务器时 xff0c 打开图形界面 xff0c 若报错 xff1a cannot connect to X server localhost 10 0 可以通过如下设置 xff0c 显示图形界面 xff1a export DI
  • 【VPS + ORB-SLAM2】多人使用手机协同操作调研思考

    1 ORB SLAM3 43 深度学习开源调研 ORB SLAM3 with Docker xff1a https github com petrikvladimir orbslam3 docker 特点 xff1a ORB SLAM3 w
  • 最极致Windows仿Mac2.0【win11可用】——30分钟完成(W001)

    本文原创 禁止转载 2021年12月26日2 0 更新兼容性及bug修复 加图 2022年6月 更改邮箱 2022年12月 投放下载链接 2023年4月16日 更新链接 添加联系方式 喜欢的点个赞再拿走啊啊啊 不看消息 有问题加QQ群 群号
  • 简单介绍阿里内部工具——Arthas

    在阿里巴巴内部 xff0c 有很多自研工具供开发者使用 xff0c 其中有一款工具 xff0c 是几乎每个Java开发都使用过的工具 xff0c 那就是Arthas xff0c 这是一款Java诊断工具 xff0c 是一款牛逼带闪电的工具
  • 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 在写文档