automation - 自动将 Microsoft Visio 绘图 (vsd) 转换为 PDF

标签 automation visio

我正在处理的一个开源项目使用 Visio 绘图作为文档,这些文档被 checkin 源代码控制。对于那些没有 Visio 的项目工作人员,我们已经将 vsd 文件转换为 PDF,以便他们仍然可以查看它们。在对文档进行更改时,将副本保存为 PDF 并不太困难,但我们希望有一种自动方式来进行这种转换,以便我们可以将其设置为 SVN 客户端中的预检入脚本。如果有人知道这样做的方法,无论是使用 Visio 的内置内容,还是使用外部脚本或命令行工具,我们都将不胜感激。

编辑:感谢下面的建议,我找到了 Visio Viewer 2010 .这对我们使用 Windows 的贡献者很有帮助。不过,我们仍然希望能够创建 PDF,因为每个主要操作系统上都有阅读器,而且我们的贡献者不会只使用 Windows。

最佳答案

我找到了这个不错的 vbs 脚本并将其改编为 visio。它可以通过 cygwin 调用(适用于所有类型的 Office 内容)

 Option Explicit

Main()

Sub Main()
  If WScript.Arguments.Count > 0 Then 
      Dim objFSO : Set objFSO = CreateObject("Scripting.FileSystemObject")
      Dim i
      For i = 0 to wscript.arguments.count - 1
          Dim strFilePath : strFilePath = WScript.Arguments.Item(i)
          Dim dirPath : dirPath = objFSO.GetParentFolderName(strFilePath)
          Dim fileBaseName : fileBaseName = objFSO.GetBaseName(strFilePath)
          'WScript.Echo strFilePath
          Dim strNewFileName : strNewFileName = dirPath & "\" & fileBaseName & ".pdf"
          'WScript.Echo strNewFileName
          Dim strFileExt : strFileExt = UCase(objFSO.GetExtensionName(strFilePath))
          Select Case strFileExt
              Case "DOC"
                  DOC2PDF strFilePath, strNewFileName
              Case "XLS"
                  XLS2PDF strFilePath, strNewFileName
              Case "PPT"
                  PPT2PDF strFilePath, strNewFileName
              Case "VSD"
                  VSD2PDF strFilePath, strNewFileName
              Case Else
                  WScript.Echo "Extension Type:  " & strFileExt
          End Select
      Next
  Else
      msgbox("Sie muessen eine Datei zum konvertieren auswählen.")
  End If
End Sub

Sub PPT2PDF(strSourceFile, strDestFile)
  Const ppWindowMinimized = 2
  Const ppWindowNormal = 1
  Const ppSaveAsPDF = 32

  Dim objPPT : Set objPPT = CreateObject("PowerPoint.Application")
  objPPT.Visible = True
  objPPT.WindowState = ppWindowMinimized
  objPPT.Presentations.Open strSourceFile
  objPPT.ActivePresentation.SaveAs strDestFile, ppSaveAsPDF 
  objPPT.Quit()
End Sub

Sub DOC2PDF(strSourceFile, strDestFile)
  Const wdExportAllDocument = 0
  Const wdExportOptimizeForPrint = 0
  Const wdExportDocumentContent = 0
  Const wdExportFormatPDF = 17
  Const wdExportCreateHeadingBookmarks = 1

  Dim objWord : Set objWord = CreateObject("Word.Application")
  Dim objDoc : Set objDoc = objWord.Documents.Open(strSourceFile,,TRUE)    
  objWord.ActiveDocument.ExportAsFixedFormat strDestFile, wdExportFormatPDF, False, _
                  wdExportOptimizeForPrint, wdExportAllDocument,,, _
                  wdExportDocumentContent, False, True, wdExportCreateHeadingBookmarks
  objWord.Quit()
End Sub

Sub XLS2PDF(strSourceFile, strDestFile)
  Const xlTypePDF = 0

  Dim objExcel : Set objExcel = CreateObject("Excel.Application")
  Dim objeDoc : Set objeDoc = objExcel.Workbooks.Open(strSourceFile,,TRUE)    
  objExcel.ActiveWorkbook.ExportAsFixedFormat xlTypePDF, strDestFile
  objExcel.ActiveWorkbook.Close(False)
  objExcel.Quit
End Sub

Sub VSD2PDF(strSourceFile, strDestFile)
  Const xlTypePDF = 1
  Const visOpenRO = 2
  Const visOpenMinimized = 16
  Const visOpenHidden = 64
  Const visOpenMacrosDisabled = 128
  Const visOpenNoWorkspace = 256

  Dim objVisio : Set objVisio = CreateObject("Visio.Application")
  Dim objeDoc : Set objeDoc = objVisio.Documents.OpenEx(strSourceFile, visOpenRO + visOpenMinimized + visOpenHidden + visOpenMacrosDisabled + visOpenNoWorkspace)    
  objeDoc.ExportAsFixedFormat xlTypePDF, strDestFile, 1, 0
  objeDoc.Close
  objVisio.Quit
End Sub

关于automation - 自动将 Microsoft Visio 绘图 (vsd) 转换为 PDF,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4523705/

相关文章:

java - 无法启动 Appium session ,错误为 : Error: Bad app:

testing - JUnit 测试索引

typescript - 如何导入 Protractor 以用于我的 Typescript 项目?

uml - 如何在Microsoft Visio 2007中的序列图中表示循环?

visio - 我无法在形状表上引用不同的 Visio 形状母版

ios - 无法使用Appium Desktop在真实设备上运行WebDriverAgent

mysql - 在 MySQL 中检查时间戳是否来自今天

svg - Visio 导入 SVG 自定义形状数据

c# - 使用 .NET 即时生成 visio 图

.net - 使用 VSTO for Visio 将图像添加到组织图表形状