使用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似乎也更清晰。
我意识到这是一个老问题,但我最近尝试这样做,并找到了一个使用谷歌幻灯片工作得很好的解决方案:
- 将PowerPoint上传到Google云端硬盘,然后点击
Open in Google Slides
,或 - 创建一个新的Google幻灯片演示文稿,然后单击
File -> Import Slides...
并拉入所需的幻灯片。 File -> Download as -> Scalable Vector Graphics (.svg, current slide)
。
这就是我的做法(没有Office PIA)。
- 运行宏以将PPTX拆分为与演示文稿中的幻灯片一样多的PDF文件。
- 使用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
我必须通过 .Net 使用 MS office 2010 处理 Microsoft Office Document 映像。我该怎么做?