在 Windows 资源管理器中添加右键单击另存为 PDF

在 Windows 资源管理器中添加右键单击另存为 PDF

我正在寻找一种方法,能够在 Windows 7 中的右键单击上下文菜单中添加一些选项。我确实没有太多的编程经验,但我非常渴望并愿意学习。

具体来说,我希望能够右键单击 Word 文档并将其转换或保存为 .PDF 文件。我希望能够将现有文档转换为 PDF 格式。这些文档 99% 的时间都是 Microsoft Word 文档,因此如果有办法自动执行此操作,将不胜感激。

我知道还有其他方法可以做到这一点,例如下载“PDF 打印机”,但如果可以的话,我宁愿避免使用该方法。如果可能的话,我也希望避免下载更多软件安装在用户的 PC 上。

希望我没有提出太多要求,但我真的非常感谢您提供的任何帮助或指导。

(作为奖励,如果可能的话,我想看看是否还可以选择将其另存为 PDF 并作为附件发送。)

答案1

这是针对 Word 2013 的解决方案。它仅涉及向 Word 添加 Visual Basic 宏并向注册表添加一些记录。

在 Word 2013 中创建全局宏:在 Word 中打开任意文档,打开内置 Visual Basic 编辑器 (Alt + F11),选择普通的在左侧面板中,点击插入在主菜单中,然后模块,并将代码复制到编辑器中:

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)并关闭 Visual Basic 编辑器和 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 文件的资源管理器中。

它运行安静,并支持多个选定文档的批量转换。

答案2

使用命令行功能PDF创建器 将任何可打印文件转换为 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 文件夹中,以便更快地访问

    在此处输入图片描述

    (或者)

    如果要完全控制输出文件名,请从命令行执行 VBScript。
    使用此稍微改变了一下代码

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

答案3

我很抱歉忘记了这个问题,但至少我终于回答了这个问题,对吧?

我找不到按自己想要的方式完成此操作的方法,因此我做了一些小的变通。我创建并编译了 2 个单独的 .ahk(自动热键) 脚本并将其添加到右键单击上下文菜单中。

脚本如下:

将 .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,我就会将它们放入SendTo中按照 HowToGeek 的指南操作

您可能还可以将每个脚本应用于每种文件类型,但我没有研究过这一点。

相关内容