Word не может сохранить документ в PDF

Я программирую плагин Microsoft Word в VB.Net, и у меня есть код, который вызывает функцию для сохранения документа в формате PDF (Office 2007).

Я использую две функции:

Public Sub SaveLandscape_CallBack(ByVal Control As Office.IRibbonControl)
    SaveEbook(True)
End Sub

А также

Public Sub SaveEbook(ByVal ForceLandscape As Boolean)
    Try
        Dim FilePath As String = Globals.ThisAddIn.Application.ActiveDocument.Path & "\" & Globals.ThisAddIn.Application.ActiveDocument.Name & ".ebook.pdf"
        Try
            Globals.ThisAddIn.Application.ActiveDocument.ExportAsFixedFormat(OutputFileName:=FilePath, ExportFormat:=Word.WdExportFormat.wdExportFormatPDF, OpenAfterExport:=False, OptimizeFor:=Word.WdExportOptimizeFor.wdExportOptimizeForPrint, Range:=Word.WdExportRange.wdExportAllDocument, Item:=Word.WdExportItem.wdExportDocumentContent, IncludeDocProps:=True, KeepIRM:=True, CreateBookmarks:=Word.WdExportCreateBookmarks.wdExportCreateHeadingBookmarks, DocStructureTags:=True, BitmapMissingFonts:=True, UseISO19005_1:=True)
        Catch ex As Exception
            MsgBox(ex.ToString)
        End Try
    Catch Ex As Exception
        MsgBox(Ex.ToString)
    End Try

Я сильно обрезал вторую, поэтому здесь есть этот неиспользуемый параметр.
Первая функция связана с кнопкой на ленте. Каждый раз, когда я запускаю его, ExportAsFixedFormat возвращает ошибку о том, что файл используется, какое бы имя я ни использовал.

Есть идеи?

Спасибо,
CFP.

EDIT: я определил, что проблема точно такая же, как http://social.msdn.microsoft.com/Forums/en-US/worddev/thread/95c5b101-0d98-49f8-a92b-7b444e61cca8/ . Любые идеи?


person Clément    schedule 15.09.2010    source источник
comment
Вы проверили, что выходной PDF-документ не открыт в программе просмотра PDF?   -  person Dirk Vollmar    schedule 16.09.2010
comment
просто хотел проверить, отвечает ли нижеприведенный ответ на ваш вопрос.   -  person Todd Main    schedule 18.02.2011
comment
Нет, не работает... Спасибо за помощь =)   -  person Clément    schedule 21.02.2011


Ответы (1)


Попробуйте поставить Globals.ThisAddIn.Application.ActiveDocument.Saved = True перед строкой Globals....

person Todd Main    schedule 16.09.2010
comment
Нет, это не работает. На самом деле полный код проверяет, сохранен ли документ перед записью в файл PDF. - person Clément; 17.09.2010
comment
@CFP - я воспроизвел ваш приведенный выше код в VBA, и он работает без проблем. Единственное, о чем я сейчас могу думать, так это о том, какой пакет обновления у вас может быть - вы используете SP2 или более раннюю версию SP или вообще не используете? - person Todd Main; 19.09.2010
comment
У меня тоже. У меня windows 7, SP нет =) Вы видели мою новую ссылку? Проблема, кажется, связана с атрибутом ISO_..., и это не происходит постоянно... - person Clément; 19.09.2010
comment
@CFP - Какой SP Office 2007? Я попробовал ваш код через VBA на Win Vista + Office 2007 (SP2), и он работал без сбоев. Я делал это как с установленным Acrobat Reader, так и без него. Это наводит меня на мысль, что у вас может не быть SP2 в Office. Просто пытаюсь определить окружающую среду, так как это может говорить нам о чем-то, что мы упускаем из виду. - person Todd Main; 19.09.2010
comment
Windows 7 + Office 2007 SP2, к сожалению. Я действительно не понимаю... Вы видели social.msdn.microsoft.com/Forums/en-US/worddev/thread/ ? (спасибо за помощь, кстати =)) - person Clément; 21.09.2010
comment
@CFP: я видел эту ветку. То же самое - проблема не может быть воспроизведена. Вот почему это заставляет меня поверить, что существует проблема с конфигурацией среды. Можете ли вы воспроизвести следующие задачи: 1) Вызов подпрограммы SaveEbook из другого места, кроме ленты (например, во время запуска вашей надстройки)?, 2) Используя VBA? , 3) На другом компьютере с той же средой?, 4) Установив ISO19005_1:=False? Просто пробую разные методы, так как не могу воспроизвести проблему на своей стороне. - person Todd Main; 21.09.2010
comment
Привет! 1) Да. 2) Да. 3) Нет, к сожалению. 4) Нет; проблема, по-видимому, конкретно связана с установкой для этого значения true. Спасибо! - person Clément; 21.09.2010
comment
Хорошо, еще одна вещь, которую нужно попробовать, а потом я не уверен, потому что не могу это воспроизвести. Давайте переместим ваш код с вызова ActiveDocument несколько раз на один раз. Используйте Dim d As Document = Globals.ThisAddIn.Application.ActiveDocument, а затем звоните, используя только d для построения FilePath и ExportAsFixedFormat. - person Todd Main; 21.09.2010