После небольшого поиска я до сих пор не получил то, что мне нужно. Я пытаюсь преобразовать различные файлы в PDF с помощью VB.Net и ссылаться на различные компоненты MS Office, такие как Word/Excel/PowerPoint, как на COM-объекты или с помощью PIA (Office Interop Assemblies). В конце я хочу использовать метод COM, потому что он независим от версии, и это важно.Программно преобразовать презентацию Power Point в PDF в .net
Для Word и Excel я могу заставить его работать в обоих направлениях. Но для PowerPoint я столкнулся с проблемами и буду признателен за некоторые предложения.
Вот эти 2 метода
COM
Dim appPP As Object = CreateObject("PowerPoint.Application")
Dim docPP As Object = appPP.Presentations.Open(strAttachmentFileName)
'2 is Microsoft.Office.Interop.PowerPoint.PpFixedFormatType.ppFixedFormatTypePDF
docPP.ExportAsFixedFormat(strNewFileName, 2)
docPP.Close()
appPP.Quit()
Этот метод получает ошибку на линии экспорта - Несоответствие типа. (Исключение из HRESULT: 0x80020005 (DISP_E_TYPEMISMATCH))
PIA - это работает нормально
Imports Microsoft.Office.Interop
' PowerPoint requires this, to add a reference use COM - MS Office Type Library of same version as interop
Imports Microsoft.Office.Core
Dim appPP As New PowerPoint.Application
Dim docPP As PowerPoint.Presentation = appPP.Presentations.Open(strAttachmentFileName)
docPP.ExportAsFixedFormat(strNewFileName, PowerPoint.PpFixedFormatType.ppFixedFormatTypePDF)
docPP.Close()
appPP.Quit()
РЕДАКТИРОВАНИЕ
Также в COM версии я попытался полностью квалифицированная версией, включая ссылки на PIA и офис Ядро как этот
docPP.ExportAsFixedFormat (strNewFileName, PowerPoint.PpFixedFormatType.ppFixedFormatTypePDF, PowerPoint.PpFixedFormatIntent.ppFixedFormatIntentScreen, MsoTriState.msoFalse, PowerPoint.PpPrintHandoutOrder.ppPrintHandou tVerticalFirst, PowerPoint.PpPrintOutputType.ppPrintOutputSlides, MsoTriState.msoFalse, Ничего, PowerPoint.PpPrintRangeType.ppPrintAll, "", False, False, то значение False, False, False)
И это все еще получает ошибку
Для справки есть еще один вопрос, связанный с полузадачей [здесь, на SO] (http://stackoverflow.com/a/19896833/1197605), который пришел к такому же выводу. – cokeman19