Преобразование PPT в SVG с использованием Microsoft Office 2010 PIA - PullRequest
12 голосов
/ 25 апреля 2011

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

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

Ответы [ 7 ]

18 голосов
/ 23 мая 2012

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

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

7 голосов
/ 31 января 2014

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

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

4 голосов
/ 17 февраля 2019

Я понимаю, что это старый вопрос, но недавно я попытался сделать это и нашел решение, которое очень хорошо работало с помощью 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).
1 голос
/ 29 ноября 2015

Вот как я это делаю (без 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
0 голосов
/ 11 мая 2018

В 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 с помощью команды терминала

0 голосов
/ 25 апреля 2011

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

0 голосов
/ 25 апреля 2011

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

...