自分メモ用
コピペ元にはスペースや改行がたくさんあったはずだけど?
Bullzip PDF Printer を使用してのPDF結合の仕方
Bullzip PDF Printer とはPDFファイルを作成できるフリーのソフト。
仮想プリンタドライバ。
詳しくはBullzip PDF Printer で検索すると説明が書いてあるサイトがあります。
私はaccessの複数のレポートをPDF化して1つのPDFファイルを作りたかったので色々調べました。
phpからの結合とかのサイトはあるもののaccessについてはほとんど記述がなく
仕方ないので英語マニュアルを翻訳して試行錯誤。
翻訳なのでおかしい表現いっぱいで意味不だった・・・。
とりあえず以下のサイトを一通り見てください。
ttp://gigazine.net/news/20080116_bullzip_pdf_printer/
ttp://www.f3.dion.ne.jp/~element/msaccess/AcTipsRptBullZip.html
まず、通常使うプリンタの設定を「Bullzip PDF Printer」に変更
' プリンタ設定を変更
Set Application.Printer = Application.Printers("Bullzip PDF Printer")
次に複数あるレポートをPDF化。
10個レポートがあったら10個のPDFファイルを作ります。
For i = 0 To 9
With New Bullzip.PDFPrinterSettings
'ファイル名設定
strFolder = "pdf保存場所\" & i & ".pdf"
' 出力ファイルのパス
.SetValue "output", strFolder
' 各種ダイアログの表示を抑止
.SetValue "ConfirmOverwrite", "no" ' 上書き確認
.SetValue "ShowSaveAS", "never" ' 名前を付けて保存
.SetValue "ShowSettings", "never" ' ファイル設定
.SetValue "ShowPDF", "no" ' 出力後の PDF 表示
.SetValue "ShowProgress", "no" ' タスクトレイの進捗インジケータ
.SetValue "ShowProgressFinished", "no" ' タスクトレイの完了バルーン
'文書情報を設定
.SetValue "Title", "タイトル" & i ' タイトル
.SetValue "Author", "作成者" & i ' 作成者
' 一時設定として保存
.WriteSettings isRunOnce:=True
' 出力
DoCmd_OpenReport i, acViewNormal, SuppressPrintingDialog:=True
' 完了を待機
strIni = .GetSettingsFileName(isRunOnce:=True) ' 一時設定ファイルのパスを取得
Do While Len(Dir$(strIni)) ' 削除されるまでループ
Sleep 500 ' 0.5 秒待機
Loop
End With
Next
みたいな感じで作ると9個のレポートから9個のPDFファイルが作成されます。
全部で10個のPDFファイルを結合する場合
「|」で区切るが最後のレポートは印刷ジョブ実行で使用する。
With New Bullzip.PDFPrinterSettings
'----------------------------------------------------------------
'この部分が上記と違う部分
'マージ処理
.SetValue "MergeFile", "1.pdf | 2.pdf | 3.pdf | 4.pdf | 5.pdf | 6.pdf | 7.pdf | 8.pdf | 9.pdf"
.SetValue "MergePosition", "bottom"
.SetValue "ShowSettings", "never"
'----------------------------------------------------------------
' 出力ファイルのパス
.SetValue "output", "結合後のファイル名"
' 各種ダイアログの表示を抑止
.SetValue "ConfirmOverwrite", "no" ' 上書き確認
.SetValue "ShowSaveAS", "never" ' 名前を付けて保存
.SetValue "ShowSettings", "never" ' ファイル設定
.SetValue "ShowPDF", "no" ' 出力後の PDF 表示
.SetValue "ShowProgress", "no" ' タスクトレイの進捗インジケータ
.SetValue "ShowProgressFinished", "no" ' タスクトレイの完了バルーン
'文書情報を設定
.SetValue "Title", "タイトル" ' タイトル
.SetValue "Author", "作成者" ' 作成者
' 一時設定として保存
.WriteSettings isRunOnce:=True
' 出力 ---- 最後のレポートを出力する
DoCmd_OpenReport "10", acViewNormal, SuppressPrintingDialog:=True
' 完了を待機
strIni = .GetSettingsFileName(isRunOnce:=True) ' 一時設定ファイルのパスを取得
Do While Len(Dir$(strIni)) ' 削除されるまでループ
Sleep 500 ' 0.5 秒待機
Loop
End With