因为想用markdown写Hexo+Github发布博客(我的个人静态博客),而我的文档是word写的。

方案们

目前只研究了Mac下的方案:

  1. word-to-markdown,google用word to markdown搜出来第一个,看来这个名字起得好。用这个的话得装个LibreOffice
  2. pandoc,这个就比较大名鼎鼎了
  3. unoconv介绍

首先尝试word-to-markdown

我用google搜到的第一个就是这个了,当然要试试。

坑:极度安全的Mac自带Ruby

要玩gem,首先当然是上(Fan)套(Qiang)咯。连上vpn,然后:

$ gem install word-to-markdown

你以为这么一句话就能搞定了吗,那可真就太天真了。撞到最后一个premailer开始报对gem文件夹没有权限的错误,查了查,其实就是Mac版自带ruby版本的问题,不允许随便装东西,即便有sudo也不让。

网上的解决方案是开机安住CMD+R,把Integrity Protection禁用,然后进系统装不能装的gem,然后再回去把它启用。这方案麻烦不说,其实还是在系统的gem库里加了也许就只会用那么一两次的不该加的东西,各种不安嘛,这方案明显不符合我的审美。

ok,那就rbenv走起吧

求助万能的谷哥,提供了两种选择,rbenv或者rvm,看了一下,貌似rbenv更加的handoff,而且提供Homebrew安装,那就选它了。

$ brew update
$ brew install rbenv

然后官方说是要运行rbenv init,运行一下说把下面这行加到.zshrc里去�

eval "$(rbenv init -)"

然后重启一下Terminal,

# 看看装了些啥版本,system就是系统自带的了
$ rbenv versions
# 然后看看当前的版本
$ rbenv version
# 看看能装哪些版本
$ rbenv install list

最后随便选了个2.3.0(其实也不是随便选的,我这人就爱最新版,但2.4.0还在dev,就选这个次新版了)

$ rbenv install 2.3.
$ rbenv global 2.3.

这样就把ruby命令替换成rbenv管理的版本了,各种gem install也不会报什么权限错误啊操作不允许之类的了。

速度重装word-to-markdown

$ gem install word-to-markdown

这次安装过程果然顺利,装完运行:

$ w2m .docx

我勒个去,转换结果直接输出到命令行了,而且也貌似并没有提供什么参数来指定输出文件,官方的意思就是:我输出到stdout了,剩下的你自己玩吧。

那就redirect一下吧

$ w2m .docx > .md

so easy嘛,顺便说说这个redicrect,有这么几种用法:

system_profiler > file.txt
> take the output of system_profiler and save it to the file file.txt
&> The & tells the shell to redirect the standard output and standard error to the file.
> If you want to just output standard error
>> appending to the existing file

大名鼎鼎的Pandoc

其实一开始只知道第一个方案,后来搜搜索的过程中居然发现大名鼎鼎的的Pandoc也是能干这个事情的,

macOS安装(其他的系统看官网):You can install pandoc using homebrew:  brew install pandoc

# Docx to markdown, including math:
$ pandoc -s example30.docx -t markdown -o example35.md

更多的Pandoc转换命令

对Table转换的表现

由于其实要要写数据库设计文档,所以我主要是比较关注对Table的转换

word-to-markdown

转出这么个玩意儿

| **名称** | **数据类型** | **默认值** | **说明** | **描述** |
| --- | --- | --- | --- | --- |
| id | int() |
| 主键 |
|
| f\_classify\_id | tinyint() |
| 一级分类id | act\_classify表的id |
| s\_classify\_id | tinyint() |
| 二级分类ID |
|
| count | int() |
| 命中次数 |
|
| date | date |
| 日期 | 单位:天 |

没细看源码,这种转换效果,估计对合并单元格的表格支持是有问题的(不过md的table本就不支持合并单单元格这么复杂的玩意儿),很明显的在不该换行的地方换行了。

Pandoc

其实pandoc并不支持markdown里的table语法,只是吧表格转换成了一个视觉上的表格。

  **名称**          **数据类型**   **默认值**   **说明**     **描述**
----------------- -------------- ------------ ------------ ---------------------
id int() 主键
f\_classify\_id tinyint() 一级分类id act\_classify表的id
s\_classify\_id tinyint() 二级分类ID
count int() 命中次数
date date 日期 单位:天

这就有点尴尬了,不过其实标准的md语法并不支持table,好吧,就这么自我安慰好了。

结论

  1. word-to-markdown之后进一步手动编辑整理完善表格。

  2. 如果没什么特别要求,只是想把word转成markdown看看,然后看着更方便的话,pandoc对table的转换更具有可读性,对一些不支持table语法转换的markdown编辑器来说也更友好一些。

Hexo - 把word转成markdown的更多相关文章

  1. PDF文件如何转成markdown格式

    百度上根据pdf转makrdown为关键字进行搜索,结果大多数是反过来的转换,即markdown文本转PDF格式. 但是PDF转markdown的解决方案很少. 正好我工作上有这个需求,所以自己实现了 ...

  2. C#将Word转换成PDF方法总结(基于Office和WPS两种方案)

    有时候,我们需要在线上预览word文档,当然我们可以用NPOI抽出Word中的文字和表格,然后显示到网页上面,但是这样会丢失掉Word中原有的格式和图片.一个比较好的办法就是将word转换成pdf,然 ...

  3. WPF 将PPT,Word转成图片

    在Office下,PowerPoint可以直接把每张幻灯片转成图片,而Word不能直接保存图片.所以只能通过先转换成xps文件,然后再转成图片. 一.PPT 保存为图片 /// <summary ...

  4. word转换成HTML 以及IE不兼容问题

    public static bool WordToHtml(string wordFileName, string htmlFileName) { try { Object oMissing = Sy ...

  5. 【文件】使用jacob将word转换成pdf格式

    使用jacob将word转换成pdf格式   1.需要安装word2007或以上版本,若安装07版本学确保该版本已安装2downbank0204MicrosoftSaveasPDF_ XPS,否则安装 ...

  6. 将Medium中的博客导出成markdown

    Medium(https://medium.com)(需要翻墙访问)是国外非常知名的一个博客平台.上面经常有很多知名的技术大牛在上面发布博客,现在一般国内的搬运的技术文章大多数都是来自于这个平台. M ...

  7. 用 node.js 的 hexo 框架搭建一个支持 markdown 的静态博客系统

    1,Hexo如何在线可视化写博客:   可以试试这款插件 hexo-admin. 2,马克飞象:   一个非常好的 markdown 编辑器. 3,Hexo博客文章设置密码的方法: 首先,在Hexo中 ...

  8. [JavaWeb基础] 025.JAVA把word转换成html

    用第三方插件POI把word文档转换成HTML,下面直接上代码 package com.babybus.sdteam.wordtopdf; import java.io.BufferedWriter; ...

  9. 如何将Excel转换成Markdown表格[转]

    在这篇文章中,我将告诉你如何快速的将Excel转换为markdown表格,以及如何将Google Docs,Numbers,网页中的表格或其他类似Excel的程序数据转换为Markdown表格 你可能 ...

随机推荐

  1. hive 表优化

    一.外部表和内部表的区别 (1)创建表时指定external关键字,就是外部表,不指定external就是内部表 (2)内部表删除后把元数据和数据都删除了,外部表删除后只是删除了元数据,不会删除hdf ...

  2. 转:Hibernate query.list()之卡住问题

    某个函数里面有调用Query的list()方法,然后它有时会出现这种症状: 忽然停住不动,但是也没报异常,就是界面死了. 我的查询差不多是这样: Query q=sessionFactory.open ...

  3. java okhhtp下载学信网学籍信息

    学信网的登录有验证码,是那种计算数字或者汉字识别的,很难识别.最近连学籍信息和学历信息也换成图片了,常规的正则 css xpath都不能使. 下载图片,需要先登录,获取登陆后的cookie和学籍信息的 ...

  4. splash渲染网页

    #coding=utf8 import requests,time,random import threadpool render_html = 'http://192.168.30.128:8050 ...

  5. linux ss命令使用详解

    ss是Socket Statistics的缩写.顾名思义,ss命令可以用来获取socket统计信息,它可以显示和netstat类似的内容.但ss的优势在于它能够显示更多更详细的有关TCP和连接状态的信 ...

  6. 善用 CSS 中的 table-layout 屬性加快 Table 的顯示速度

    在很久以前我們都是用 Table 在排版的,我相信現在還是有不少人還是在用 Table 進行排版而非現在較為流行的 CSS 排版,使用 Table 排版最大的好處就是版面在各瀏覽器中顯示比較不會亂掉. ...

  7. async await yield

    问题:async 和yield有什么区别? 无奈只能用“书到用时方恨少”来解释这个问题了.其实也是自己从开始编程就接触的是nodejs中的async 以及await ,yield几乎.貌似好像都没使用 ...

  8. C++中class与struct的区别(struct的类型名同时可以作为变量名)

    通常我们知道的区别: (一)默认继承权限.如果不明确指定,来自class的继承按照private继承处理,来自struct的继承按照public继承处理: (二)成员的默认访问权限.class的成员默 ...

  9. 转:git windows中文目录乱码问题解决

    Git的Windows版本Msysgit对中文的支持不够好 当使用时,会出现以下三种情况的中文乱码: 1.ls不能显示中文目录 解决办法:在git/git-completion.bash中增加一行:  ...

  10. jQuery给动态添加生成的元素绑定事件的方法

    <div id="testdiv">   <ul></ul> </div> 需要给<ul>里面动态添加的<li&g ...