我正在寻找一种方法,能够在 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
下载并安装 PDFCreator 及其COM 模块。COM 模块很重要,否则以下 VBscript 无法与您的 PDF 打印机通信
将此代码复制并粘贴到文本文件并将其保存为
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
将 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 的指南操作。
您可能还可以将每个脚本应用于每种文件类型,但我没有研究过这一点。