2016-03-11 2 views
0

После небольшого поиска я до сих пор не получил то, что мне нужно. Я пытаюсь преобразовать различные файлы в 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)

И это все еще получает ошибку

ответ

0

После экспериментов с COM-версия ExportAsFixedFormat. Я думаю, что есть ошибка в COM-объекте. Я нашел работоспособное решение tho

docPP.SaveAs(strNewFileName, 32) 

Я не уверен, что такое совместимость с версией. У меня есть Office 2010.

+0

Для справки есть еще один вопрос, связанный с полузадачей [здесь, на SO] (http://stackoverflow.com/a/19896833/1197605), который пришел к такому же выводу. – cokeman19

Смежные вопросы