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

时间:2011-04-25 04:03:41

标签: svg ms-office powerpoint office-pia

我正在尝试将powerpoint演示文稿转换为单独的svg文件(每张幻灯片1个),是否可以使用Microsoft Office 2010 PIA进行此操作?

如果是这样,那么是否有关于在Java中使用Microsoft Office 2010 PIA的任何教程?

7 个答案:

答案 0 :(得分:17)

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

我安装了Adobe Acrobat可能会有所不同,但我没有使用“另存为Adobe PDF”插件,只使用普通的“另存为”对话框。使用“另存为Adobe PDF”会产生较差的结果。

答案 1 :(得分:7)

我最好成功导出为Inkscape也可以读取的增强型Windows元文件(.emf)。

这是'更好',因为当我尝试导入导出的PDF时,Inkscape生成了一堆图像文件。导入的SVG的XML似乎也更清晰。

答案 2 :(得分:2)

我意识到这是一个老问题,但是最近我尝试这样做,并找到了一个使用Google幻灯片效果很好的解决方案:

  1. 将PowerPoint上载到Google云端硬盘,然后单击Open in Google Slides,或
  2. 创建一个新的Google幻灯片演示文稿,然后单击File -> Import Slides...并拉入所需的幻灯片。
  3. File -> Download as -> Scalable Vector Graphics (.svg, current slide)

答案 3 :(得分:1)

这就是我这样做的方式(没有Office PIA)。

  1. 运行宏以将PPTX拆分为与演示文稿中的幻灯片一样多的PDF文件。
  2. 使用inkscape将每个PDF转换为SVG
  3. 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
    

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

    inkscape step

    Linux机顶盒的单线程:

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

答案 4 :(得分:0)

这将是相当困难的,没有直接的方法来做这件事(如果我错了请纠正我!) - 最简单的方法是打印到XPS,然后转换XAML(XPS == XAML + Zip文件)到SVG文件;这也不容易或直截了当,但XAML =&gt;之间的映射。 SVG可能距离更远。

答案 5 :(得分:0)

这不是最流畅的翻译,但请查看docx4j的pptx4j组件以呈现SVG中的大部分内容:http://dev.plutext.org/svn/docx4j/trunk/docx4j/src/pptx4j/java/org/pptx4j/samples/RenderAsSvgInHtml.java

答案 6 :(得分:0)

在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 on OSX cannot open PDF file through terminal command