使い方
- 下のソースを適当な名前で保存する(ここではexportpdf.js)
- コマンドプロンプトから下記のように実行
cscript exportpdf.js (wordが格納されているフォルダ) (PDFを出力するフォルダ)
ソース
var prop = {
'ExportFormat': 17, // 出力するファイルのフォーマット PDF:17, XPS:18
'OpenAfterExport':false, // 変換後、変換されたファイルを開くかどうか
'OptimizeFor':1, // 印刷用に最適化(0)にするか、画面用に最適化(1)するか
'Range':0, // エクスポートする範囲を全体(0)にするか選択したページ(1)か、
// 現在のページ(2)か、FromとToで指定するか(3)
'From': 1, // Rangeで3を指定したときの開始ページ
'To': 2, // Rangeで3を指定したときの終了ページ
'Item': 0, // エクスポート時テキストのみ(0)を含めるか、テキストをマークアップ付き(7)で含めるかを指定する
'IncludeDocProps': false,// 新しいファイルに文書のプロパティを含めるかどうか
'KeepIRM':false, // ソース文書が IRM によって保護されている場合に、IRM アクセス許可を XPS 文書にコピーする場合は true。
'CreateBookmarks':2, // ブックマークを出力しないか(0)、見出しのみ(1)か、ヘッダやフッタなども含むか(2)
'DocStructureTags':false,// コンテンツのフローや論理構成など) を含める場合は true
'BitmapMissingFonts':false, // テキストのビットマップを含める場合は true。テキスト フォントを参照する場合は false。
'UseISO19005_1': true, // PDF の使用を ISO 19005-1 として標準化されている PDF のサブセットに限定する場合は true
'ShowRevisionsAndComments': false, // 書内の変更履歴およびコメントを表示(true)、非表示(false)
'RevisionsView': 0 // 表示する画面を最終版(0)にするか、初版(1)にするか
};
if ( WScript.arguments.length != 2 ) {
WScript.Echo("arguments: InputFolder, OutputFolder");
WScript.Quit();
}
var fso = new ActiveXObject("Scripting.FileSystemObject");
var word = new ActiveXObject("Word.Application");
var inputBase = fso.GetAbsolutePathName(WScript.arguments.Item(0));
var outputBase = fso.GetAbsolutePathName(WScript.arguments.Item(1));
var inputReg = new RegExp("^" + inputBase);
makeWalker(getChildren, func)(inputBase);
function fileFunc(file) {
var output = file.replace(inputBase, outputBase);
if (fso.GetExtensionName(file).match(/(doc|docx)$/i)) {
var doc = null;
output = output.replace(/(doc|docx)$/i, "pdf");
try {
doc = word.Documents.Open(file);
doc.Windows.Item(1).View.RevisionsView = prop['RevisionsView'];
//doc.Windows.Item(1).View.ShowRevisionsAndComments = prop['ShowRevisionsAndComments '];
doc.ExportAsFixedFormat (
output, prop['ExportFormat'],
prop['OpenAfterExport'], prop['OptimizeFor'],
prop['Range'], prop['From'], prop['To'],
prop['Item'], prop['IncludeDocProps'],
prop['KeepIRM'], prop['CreateBookmarks'],
prop['DocStructureTags'], prop['BitmapMissingFonts'],
prop['UseISO19005_1']
);
} finally {
if (doc) { doc.Close() }
}
}
}
function folderFunc(folder) {
var output = folder.replace(inputBase, outputBase);
if (!fso.FolderExists(output)) {
fso.CreateFolder(output);
}
}
function func(node) {
if (fso.FolderExists(node)) {
folderFunc(node);
} else if (fso.FileExists(node)) {
fileFunc(node);
}
}
function getChildren(node) {
var children = [];
if (fso.FolderExists(node)) {
for (var e = new Enumerator(fso.GetFolder(node).SubFolders); !e.atEnd(); e.moveNext()) {
children.push(e.item().Path);
}
for (var e = new Enumerator(fso.GetFolder(node).Files); !e.atEnd(); e.moveNext()) {
children.push(e.item().Path);
}
}
return children;
}
function makeWalker(getChildren, func) {
return function walk(node) {
func(node);
var children = getChildren(node);
for ( var i = 0; i < children.length; i++) {
walk(children[i]);
}
}
}