7

Я ищу способ добавить некоторые параметры в контекстное меню правого клика в Windows 7. У меня действительно нет большого опыта в программировании, но я очень хочу и хочу учиться.

В частности, я хотел бы иметь возможность щелкнуть правой кнопкой мыши документ Word и сделать его преобразование или сохранить как.PDF файл Я хочу иметь возможность конвертировать существующие документы в формат PDF. Документы в 99% случаев будут документами Microsoft Word, поэтому, если есть способ автоматизировать это, руководство приветствуется.

Я знаю, что есть другие способы сделать это, такие как загрузка "PDF Printer", но я бы предпочел избежать этого метода, если бы мог. Я также хотел бы избежать загрузки большего количества программного обеспечения для установки на ПК пользователя, если это возможно.

Надеюсь, я не очень требователен, но я действительно ценю любую помощь или совет, который вы можете предложить.

(В качестве бонуса я хотел бы посмотреть, смогу ли я также получить опцию «Сохранить как PDF» и «Отправить как вложение», если это возможно.)

3 ответа3

7

Вот решение для Word 2013. Он включает только добавление макроса Visual Basic в Word и несколько записей в реестр.

Создайте глобальный макрос в Word 2013: откройте любой документ в Word, откройте встроенный редактор Visual Basic (Alt + F11), выберите « Normal» на левой панели, нажмите « Insert» в главном меню, затем « 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) и закройте редактор 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.

Он работает тихо и поддерживает пакетное преобразование нескольких выбранных документов.

4

Используйте возможность командной строки 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 в вашей оболочке: папка sendto для более быстрого доступа

    (или же)

    Выполните ваш VBScript из командной строки, если вы хотите получить полный контроль над именем выходного файла.
    Используйте этот слегка измененный код для этого.

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

Я извиняюсь за то, что забыл об этом вопросе, но по крайней мере я наконец отвечаю на вопрос, правильно?

Я не мог найти способ сделать это так, как я хотел, поэтому я сделал небольшой обходной путь. Я создал и скомпилировал 2 отдельных скрипта .ahk (AutoHotkey) и добавил их в контекстное меню правой кнопкой мыши.

Вот сценарии:

Перерабатывать .ДОК и.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

Как только я написал эти сценарии и скомпилировал их в .exes, я поместил их в SendTo, следуя этому руководству HowToGeek.

Вы также можете применять каждый сценарий к каждому типу файла, но я не рассматривал это.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .