批次將.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