批次將.md格式轉換成.docx
利用pandoc,以及Java執行command的方法
批次將.md格式轉換成.docx
這個需求來源是這樣,平常RD寫文件或筆記,都是用md格式,然而有時候要跟PM或業務溝通,他們習慣看google文件上的word格式,於是需要轉換。其實肯定是可以寫一個.bat腳本,然而我比較熟悉java,順便練習用java如何call第三方的cmd
-
前提: 安裝pandoc,萬用的文件格式轉換,應該不用多介紹
-
Java執行command的方法:
public static String cmd(File dir, String command) {
System.out.println("> " + command); // better to use e.g. Slf4j
System.out.println();
try {
Process p = Runtime.getRuntime().exec(command, null, dir);
String result = IOUtils.toString(p.getInputStream(), Charset.defaultCharset());
String error = IOUtils.toString(p.getErrorStream(), Charset.defaultCharset());
if (error != null && !error.isEmpty()) { // throw exception if error stream
throw new RuntimeException(error);
}
System.out.println(result); // better to use e.g. Slf4j
return result; // return result forpandoc -s index.md -t textile -o index.txt optional additional processing
} catch (IOException e) {
throw new RuntimeException(e);
}
}
-
有一個問題就是pandoc轉換文件,如果md中使用了相對路徑的圖片,那直接在指令中帶上原檔絕對路徑,轉換之後圖片就會丟失
-
所以必須先走到那個資料夾路徑之下(就相當於cd 到那邊啦),直接操作資料夾下的index.md,這樣轉換之後才能保住圖片
@Test
void turnMdNoteToDocx() {
File file= new File("C:\\Users\\yoming613\\md-note\\note1\\");
cmd(file, "pandoc -s index.md -o C:\\Users\\yoming613\\Desktop\\note1.docx");
同場加映,轉換成wiki格式
- 公司用的redmine系統,他上面吃的就是特別的textile的wiki格式
- 其實redmine也是支援md格式的但是只能2選1
pandoc -s index.md -t textile -o index.txt
上次修改於 2022-08-10