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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用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进行一些调整才能精确地再现原始中的某些元素。

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

另一答案

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

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

另一答案

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

  1. 将PowerPoint上传到Google云端硬盘,然后点击Open in Google Slides,或
  2. 创建一个新的Google幻灯片演示文稿,然后单击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

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

inkscape步骤

Linux机箱的单线程:

for file in *.pdf; do inkscape --without-gui "--file=$file" "--export-plain-svg=$file%%.*.svg"; done
另一答案

这将是相当困难的,没有直接的方法来做这个afaik(请纠正我,如果我错了!) - 最简单的方法是打印到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 on OSX cannot open PDF file through terminal command

以上是关于使用Microsoft Office 2010 PIA将PPT转换为SVG的主要内容,如果未能解决你的问题,请参考以下文章

在命令行中执行kms命令激活Microsoft Office 2010

Microsoft office 2010激活

我必须通过 .Net 使用 MS office 2010 处理 Microsoft Office Document 映像。我该怎么做?

打开microsoft office2010后提示无法验证此产品的许可。必须使用控制面板修复office程序

资源MIcrosoft Office2010 免费

安装Microsoft Office2010前你必须了解的东西