Just PDF3のコマンドラインをVBSから使う例


#プログラムの場所と以下の表記
JustPdf3を普通にインストールすると、実行ファイルは
`C:\Program Files (x86)\JustSystems\JustPdf3\Creator`
に入っている。以下はこれを前提とする。違う場所にインストールして、>pdfCmdCreater.exeだけで動かない場合は、
\>pdfCmdCreator.exe
を絶対パス
`"C:\Program Files (x86)\JustSystems\JustPdf3\Creator\pdfCmdCreator.exe"`
または、環境変数を使って指定すること。
`C:\users\name>"%PROGRAMFILES(X86)%\JustSystems\JustPdf3\Creator\pdfCmdCreator.exe"`
https://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q12210847437?fr=sc_scdd&__ysp=UTExUSBRaWl0YQ%3D%3D
すいませんわかりにくかったようで変えてみました。
\>pdfCmdCreator.exe
というのはコマンド入力画面を起動すると

```bat
c:\users\name>
```

と表示されている状態から

```bat
c:\users\name>dfCmdCreator.exe
```

と入力した状態を表現する意図でした。

####Version 4
"%PROGRAMFILES(X86)%\JustSystems\JustPdf4\Creator\JustPdf4CmdCreator.exe"`

##JUST PDF 4[作成][データ変換]の実行形式ファイルの名前が変更
3までと変わっています。このため、サンプルがうまく動きません
PdfCmdCreator → JustPdf4CmdCreator
CmdDataConverter → JustPdf4CmdDataConverter
"%PROGRAMFILES(X86)%\JustSystems\JustPdf4\Creator\JustPdf4CmdCreator.exe
"%PROGRAMFILES(X86)%\JustSystems\JustPdf4\Converter\JustPdf4CmdDataConverter.exe
##以下のサンプルには前提がありました
実行形式から書いているサンプルはすべて、
JUST PDF 4［データ変換/作成］をインストールしたフォルダーに移動して、次のように入力します。
ということで、そもそも実行形式ファイルがあるフォルダに
VBSならカレントディレクトリを
bat、コマンドプロンプトなら CDで
Powershellなら slで
移動していることが前提です。

#Helpの場所
##JustPDF
コマンドラインの説明はJustPDf [作成] のHelpに入っている。
##コマンドラインでヘルプを表示させる。
コマンドラインでも簡単なヘルプが出せる。Windowsキー+R CMDでEnter
コマンドライン入力の黒い画面で
######Version 3
`cd "%Programfiles(x86)%\JustSystems\JustPdf3\Creator"`
または
`CD "C:\Program Files (x86)\JustSystems\JustPdf3\Creator>pdfCmdCreator"`
としてカレントディレクトリを移動し、
`C:\Program Files (x86)\JustSystems\JustPdf3\Creator>pdfCmdCreator.exe /Help`

######Version 4
JUST PDF 4も同様に一旦カレントを実行形式ファイルがある場所に移動して `/HELP`
を実行する。しかし、前述の通り実行形式ファイルの名前が変わっている。

```bat
CD "%Programfiles(x86)%\JustSystems\JustSystems\JustPdf4\Creator"
JustPdf4CmdCreator.exe /Help`
```

とすると表示される
ただし、概略のみが示される。
####Chmファイルの場所
######Version 4
%Programfiles(x86)%\JustSystems\JustSystems\JustPdf4\Converter
justpdf4DataConv.chm
%Programfiles(x86)%\JustSystems\JustSystems\JustPdf4\Creator
justpdf4creator.chm
justpdf4historymanager.chm
あとPDFファイルが入っている。
chmファイルがコマンドラインに詳しく見やすい。メモ帳にコピペもできる。そこで三角形を半角スペースに変えてスクリプトを仕上げて行く。Robocopyの処理にも似ている。
またエラーコードの見方もある。
エラーコードは例えば抽出のような場合に、元のファイルに問題があるのか、抽出や転送先に問題があるのか区別できる時がある。可読性はないが、頻発するエラーの場合には調べて見る価値がある。

####ヘルプでは正規表現っぽい記述がある
また`[0]`と書いているときは0ではなく数字を意味する時がある。
多分中で動作するときもそうなのだろう。

#詳細
##基本形

```bat
PdfCmdCreator.exe PDF操作パラメーター "ファイルパス1" "ファイルパス2" "..." [出力先指定パラメーター] [詳細セット指定パラメーター] [その他のパラメーター]
```

実行形式ファイル 操作命令 ソースのファイルのフルパス 出力先 詳細 その他
という並び順である。ただし命令によって若干違う。
このようなコマンドラインで、PDFの作成、ファイルの結合、PDFからページの抽出などが可能となる



##パラメーターの種類概要一覧
Windowsだとコマンドのオプションといわれていそうですが、Just　PDFではパラメーターと呼ばれている。

### 超重要、必ずマニュアル通り半角英数字小文字で書くこと！
今回わかったのは、このオプションは<b>必ずマニュアル通り小文字で</b>書く必要があるということ。
そうしないとエラーになったり無視される。
こういうのはあまりないのでちょっと驚いた。


|パラメータの種類|パラメーターの内容|
|:------|:--------------------------------|
|PDF操作パラメーター:|ファイルに対する操作を指定するパラメーターです。PDF操作パラメーターを複数同時に指定することはできません。|
|/create|指定したファイルをPDFに変換します。|
|/combine|PDFを結合して1つのファイルにします。|
|/insertpage|PDFの指定した位置にPDFのページを挿入します。|
|/extractpage|PDFの指定したページを別ファイルに抽出します。|
| /deletepage | PDFの指定したページを削除します。|
| /split|PDFを複数のファイルに分割します。|
|/rotatepage | PDFのページを回転します。|
| /movepage | PDFのページを移動します。|
| /info | PDFファイルの情報を取得します。|
|出力先指定パラメーター:|PDF操作パラメーターで指定した操作の保存先を指定するパラメーターです。複数指定することはできません。出力先指定パラメーターを省略した場合は、変換元ファイルと同じフォルダーに拡張子を「.pdf」にリネームしてから保存されます。リネーム後のファイル名がすでに存在する場合は/fileexistsの指定に従います。|
| /out|出力先ファイル・フォルダーを指定します。|
| /fileexists | 出力先にファイルが存在する場合の処理を指定します。|
|詳細セット指定パラメーター:|変換時に使用するJUST PDF 3［作成］の詳細セットを指定します。省略したり、無効な数値を指定したりした場合は、JUST PDF 3［作成］の画面から実行したときの設定値が使用されます。|
|/general|変換時に使用する一般設定の詳細セットを指定します。|
| /fontembed |変換時に使用するフォント設定の詳細セットを指定します。|
|/security| 変換時に使用するセキュリティ設定の詳細セットを指定します。|
|/watermark|変換時に使用するすかし設定の詳細セットを指定します。
|/imagecomp |変換時に使用する画像圧縮設定の詳細セットを使用します。|
|/signature|変換時に使用する電子署名設定の詳細セットを使用します。|
|その他のパラメーター:||
|/timeout|アプリケーションの印刷を使用するPDF変換のタイムアウト時間を指定します。|



##重要なもの

### `/create`
指定したファイルをPDFに変換。パラメーターの後ろに変換するファイルのパスを指定します。指定できるパスは1度に500個まで。保存先、詳細セットなどは別のパラメーターを使用して指定する。


```bat
PdfCmdCreator.exe /create "ファイルパス1" "ファイルパス2" ・・・ /out "出力先フォルダー" ・・・ /fileexists overwrite /general 1 /font 1 /security 1 /watermark 1 /image 1
```

/Outは　※フォルダーパスを指定する場合、末尾に円マーク（\）を含めない。

### `/combine`
指定したファイルを1つのPDFに結合します。
パラメーターの後ろに結合するファイルのパスを指定します。
結合順はパラメーターの並び順になります。
PDFファイル以外のファイルを指定した場合は、PDFファイルに変換してから結合されます。
指定できるパスは1度に500個までです。

```bat
PdfCmdCreator.exe /combine "ファイルパス1" "ファイルパス2" ・・・ /out "出力先フォルダー"
```

### `/insertpage`
挿入先ファイルにページを挿入します。以下の順番でファイル、ページを指定します。複数のファイルは指定できません。
PDFファイル以外のファイルを指定した場合は、PDFに変換してからページが挿入されます。

Path(String) Page(1以上の整数 2-4のような表示は可能だが複数範囲指定不可 総ページより大きい数値は無視　すべてのページは-1） DistinationPath （挿入ファイルのパス） Page （指定したページの後ろ -1文書末）

### `/extractpage`
ファイルのページを抽出して別ファイルに保存します。複数のファイルは指定できません。PDFファイル以外のファイルを指定した場合は、PDFに変換してからページが抽出されます。
Path 文字列 抽出対象ファイルページのパス Page 1以上の整数 2-4可能 複数不可 -1前頁

```bat
PdfCmdCreator.exe /extractpage "抽出するページのあるファイルのパス" 2-4 /out "保存先フォルダー"
```

このとき、抽出するファイルがアクロバットで開かれていても抽出できるようです。
また、このパラメーターは、フォルダのPDFに一括して動作せず、1つのファイルしか指定できません。
例えば `”C:\hoge\hoge.pdf"` の 64ページから68ページまでを `D:\extract.pdf `に抽出する。
ということを想定してJUST PDF を前提にしたバッチファイルを書いてみます。

```bat
%Programfiles(x86)%\JustSystems\JUST PDF 4\Creator\JustPdf4CmdCreator.exe▲/extractpage▲”C:\hoge\hoge.pdf"▲64-68▲/out"D:\extract.pdf"
```

###パラメータは小文字、半角スペースは一つ
このexractpageだけではなく、他のパラメーターにも共通しますが、実行形式ファイル、フォルダ名、パラメータは大文字、小文字を確実に遵守すること。ファイル名は大丈夫だと思いますが、どこでエラーが起きるのかわからないので、表記道理に書いたほうがいいです。とくにパラメーターは絶対小文字です。でないと動きません。
また半角スペースを三角で代用しています。通常はしないんですけど。このJust PDFはどうもこの半角スペースの数が2つになってもエラーになるらしい。スクリプトの末尾にスペースやタブが入っても危ない。マニュアルにわざわざスペースに三角形を書いているのはどうもそういう事情があるように思われる。
動作させていると、パラメータが代入される過程で`% %`で囲まれているように見える。その時スペースが続くと不一致になるのかもしれない。極めて判定が厳格な印象を受けている。

##`/deletepage`
ファイルのページを削除して別ファイルに保存します。複数のファイルは指定できません。PDFファイル以外を指定した場合は、PDFに変換してからページが削除されます
Path Page 対象ページを指定 2-4可能 -1指定不可


```bat
PdfCmdCreator.exe /deletepage "削除するページのあるファイルのパス" 2-4 /out "保存先フォルダー
```


###`/fileexists`
出力先に同名のファイルが存在した場合の処理を指定します。
省略された場合はrenameが適用されます。

|パラメーター|内容|
|:----------|:----|
|cancel|PDFを作成しません。|
|overwrite|既存ファイルを上書きします。ファイルを上書きできない場合はPDFを作成しません。 |
|rename|出力ファイル名に「_1」を付けてPDFを作成します。数値は存在しないファイル名になるまで増加します |


### General
`/general`
一般設定の詳細セットを次の番号で指定します。
1：標準、2：最高セキュリティレベル対応、3：PDF/A準拠、4：PDF/X準拠
※詳細セットの項目を変更している場合は、一覧で表示される順番を番号で指定します。(以下の項目も同様)

###`/fontembed`
フォント設定の詳細セットを次の番号で指定します。
1：埋め込む、2：埋め込まない

###`/security`
セキュリティ設定の詳細セットを次の番号で指定します。
1：なし、2：表示を許可しない、3：表示のみ許可、4：印刷を許可しない、5：編集を許可しない、6：最高レベル

###`/imagecomp`
画像圧縮設定の詳細セットを次の番号で指定します。
1：標準、2：圧縮しない、3：高圧縮、4：高品質

##VBSの例
ドラッグアンドドロップでPDFを作成する

```vb:DrugAndDropToPDFWithJustPdf3.vbs
Option Explicit
Dim objArgs,I,strFile,strFolder
Dim objFile,subFolder,strScr
DIm strBase,strExt,strNew,strParent,objShell
Dim Fso:set fso = createobject("scripting.filesystemobject")
Set objShell = CreateObject("WScript.Shell")
Set objArgs = WScript.Arguments
For I = 0 to objArgs.Count - 1
WScript.Echo objArgs(I)
set objFile = Fso.getFile(cstr(objArgs(I)))
WScript.Echo objFile.Path
strParent = fso.getparentfoldername(objFile)
strBase = Fso.getbasename(objfile)
strScr ="cmd /c PdfCmdCreator.exe /Create " & chr(34) & objFile.Path & chr(34) & " /out " & chr(34) & strParent & chr(34) & " /fileExists rename /general 1 /font 1 /Security 1 /image 1"
WScript.Echo strScr
Next
```

#Just PDF 4について
~~上記のコマンドでjustpdf3になっているものは`justpdf4`に書き換えると動作する。なにも書いていないものは、Just PDF 3 とJust PDF 4を同時にインストールしていない限り、自動的にPathが選択されるはずである。~~
すいません、これは間違ってました。

#PDFファイルを高度編集で開くコマンドライン
Just PDFの高度編集はほかとぜんぜん違う場所にある。
また、32bitOSと64bitOSの違いもある。
[「エラーコード；-7000000」が表示され、アクティベーションができない2009.12.08 ](https://support.justsystems.com/faq/1032/app/servlet/qadoc?QID=042293)
>ファイアウォール機能を持ったセキュリティ対策ソフトにより、アクティベーションを行う際に必要なプログラムの通信が拒否されている場合は、アクティブ化が正常に行えません。
この場合は、セキュリティ対策ソフトで「PDFPlus.exe」*1がインターネットにアクセスできるように設定します。

>*1初期値では、<C:\Program Files\Nuance\JUST PDF\bin>フォルダに存在します。

実はこのNuance/JUST PDF/binが高度編集の実行形式があるフォルダでGaaiho.exeが高度編集の正体である
https://ja.wikipedia.org/wiki/JUST_PDF
>高度編集は台湾ZEONCorporation[1]製の「Gaaiho PDF シリーズ」がベースとなっている。

とあるが、

>[[買物|ソフト] JUST PDF [作成]2009年05月23日(土)みきろぐ♪](http://www.ttvision.com/blog/archives/2009/05/23-2308.php)
 ジャストシステムのPDFソフト、JUST PDFの一番安い[作成]を買ってみた。 1,820円で購入。

>インストールパスがProgram Files\Nuanceなので、おそらくニュアンスコミュニケーションズジャパンからの供給だと思います。 バージョン情報にはZeon Corporation(たぶん台湾Zeon社)のコピーライトがあるので、つまりエンジン部分はいきなりPDFと同じものってことですかね。 

ということなので、JustPDFの高度編集は最初から現在に至るまで、NUANCCE社とZeonCorporation社が関係している。このためOSの違いやバージョンの違いはあれ、<b>Programfiles</b> Nuance  <b>Just PDFX</b> bin GaaihoDoc.exe になり太字の部分だけが64/32のち外、バージョンの違いで変わるが、基本的にはずっと同じだということでいいようだ。

ということなので、Documentsフォルダにあるdata.pdfをJust PDFX[高度編集]で開くコマンドラインは次のようになる。
##64 bit OS
64bit OSにインストールする場合は32 bit(x86)にインストールされるので

```bat
"%Programfiles(x86)%\Nuance\JUST PDF 3\bin\GaaihoDoc.exe" "%USERPROFILE%\Documents\data.pdf"
"%Programfiles(x86)%\Nuance\JUST PDF 4\bin\GaaihoDoc.exe" "%USERPROFILE%\Documents\data.pdf"
```

のようにスペースを開けてPDFのフルパスを続けると、PDFを直接高度編集で開くことができる。
またPDFとバージョン番号のあとにも半角スペースが必要である。
1.0のときは `\JUST PDF\`だが、2.0 以降は `\JUST PDF 2\`のようにスペースを開けて番号になる。
##32 bit OS

```bat
"%Programfiles%\Nuance\JUST PDF 3\bin\GaaihoDoc.exe" "%USERPROFILE%\Documents\data.pdf"
"%Programfiles%\Nuance\JUST PDF 4\bin\GaaihoDoc.exe" "%USERPROFILE%\Documents\data.pdf"
```

となるらしいが直接確認できる資料がないため、違ったらご教示いただきたい。以前のバージョンの記述と、他の実行形式ファイルのインストール形式にならえばこうなるはずである。
いずれの場合でも、JUST PDF3のときは64/32とも、必要があるときにPDF4の部分ををPDF3に書き換えると良い。
コマンドプロンプトが開いたままになるが、64bitOSの場合、

```bat
@ECHO OFF
"%PROGRAMFILES(x86)%\Nuance\JUST PDF 4\bin\GaaihoDoc.exe" %1
@ECHO ON
```

こんな感じのバッチファイルでドラッグアンドドロップで高度編集機能でPDFを開くことができる
###Just PDF 2以降と64/32に対応したPDFファイルをドラッグアンドドロップすると高度編集で開くバッチファイル
VBSでなくてスイマセン。
苦労したのが、単純にワンライナーで書くと、空白でエラーが生じる。
このため順次移動していく。
最初のX86で判定するのは
https://qiita.com/Marukaziler/items/3f64a77b3ccef31e6536
こちらの記事のアイデアです。
また変数を続けるとうまく行かないので、
空白が多い場合はCDで順次下降すると成功します。
このとき、ドットから始まる相対パスを使うことでうまく行きます。
また、理由が不明ですが、
`set J2=".\JUST PDF 2"`
をスラッシュをつけるとエラーになりがちです。
`set J2=".\JUST PDF 2\"`
こういうのは縁起が良くないです。

```bat
@echo off
REM CHCP 932
REM ANSI CRLF Text File
set PF32=%ProgramFiles(x86)%
if not exist "%PF32%" set PF32=%ProgramFiles%
cd /d %PF32%
cd ".\Nuance\"
set J2=".\JUST PDF 2"
set J3=".\JUST PDF 3"
set J4=".\JUST PDF 4"
if Exist %J2% (
cd %J2%
goto ExecuteGaaihoDoc
) else if Exist %J3% (
cd %J3%
goto ExecuteGaaihoDoc
) else if Exist %J4% (
cd %J4%
goto ExecuteGaaihoDoc
)
:ExecuteGaaihoDoc
Cd .\bin
GaaihoDoc.exe %1
exit
@echo on
```

##Pageをカウントするバッチファイル
###前提
 "C:\hoge\hoge.pdf"
バッチファイル :C:\hoge\pagecnt.bat
PDFファイル   :C:\hoge\hoge.pdf

```bat
"%ProgramFiles(x86)%\JustSystems\JustPdf4\Creator\JustPdf4CmdCreator.exe" /info page-count %1
```

これも、小文字の部分は小文字で書かないとエラーになる。