6. 腳本詳解¶
本章將對本教程中所用到之腳本進行講解。
本項目所使用到的腳本存放在 util
文件夾之中,它們為:
mk_folder.bat
用於創建文件夾。
備註
腳本命名問題
在Windows當中,如果把批處理腳本命名為所要調用的系統命令名,很可能會導致死循環。 故此命名此腳本為
mk_folder.bat
而不是mkdir.bat
gs_split_pdf.bat
調用
ghostscript
把PDF分割為單頁。
pdf_to_svg.bat
把多頁PDF轉換為分頁的SVG。
pdf_to_png.bat
把多頁PDF轉換為分頁的PNG。
pdf_to_emf.bat
把PDF轉換為EMF(僅一頁)。
pdf_to_eps.bat
把PDF轉換為的EPS(僅一頁)。
警告
路徑
在設置 documentclass
時,需要注意輸入的路徑參數。本教程一律使用相對路徑。
./
是指當前所在路徑。
../
是指往上移一層目錄。
6.1. mk_folder.bat
詳解¶
mk_folder.bat
的內容如下:
1 2 3 4 5 6 | @echo off
REM this file is not call "mkdir" to avoid run errors
set dst_dir=%1
if not exist %dst_dir%/NUL mkdir %dst_dir%
|
此腳本用於在CMD當前所在之目錄為根來創建文件夾。如果該文件夾已存在,則不創建而退出。
此腳本接受一個參數。此參數為將要創建的文件夾路徑。
此腳本之使用方法如下:
mk_folder <要創建之文件夾路徑>
此腳本的語法和 mkdir
命令的語法一致。此處給出一個例子,假設要在目前的目錄下創建一個名為 a
的文件夾,其下有一個子目錄,名為 b
,而 b
之下又有一個子目錄,名為 c
。
mk_folder a\b\c
若文件夾路徑中有空格,則需要把路徑放在兩個雙引號之中,如:
mk_folder "a b\c d"
6.2. gs_split_pdf.bat
詳解¶
gs_split_pdf.bat
的內容如下:
1 2 3 4 5 6 7 8 9 10 | @echo off
REM use 64-bit ghosescript to split a pdf
set temp_folder=%1
set outfile=%2
set infile=%3
REM the gswinXXc.exe does not prompt the ghostscript window, the ones without the "c" do prompt
gswin64c -sDEVICE=pdfwrite -dSAFER -dNOPAUSE -dBATCH -sOutputFile=%temp_folder%/%outfile% %infile%
|
此腳本用於把輸入的PDF分割為單頁的PDF。
此腳本接受三個參數。它們如下(按順序):
- 輸出的單頁PDF的文件夾的路徑
- 輸出的單頁PDF文件的共用文件名加上“%d”
- 需要分頁的PDF的路徑
此腳本調用的是64位的 ghostscript
,若你安裝的是32位的版本則需要把此腳本中的 gswin64c
更改為 gswin32c
。
此處給出一個例子,輸出的文件夾為 output
(已存在),共用文件名為 common
,需要分頁的PDF為 pdf_in
。
gs_split_pdf output common%d.pdf pdf_in.pdf
備註
“%d”
如果不在共用文件名後加上“%d”,ghostscript
則不會對PDF進行分頁。
6.3. pdf_to_svg.bat
詳解¶
pdf_to_svg.bat
的內容如下:
1 2 3 4 5 6 7 | @echo off
REM use pdf2svg (https://github.com/jalios/pdf2svg-windows) to convert a pdf to individual svgs
set inputfile=%1
set outputfile=%2
pdf2svg %inputfile% %outputfile% all
|
此腳本用於把PDF轉換為SVG。
此腳本接受兩個參數。它們如下(按順序):
- 需要轉換的PDF文件路徑
- 輸出的單頁PDF文件的共用文件名加上“%d”
此腳本調用 pdf2svg
來進行文件的轉換。此處給出一個例子,需要轉換的PDF名為 pdf_in
,輸出的單頁PDF的共用文件名為 pdf_out
,輸出的文件夾為 out_svg
(已存在)。
pdf_to_svg pdf_in.pdf .\out_svg\pdf_out%d.svg
備註
“%d”
如果不在共用文件名後加上“%d”,則只會轉換PDF的第一頁。
6.4. pdf_to_png.bat
詳解¶
pdf_to_png.bat
的內容如下:
1 2 3 4 5 6 7 | @echo off
REM use pdftocairo to convert a pdf into multiple pngs
set dpi=%1
set inputfile=%2
pdftocairo -r %dpi% -png %inputfile%
|
此腳本用於把PDF轉換為PNG。此腳本會在CMD當前所在之目錄創建PNG文件。
此腳本接受兩個參數。它們如下(按順序):
- 轉換的PNG的DPI,一般為300或600。過高的DPI會令轉換過程冗長。一般而言,打印需要至少300 DPI,一般600 DPI足以應付絕大部分情況。
- 需要轉換的PDF的路徑
此腳本調用 pdftocairo
來進行文件的轉換。此處給出一個例子,轉換的DPI為600像素,需要轉換的PDF名為 pdf_in
。
pdf_to_png 600 pdf_in.pdf
備註
pdftocairo
pdftocairo
會自動把多頁PDF轉換為單頁的PNG,非常方便。
備註
為了方便,用戶可以把 util
文件夾的路徑加入到系統環境變量 Path
中,這樣就可以直接調用腳本,而不需要在命令中指定 util
文件夾的路徑。