Преобразование PPT в SVG с использованием Microsoft Office 2010 PIA

Я пытаюсь преобразовать презентацию PowerPoint в отдельные файлы SVG (по 1 на каждый слайд). Возможно ли это сделать с помощью Microsoft Office 2010 PIA?

Если да, то есть ли руководство по использованию Microsoft Office 2010 PIA в Java?

6 ответов

Я не знаю готовых автоматических конвертеров, но мне удалось сохранить каждый отдельный слайд в формате PDF в Powerpoint, затем открыть PDF в Inkscape и сохранить его в формате SVG. Как экспорт PDF в Powerpoint, так и импорт PDF в Inkscape достаточно сложны и дают хорошие результаты, и SVG - это собственный формат сохранения Inkscape, но может потребоваться некоторая настройка импортированного PDF в Inkscape для точного воспроизведения определенных элементов в оригинале.

Возможно, имело значение то, что у меня установлен Adobe Acrobat, но я не использовал плагин "Сохранить как Adobe PDF", просто обычный диалог "Сохранить как". Использование Save as Adobe PDF дало худшие результаты.

У меня был больший успех при экспорте в расширенный метафайл Windows (.emf), который также может читать Inkscape.

Это было "лучше", потому что когда я пытался импортировать экспортированный PDF, Inkscape генерировал кучу файлов изображений. XML импортированного SVG также выглядел чище.

Я понимаю, что это старый вопрос, но недавно я попытался сделать это и нашел решение, которое работало довольно хорошо с помощью Google Slides:

  1. Загрузите PowerPoint на Google Диск, затем нажмите Open in Google Slides, ИЛИ ЖЕ
  2. Создайте новую презентацию Google Slides, затем нажмите File -> Import Slides... и потяните нужные слайды.
  3. File -> Download as -> Scalable Vector Graphics (.svg, current slide),

Вот как я это делаю (без Office PIA).

  1. Запустите макрос, чтобы разделить PPTX на столько файлов PDF, сколько слайдов в презентации.
  2. Используйте inkscape для конвертации каждого PDF в SVG

VBA Macro

Sub ExportAllSlidesInPDF()

  Dim SourceView, answer As Integer
  Dim SourceSlides, NumPres, x As Long
  Dim ThisSlideFileNamePDF As String

  NumPres = Presentations.Count

  If NumPres = 0 Then
     MsgBox "No Presentation Open", vbCritical, vbOKOnly, "No Presentations Open"
  End If

  SourceView = ActiveWindow.ViewType
  SourceSlides = ActivePresentation.Slides.Count

  For x = 1 To SourceSlides
     Presentations.Add
     With ActivePresentation.PageSetup
        .SlideHeight = Presentations(1).PageSetup.SlideHeight
        .SlideWidth = Presentations(1).PageSetup.SlideWidth
     End With

     If ActiveWindow.ViewType <> ppViewSlide Then
        ActiveWindow.ViewType = ppViewSlide
     End If

     Presentations(1).Windows(1).Activate
     If ActiveWindow.ViewType <> ppViewSlideSorter Then
        ActiveWindow.ViewType = ppViewSlideSorter
     End If

     ActivePresentation.Slides.Range(Array(x)).Select
     ActiveWindow.Selection.Copy

     Presentations(2).Windows(1).Activate
     If ActiveWindow.ViewType <> ppViewSlide Then
        ActiveWindow.ViewType = ppViewSlide
     End If

     ActiveWindow.View.Paste
     ActiveWindow.Selection.Unselect

     ThisSlideFileNamePDF = "Slide_" & x & ".pdf"
     ActivePresentation.SaveAs ThisSlideFileNamePDF, ppSaveAsPDF
     ActivePresentation.Close

     Presentations(1).Windows(1).Activate

  Next x

  ActiveWindow.ViewType = SourceView

End Sub

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

шаг Inkscape

Однострочник для Linux-бокса:

for file in *.pdf; do inkscape --without-gui "--file=$file" "--export-plain-svg=${file%%.*}.svg"; done

Это будет довольно сложно, прямого способа сделать это не существует (пожалуйста, исправьте меня, если я ошибаюсь!) - проще всего было бы напечатать в XPS, а затем преобразовать XAML (XPS == XAML + Zip файл) в файл SVG; это не просто и не просто, но отображение между XAML => SVG, вероятно, гораздо ближе.

В Mac OSX он не оптимизирован для использования из командной строки [1], поэтому вам необходимо добавить абсолютный путь к вашим файлам:

for file in *.pdf; do inkscape --without-gui "--file=${PWD}/${file}" "--export-plain-svg=${PWD}/${file%%.*}.svg"; done

В противном случае вы получите это сообщение об ошибке:

** Сообщение: не удалось открыть файл PDF.

** (inkscape-bin: 13267): ПРЕДУПРЕЖДЕНИЕ **: Не удается открыть файл: myfile.pdf (не существует)

** (inkscape-bin: 13267): ПРЕДУПРЕЖДЕНИЕ **: указанный документ myfile.pdf не может быть открыт (не существует или не является допустимым файлом SVG)

[1] Inkscape в OSX не может открыть файл PDF с помощью команды терминала

Это не самый плавный перевод, но посмотрите pptx4j-компонент docx4j для рендеринга большинства элементов в SVG: http://dev.plutext.org/svn/docx4j/trunk/docx4j/src/pptx4j/java/org/pptx4j/samples/RenderAsSvgInHtml.java

Другие вопросы по тегам