この記事では、テキスト文書の印刷を自動化し、文書をPDFに変換する方法を説明します。
Microsoft Visual Basic.NETで記述されたテキストドキュメントを印刷するためのソースコードの例は次のようになります。
Dim app = CreateObject("Word.Application") Dim doc = app.Documents.Open("D:\in\my resume.doc") app.PrintOut(False) doc.Close() app.Quit()
このコードは非常に単純に見えます。 ただし、ドキュメントのリストの印刷を自動化するには、いくつかのニュアンスを考慮する必要があります。
1.使用するプリンターに名前を付ける機能が必要です。
2. Wordプログラムを非表示モードで動作させ、各文書を処理するときに画面に表示されないようにする必要があります。
3.すべての情報メッセージとドキュメントの操作の確認要求を無効にする必要があります
4.自動的に処理されたファイルの最近のファイルリストへの追加を無効にする必要があります。
プログラムの改訂版は次のようになります。
Dim app = CreateObject("Word.Application") app.Visible = False app.DisplayAlerts = 0 app.FeatureInstall = 0 app.DisplayRecentFiles = False app.DisplayDocumentInformationPanel = False app.AutomationSecurity = 3 Dim wdOptions = app.Options wdOptions.WarnBeforeSavingPrintingSendingMarkup = False wdOptions.SavePropertiesPrompt = False wdOptions.DoNotPromptForConvert = True wdOptions.PromptUpdateStyle = False wdOptions.ConfirmConversions = False Dim doc = app.Documents.Open("D:\in\my resume.doc") doc.Application.ActivePrinter = "Xerox Global Print Driver PS" app.PrintOut(False) doc.Saved = True doc.Close(0) app.Quit()
このコードは、大学でプログラミングのテストに合格するのに十分だと思います。 ただし、商用アプリケーションに導入する前に、さらにいくつかの問題を解決する必要があります。
1.入力ファイルに「読み取り専用」属性がある場合、このコードは機能しません。
2.ドキュメントのみを開いて閉じ、Microsoft Wordを開いたままにしておくと、プログラムの生産性が数倍向上します。
3.多くのユーザーは、ドキュメント全体ではなく、特定の範囲のページのみを印刷する機能、およびドキュメントの複数のコピーを印刷する機能を必要とします。
4.プログラムがWindowsタスクスケジューラから、またはWindowsサービスの代わりに実行されている場合、このコードは機能しません。
この記事では、読者の生活をつまらないものにしないために、これら4つの問題を解決する方法については説明しません。 Print Conductor 、 FolderMill 、および2Printerのプログラムでは、それらは私によって正常に解決されたと言えます。
ドキュメントをPDFに変換するには、PrintOut関数をExportAsFixedFormatに置き換える必要があります。 その後、コードは次のようになります。
Dim app = CreateObject("Word.Application") app.Visible = False app.DisplayAlerts = 0 app.FeatureInstall = 0 app.DisplayRecentFiles = False app.DisplayDocumentInformationPanel = False app.AutomationSecurity = 3 Dim wdOptions = app.Options wdOptions.WarnBeforeSavingPrintingSendingMarkup = False wdOptions.SavePropertiesPrompt = False wdOptions.DoNotPromptForConvert = True wdOptions.PromptUpdateStyle = False wdOptions.ConfirmConversions = False Dim doc = app.Documents.Open("D:\in\my resume.doc") doc.ExportAsFixedFormat("D:\out\my resume.pdf", 17) doc.Saved = True doc.Close(0) app.Quit()
この例は、コンピューターにMicrosoft Word 2007 SP2以降のバージョンがある場合に機能します。
コンピューターにプリンターがインストールされていない場合、ExportAsFixedFormat関数は機能しません。 または、インストールされているプリンターの1つがシステムのデフォルトプリンターとして割り当てられていない場合。
ドキュメントをPDFにエクスポートするためのコードは、ドキュメントのページの一部をエクスポートする機能、およびドキュメントをPDF / Aにエクスポートする機能を実装することで改善できます。 Microsoftは、これらの機能の両方をExportAsFixedFormat関数に実装しました。
このコードを使用してドキュメントをPDFに変換する商用アプリケーションの例: DocuFreezerおよびFolderMill 。