web-dev-qa-db-ja.com

Windowsエクスプローラーで右クリックして[名前を付けて保存] PDF

Windows 7の右クリックコンテキストメニューにいくつかのオプションを追加できる方法を探しています。プログラミングの経験はあまりありませんが、非常に熱心で学びたいと思っています。

具体的には、Word文書を右クリックして、変換するか、.PDFファイルとして保存できるようにしたいと思います。既存のドキュメントをPDF形式に変換できるようにしたい。ドキュメントは99%の確率でMicrosoft Wordドキュメントになるので、それを自動化する方法があれば、ガイダンスをいただければ幸いです。 。

「PDFプリンター」をダウンロードするなど、他の方法があることは承知していますが、できればその方法は避けたいと思います。また、可能であれば、ユーザーのPCにインストールするソフトウェアをさらにダウンロードすることは避けたいと思います。

うまくいけば、私はそれほど要求が厳しくありませんが、あなたが提供できるどんな助けやガイダンスにも本当に感謝しています。

(ボーナスとして、[名前を付けて保存] PDFおよび可能であれば添付ファイルとして送信する]オプションも取得できるかどうかを確認したいと思います。)

8
cyborgcommando0

この質問を忘れてしまったことをお詫びしますが、少なくとも私はついに質問に答えていますよね?

思い通りにこれを達成する方法が見つからなかったので、少し回避策を講じました。 2つの別々の.ahk( AutoHotkey )スクリプトを作成してコンパイルし、それらを右クリックのコンテキストメニューに追加しました。

スクリプトは次のとおりです。

.DOCおよび.DOCXをPDF(Office 2007または2010が必要)に変換します

; AutoHotkey Script by Cyborg v1.5

; This script is designed to be compiled and ran in the user's Send To Right-Click Menu.
; The user needs to right click a Word document go into the send to menu and choose this
; script. After launching the script the selected file will open in its version of Word
; and open the menus to save it as a PDF. In this version the user is unable to rename the
; the file.

; NOTE: In order for this to work correctly with Office 2007 you MUST have already installed
; the PDF/XPS converter from Microsoft.

SetTitleMatchMode 2

Loop %0%
{
Path := %A_Index%
Run,% Path
}

IfWinExist, Microsoft Word
    WinActivate

sleep 1000

Word2007:
IfExist, C:\Program Files (x86)\Microsoft Office\Office12\WINWORD.EXE ; Microsoft Word 2007
{
    Send ^s
    Send !f
    Send f
    Send p
    Sleep 500
    Send {Enter}
    Sleep 500
    WinClose, Microsoft Word
}
else
{
    Goto, Word2010
}
return

Word2010:
IfExist, C:\Program Files (x86)\Microsoft Office\Office14\WINWORD.EXE ; Microsoft Word 2010
{
    Send ^s
    Send !f
    Send d
    Send p
    Send a
    Sleep 500
    Send {Enter}
    Sleep 500
    WinClose, Microsoft Word
}
else
{
    Goto, Word2013
}
return

.XLSおよび.XLSXをPDF(Office 2007または2010が必要)に変換します

; AutoHotkey Script by Cyborg v1.5

; This script is designed to be compiled and ran in the user's Send To Right-Click Menu.
; The user needs to right click a Word document go into the send to menu and choose this
; script. After launching the script the selected file will open in its version of Excel
; and open the menus to save it as a PDF. In this version the user is unable to rename the
; the file.

; NOTE: In order for this to work correctly with Office 2007 you MUST have already installed
; the PDF/XPS converter from Microsoft.

SetTitleMatchMode 2

Loop %0%
{
Path := %A_Index%
Run,% Path
}

IfWinExist, Microsoft Excel
    WinActivate

sleep 1500

Excel2007:
IfExist, C:\Program Files (x86)\Microsoft Office\Office12\Excel.EXE ; Microsoft Excel 2007
{
    Send ^s
    Send !f
    Send f
    Send p
    Sleep 700
    Send {Enter}
    Sleep 700
    WinClose, Microsoft Excel
}
else
{
    Goto, Excel2010
}
return

Excel2010:
IfExist, C:\Program Files (x86)\Microsoft Office\Office14\Excel.EXE ; Microsoft Excel 2010
{
    Send ^s
    Send !f
    Send d
    Send p
    Send a
    Sleep 500
    Send {Enter}
    Sleep 500
    WinClose, Microsoft Excel
}
else
{
    Goto, Excel2013
}
return

Excel2013:
    MsgBox, Excel 2013 Not Configured for this Script.
return

これらのスクリプトを作成して.exeにコンパイルしたら、 HowToGeekによるこのガイドに従って によってSendToに配置しました。

各スクリプトを各ファイルタイプに適用することもできるかもしれませんが、私はそれを調べませんでした。

0
cyborgcommando0

これがWord2013のソリューションです。これには、Visual BasicマクロをWordに追加するだけで、いくつかのレコードをレジストリに追加するだけです。

Word 2013でグローバルマクロを作成します。Wordで任意のドキュメントを開き、組み込みのVisual Basicエディター(Alt + F11)を開き、左側のパネルでNormalを選択し、メインメニューにを挿入し、次にModuleを挿入して、コードをエディターにコピーします。

Sub ExportToPDFext()
    ChangeFileOpenDirectory ThisDocument.Path
    ActiveDocument.ExportAsFixedFormat _
        OutputFileName:=Left(ActiveDocument.FullName, InStrRev(ActiveDocument.FullName, ".")) + "pdf", _
        ExportFormat:=wdExportFormatPDF, _
        OpenAfterExport:=False, _
        OptimizeFor:=wdExportOptimizeForPrint, _
        Range:=wdExportAllDocument, _
        From:=1, _
        To:=1, _
        Item:=wdExportDocumentContent, _
        IncludeDocProps:=True, _
        KeepIRM:=True, _
        CreateBookmarks:=wdExportCreateNoBookmarks, _
        DocStructureTags:=True, _
        BitmapMissingFonts:=True, _
        UseISO19005_1:=False
    Application.Quit SaveChanges:=wdDoNotSaveChanges
End Sub

モジュールを保存し(Ctrl + S)、VisualBasicエディターとWordを閉じます。

次に、コンテキストメニューオプションをレジストリに追加します。拡張子が.regのファイルを作成して実行します。

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\Word.Document.8\Shell\SavePDFhere]
@="Save PDF here"

[HKEY_CLASSES_ROOT\Word.Document.8\Shell\SavePDFhere\command]
@="\"C:\\Program Files\\Microsoft Office\\Office15\\WINWORD.EXE\" /mExportToPDFext /q \"%1\""

[HKEY_CLASSES_ROOT\Word.Document.12\Shell\SavePDFhere]
@="Save PDF here"

[HKEY_CLASSES_ROOT\Word.Document.12\Shell\SavePDFhere\command]
@="\"C:\\Program Files\\Microsoft Office\\Office15\\WINWORD.EXE\" /mExportToPDFext /q \"%1\"" 

「保存PDFここに」」を右クリックすると、エクスプローラーでDOCおよびDOCXファイルが表示されます。

サイレントに動作し、選択した複数のドキュメントのバッチ変換をサポートします。

8
Oleksiy Kovtun

PDFCreator のコマンドライン機能を使用して、印刷可能なファイルをPDFに変換します

  1. PDFCreatorをその COMモジュール と一緒にダウンロードしてインストールします。 COMモジュールは重要です。そうでない場合、次のVBscriptはPDFプリンターと通信できません

  2. このコードをコピーしてテキストファイルに貼り付け、Convert2PDF.vbsとして保存します

    Set fso = CreateObject("Scripting.FileSystemObject")
    Set PDFCreator = Wscript.CreateObject("PDFCreator.clsPDFCreator", "PDFCreator_")
    
    With PDFCreator
     ReadyState = 0
     .cStart "/NoProcessingAtStartup"
     .cOption("UseAutosave") = 1
     .cOption("UseAutosaveDirectory") = 1
     .cOption("AutosaveFormat") = 0
     .cOption("AutosaveStartStandardProgram") = 0
     DefaultPrinter = .cDefaultprinter
     .cDefaultprinter = "PDFCreator"
     .cClearcache
     .cPrinterStop = false
     .cOption("AutosaveDirectory") = fso.GetParentFolderName(WScript.Arguments(0))
     .cOption("AutosaveFilename") = fso.GetBaseName(WScript.Arguments(0))
     .cPrintfile cStr(WScript.Arguments(0))
      c = 0
      Do While (ReadyState = 0) and (c < 120)
       c = c + 1
       Wscript.Sleep 250
      Loop
     .cDefaultprinter = DefaultPrinter
     .cClearcache
     WScript.Sleep 200
     .cClose
    End With
    
    Public Sub PDFCreator_eReady()
     ReadyState = 1
    End Sub
    
  3. より高速にアクセスできるように、VBscriptへのショートカットをShell:sendtoフォルダーに配置します

    enter image description here

    (または)

    出力ファイル名を完全に制御したい場合は、コマンドラインからVBScriptを実行します。
    これを使用してください このために少し変更されたコード

     C:\Convert2PDF.vbs "C:\inputfile.doc" "C:\outputfolder" "outputfilename"
    
4
nixda