使用Microsoft Office 2010 PIA将PPT转换为SVG



我正在尝试将powerpoint演示文稿转换为单独的svg文件(每个幻灯片1个),是否可以通过使用Microsoft Office 2010 PIA来实现?

如果有,那么有关于在Java中使用Microsoft Office 2010 PIA的教程吗?

据我所知没有现成的自动转换器,但我成功地将每张幻灯片在Powerpoint中保存为PDF,然后在Inkscape中打开PDF并保存为SVG。Powerpoint的PDF导出和Inkscape的PDF导入都非常复杂,产生了很好的结果,SVG是Inkscape的原生保存格式,但可能需要在Inkscape中对导入的PDF进行一些调整,以精确地再现原始文件中的某些元素。

我安装了adobeacrobat可能会有不同,但我没有使用"另存为adobepdf"插件,只是使用普通的"另存为"对话框。使用另存为adobepdf产生较差的结果。

我更成功地导出了增强的Windows元文件(.emf), Inkscape也可以读取。

它"更好",因为当我试图导入导出的PDF时,Inkscape生成了一堆图像文件。导入的SVG的XML看起来也更清晰了。

我知道这是一个老问题,但我最近尝试这样做,并找到了一个解决方案,使用谷歌幻灯片工作得很好:

  1. 上传ppt到Google Drive,然后点击Open in Google Slides, OR
  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宏

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

这是可以改进的(例如,对话框,更多的控件,添加为一个插件),但这里是原则上的。

<<h2> inkscape一步/h2>

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之间的映射可能要接近得多。

这不是最流畅的翻译,但可以查看docx4j的pptx4j组件,以SVG呈现大多数项目:http://dev.plutext.org/svn/docx4j/trunk/docx4j/src/pptx4j/java/org/pptx4j/samples/RenderAsSvgInHtml.java

在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文件

相关内容

  • 没有找到相关文章

最新更新