Как я могу автоматически конвертировать PowerPoint в PDF?

Мне нужно преобразовать файлы .ppt / .pptx в .pdf-файлы (или изображения) через командную строку, используя сторонний продукт.

Я использую это для сервера Windows 2008, и я не могу использовать какой-либо графический интерфейс или веб-сайт, поскольку это должен быть автоматический процесс.

Я пробовал libreoffice, но у него есть проблемы с преобразованием умного искусства.

EDIT: Моим окончательным решением было использование взаимодействия PowerPoint с C # . См. Также: https://stackoverflow.com/questions/26372020/how-to-programmatically-create-a-powerpoint-from-a-list-of-images

4 Solutions collect form web for “Как я могу автоматически конвертировать PowerPoint в PDF?”

Не требуется сторонний продукт. Как вы уже отметили, PowerPoint может экспортировать презентацию в формате PDF. С помощью небольшого скрипта вы можете добиться своего результата. Я взломал VB Script ниже. Просто создайте файл с именем, заканчивающимся на «.vbs», вставьте код ниже.

Использовать:

CSCRIPT ppt.vbs "input file name" "output file name" 

Важно отметить:

  • Если имена (имена) содержат пробелы, они должны быть указаны.
  • Если вы не укажете путь для выходного файла, PowerPoint поместит его в папку «Документы».

Я включил ссылки inline для ссылок на различные биты.

 Option Explicit Sub WriteLine ( strLine ) WScript.Stdout.WriteLine strLine End Sub ' http://msdn.microsoft.com/en-us/library/office/aa432714(v=office.12).aspx Const msoFalse = 0 ' False. Const msoTrue = -1 ' True. ' http://msdn.microsoft.com/en-us/library/office/bb265636(v=office.12).aspx Const ppFixedFormatIntentScreen = 1 ' Intent is to view exported file on screen. Const ppFixedFormatIntentPrint = 2 ' Intent is to print exported file. ' http://msdn.microsoft.com/en-us/library/office/ff746754.aspx Const ppFixedFormatTypeXPS = 1 ' XPS format Const ppFixedFormatTypePDF = 2 ' PDF format ' http://msdn.microsoft.com/en-us/library/office/ff744564.aspx Const ppPrintHandoutVerticalFirst = 1 ' Slides are ordered vertically, with the first slide in the upper-left corner and the second slide below it. Const ppPrintHandoutHorizontalFirst = 2 ' Slides are ordered horizontally, with the first slide in the upper-left corner and the second slide to the right of it. ' http://msdn.microsoft.com/en-us/library/office/ff744185.aspx Const ppPrintOutputSlides = 1 ' Slides Const ppPrintOutputTwoSlideHandouts = 2 ' Two Slide Handouts Const ppPrintOutputThreeSlideHandouts = 3 ' Three Slide Handouts Const ppPrintOutputSixSlideHandouts = 4 ' Six Slide Handouts Const ppPrintOutputNotesPages = 5 ' Notes Pages Const ppPrintOutputOutline = 6 ' Outline Const ppPrintOutputBuildSlides = 7 ' Build Slides Const ppPrintOutputFourSlideHandouts = 8 ' Four Slide Handouts Const ppPrintOutputNineSlideHandouts = 9 ' Nine Slide Handouts Const ppPrintOutputOneSlideHandouts = 10 ' Single Slide Handouts ' http://msdn.microsoft.com/en-us/library/office/ff745585.aspx Const ppPrintAll = 1 ' Print all slides in the presentation. Const ppPrintSelection = 2 ' Print a selection of slides. Const ppPrintCurrent = 3 ' Print the current slide from the presentation. Const ppPrintSlideRange = 4 ' Print a range of slides. Const ppPrintNamedSlideShow = 5 ' Print a named slideshow. ' http://msdn.microsoft.com/en-us/library/office/ff744228.aspx Const ppShowAll = 1 ' Show all. Const ppShowNamedSlideShow = 3 ' Show named slideshow. Const ppShowSlideRange = 2 ' Show slide range. ' ' This is the actual script ' Dim inputFile Dim outputFile Dim objPPT Dim objPresentation Dim objPrintOptions Dim objFso If WScript.Arguments.Count <> 2 Then WriteLine "You need to specify input and output files." WScript.Quit End If inputFile = WScript.Arguments(0) outputFile = WScript.Arguments(1) Set objFso = CreateObject("Scripting.FileSystemObject") If Not objFso.FileExists( inputFile ) Then WriteLine "Unable to find your input file " & inputFile WScript.Quit End If If objFso.FileExists( outputFile ) Then WriteLine "Your output file (' & outputFile & ') already exists!" WScript.Quit End If WriteLine "Input File: " & inputFile WriteLine "Output File: " & outputFile Set objPPT = CreateObject( "PowerPoint.Application" ) objPPT.Visible = True objPPT.Presentations.Open inputFile Set objPresentation = objPPT.ActivePresentation Set objPrintOptions = objPresentation.PrintOptions objPrintOptions.Ranges.Add 1,objPresentation.Slides.Count objPrintOptions.RangeType = ppShowAll ' Reference for this at http://msdn.microsoft.com/en-us/library/office/ff746080.aspx objPresentation.ExportAsFixedFormat outputFile, ppFixedFormatTypePDF, ppFixedFormatIntentScreen, msoTrue, ppPrintHandoutHorizontalFirst, ppPrintOutputSlides, msoFalse, objPrintOptions.Ranges(1), ppPrintAll, "Slideshow Name", False, False, False, False, False objPresentation.Close ObjPPT.Quit 

Вы можете распечатать драйвер принтера PDF, такой как Adobe Distiller, или любой из многих более дешевых или даже драйверов с открытым исходным кодом.

Office PowerPoint Viewer 2007 имеет переключатель командной строки /p который позволяет печатать файл PowerPoint на принтере по умолчанию.

Например:

 Send the presentation to a printer, and print the file. Example: "c:\program files\microsoft office\office12\PPTVIEW.exe" /P "Presentation.pptx" This example prints the Presentation.pptx file. 

Принтер PDF, вероятно, должен быть установлен как ваш принтер по умолчанию.

Вместо Adobe Distiller, что означает, что вы должны купить Adobe Acrobat, я рекомендую вам использовать PDFCreator . Он бесплатный и позволяет автоматически сохранять выходной файл в автоматическом режиме, если вы настраиваете параметры. Таким образом, вы можете полностью использовать метод командной строки для преобразования файлов PowerPoint в PDF без необходимости внесения дополнительных платежей в Microsoft или Adobe.

Использовал это, чтобы написать скрипт для конвертации всей папки, ответьте, если это можно улучшить, это мой первый раз, когда я пишу vbscript!

команда:

 cscript scriptname.vbs "C:/path/to/folder" 

Файлы будут сохранены в каталоге, в котором находится скрипт.

код:

 Option Explicit Sub WriteLine ( strLine ) WScript.Stdout.WriteLine strLine End Sub Const msoFalse = 0 ' False. Const msoTrue = -1 ' True. Const ppFixedFormatIntentScreen = 1 ' Intent is to view exported file on screen. Const ppFixedFormatIntentPrint = 2 ' Intent is to print exported file. Const ppFixedFormatTypeXPS = 1 ' XPS format Const ppFixedFormatTypePDF = 2 ' PDF format Const ppPrintHandoutVerticalFirst = 1 ' Slides are ordered vertically, with the first slide in the upper-left corner and the second slide below it. Const ppPrintHandoutHorizontalFirst = 2 ' Slides are ordered horizontally, with the first slide in the upper-left corner and the second slide to the right of it. Const ppPrintOutputSlides = 1 ' Slides Const ppPrintOutputTwoSlideHandouts = 2 ' Two Slide Handouts Const ppPrintOutputThreeSlideHandouts = 3 ' Three Slide Handouts Const ppPrintOutputSixSlideHandouts = 4 ' Six Slide Handouts Const ppPrintOutputNotesPages = 5 ' Notes Pages Const ppPrintOutputOutline = 6 ' Outline Const ppPrintOutputBuildSlides = 7 ' Build Slides Const ppPrintOutputFourSlideHandouts = 8 ' Four Slide Handouts Const ppPrintOutputNineSlideHandouts = 9 ' Nine Slide Handouts Const ppPrintOutputOneSlideHandouts = 10 ' Single Slide Handouts Const ppPrintAll = 1 ' Print all slides in the presentation. Const ppPrintSelection = 2 ' Print a selection of slides. Const ppPrintCurrent = 3 ' Print the current slide from the presentation. Const ppPrintSlideRange = 4 ' Print a range of slides. Const ppPrintNamedSlideShow = 5 ' Print a named slideshow. Const ppShowAll = 1 ' Show all. Const ppShowNamedSlideShow = 3 ' Show named slideshow. Const ppShowSlideRange = 2 ' Show slide range. ' ' This is the actual script ' Dim inputDirectory Dim inputFolder Dim inFiles Dim outputFolder Dim inputFile Dim outputFile Dim curFile Dim objPPT Dim objPresentation Dim objPrintOptions Dim objFso Dim curDir If WScript.Arguments.Count <> 1 Then WriteLine "You need to specify input files." WScript.Quit End If Set objFso = CreateObject("Scripting.FileSystemObject") curDir = objFso.GetAbsolutePathName(".") Set inputFolder = objFSO.GetFolder(WScript.Arguments.Item(0)) Set outputFolder = objFSO.GetFolder(WScript.Arguments.Item(0)) Set inFiles = inputFolder.Files Set objPPT = CreateObject( "PowerPoint.Application" ) For Each curFile in inFiles Set inputFile = curFile If Not objFso.FileExists( inputFile ) Then WriteLine "Unable to find your input file " & inputFile WScript.Quit End If objPPT.Visible = TRUE objPPT.Presentations.Open inputFile Set objPresentation = objPPT.ActivePresentation Set objPrintOptions = objPresentation.PrintOptions objPrintOptions.Ranges.Add 1,objPresentation.Slides.Count objPrintOptions.RangeType = ppShowAll objPresentation.ExportAsFixedFormat curDir & curFile.Name & ".pdf", ppFixedFormatTypePDF, ppFixedFormatIntentScreen, msoTrue, ppPrintHandoutHorizontalFirst, ppPrintOutputSlides, msoFalse, objPrintOptions.Ranges(1), ppPrintAll, "Slideshow Name", False, False, False, False, False objPresentation.Close Next ObjPPT.Quit 
  • Добавить поля в PDF, созданные через «Печать» в Safari
  • Язык задания принтера -> PDF
  • Как я могу автоматически конвертировать все файлы исходного кода в папку (рекурсивно) в один PDF с подсветкой синтаксиса?
  • Создание PDF-документов
  • Как прокрутить несколько строк (таким образом, быстрее) в Adobe Acrobat Reader?
  • Есть ли эффективный способ копирования текста из PDF без разрывов строк?
  • Многостраничный PDF-баннер / плакат из PDF
  • Разделение PDF в PDF-файлы различных размеров
  • Пакетное преобразование документов Word в PDF-файлы
  • Linux-инструмент для измельчения PDF-файлов на несколько страниц
  • Конденсация в несколько страниц PDF на листе, через командную строку
  • Count BW / цветные страницы в формате PDF
  • Interesting Posts

    Могу ли я установить 2,5-дюймовый SATA-накопитель на ноутбуке без каких-либо адаптеров?

    Как заставить браузер использовать дискретный графический процессор Radeon

    Как мне пригласить людей в чат в Thunderbird?

    Зачем использовать RAMdisk сегодня?

    Как изменить цвет красной кнопки закрытия в Windows 8?

    Почему Office 2010 не открывается файл Excel?

    Будет ли звуковая карта поддерживать качество аудиозаписи?

    Восстановление поврежденного MP4

    Удаленный рабочий стол с поддержкой нескольких мониторов в XP?

    Outlook 2007 – Самый простой и самый недорогой способ поделиться календарем между 5-10 людьми?

    Просмотр доступа к файловой системе в режиме реального времени в Mac OS X

    Предотвращать переключение монитора при закрытии крышки ноутбука

    Как отображать текущее время с файлом ffplay.exe?

    Что необходимо, чтобы модули RAM полностью совместимы друг с другом?

    Будет ли обновление до Windows 10 с 8.1 удалять существующий вирус и вредоносное ПО ..?

    Давайте будем гением компьютера.