Преобразование 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:
- Загрузите PowerPoint на Google Диск, затем нажмите
Open in Google Slides
, ИЛИ ЖЕ - Создайте новую презентацию Google Slides, затем нажмите
File -> Import Slides...
и потяните нужные слайды. File -> Download as -> Scalable Vector Graphics (.svg, current slide)
,
Вот как я это делаю (без Office PIA).
- Запустите макрос, чтобы разделить PPTX на столько файлов PDF, сколько слайдов в презентации.
- Используйте 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