3

MicrosoftOneNoteドキュメントをPDFファイルに変換しようとしています。

        Microsoft.Office.Interop.OneNote.Application oneNote;
        oneNote = new Microsoft.Office.Interop.OneNote.Application();

        string noteBookXML;
        oneNote.GetHierarchy(null, HierarchyScope.hsNotebooks, out noteBookXML);

        XDocument doc = XDocument.Parse(noteBookXML);
        XNamespace ns = doc.Root.Name.Namespace;

        foreach (var noteBookNode in from node in doc.Descendants(ns + "Notebook") select node)
        {
            string id = noteBookNode.Attribute("ID").Value;
            string path = "C:\\convert.pdf";
            if (File.Exists(path))
                File.Delete(path);
            try
            {
                oneNote.Publish(id, path, PublishFormat.pfPDF, "");
            }
            catch(Exception ex)
            {
                Console.WriteLine(ex.Message);
            }
        }

上記のコードで現在publish呼び出しに到達しているので、それをステップオーバーすると、Microsoft OneNoteが機能しなくなり(一般的なウィンドウ「Xは機能を停止しました。お待ちください」)、次の例外が発生します。

{System.Runtime.InteropServices.COMException (0x800706BE): The remote procedure call failed. (Exception from HRESULT: 0x800706BE)
    at Microsoft.Office.Interop.OneNote.ApplicationClass.Publish(String bstrHierarchyID, String bstrTargetFilePath, PublishFormat pfPublishFormat, String bstrCLSIDofExporter)
    at Conversion.OneNoteConverter.run() in G:\Code\OneNoteConversion\Conversion\OneNoteConverter.cs:line 34}

誰かがこれを機能させることができましたか?私は明らかに間違ったことをしていますか?

前もって感謝します。

私がフォローしようとしているリソース:

http://msdn.microsoft.com/en-us/library/ms788684.aspx

http://social.technet.microsoft.com/Forums/en/office2010/thread/900dd92b-6e5c-40e5-86ec-f18c1a1fc050

http://www.technologyquestions.com/community/threads/api-onenote-2007-publish.117776/

4

3 に答える 3

1

.publish呼び出しを使用する場合、OneNoteを機能させるにはOneNoteを開く必要があります(そうでない場合は例外が発生します)。

呼び出しの前にOneNoteを開くと、ドキュメントを実行して.oneから.pdfに変換できます。

于 2012-06-13T14:41:54.757 に答える
0

NavigateTo()公開を呼び出す前に呼び出してみましたか?

于 2012-06-13T13:57:20.547 に答える
0

なぜループでファイルを削除/作成するのですか?

削除/作成にロックがあり、プロセスが停止していると推測されます。

それを削除して、filename1、filename2 ... filenameN(テスト実行用)に書き込むだけで、同じ問題が発生するかどうかを確認してください。そうでなければ答えがあります。

于 2012-06-13T14:29:14.763 に答える