【解決方法】オブジェクト AxAcroPDFLib.AxAcroPDF の LoadFile() メソッドは、すでに開いている PDF ファイルの読み込みには使用できません

プログラミングQA


ユーザーがPDFのパスを指定してボタンをクリックしたときに、AxAcroPDFコントロールを使用してフォーム上にPDFファイルを表示するWindowsデスクトップアプリケーション(C#で)を作成しました。 PDF ファイルは、複数のユーザーがアクセスできる 1 つのネットワーク共有ファイル フォルダーに配置されます。
(オブジェクト AxAcroPDFLib.AxAcroPDF の LoadFile() メソッドを使用します)

これは正常に動作しています。 しかし、アプリケーションが開こうとしている同じ PDF ファイルが Adob​​e Reader を使用してすでに開かれている場合、アプリケーションは同じ PDF ファイルを開くことができません。

アプリケーションがインストールされている PC に Adob​​e Reader 7 が搭載されている場合、アプリケーションは「System.ApplicationException Failed Loading PDF Template」というエラー メッセージをスローし、アプリケーションがフリーズします。

また、PC で実行されているアプリケーションに Adob​​e Reader X がインストールされている場合、エラーは表示されませんが、読み込み画面が永遠に表示されます。

しかし、私のアプリケーションを使用して 2 台以上の PC で同時に同じ PDF を開くと、完璧に機能します。

誰かこの問題について助けてくれませんか?

解決策 1

期待していたような適切な解決策は見つかりませんでした。 ただし、プログラムがクラッシュするのを避けるために、PDFをロードする前にチェックを入れました。

C#
bool PDFAvailable = axAcroPDF1.LoadFile(PDFPath.ToString());

ブール変数「PDFAvailable」が true を返した場合、以下のように PDF をロードします。 それ以外の場合は、適切なメッセージがスローされます。

C#
bool PDFAvailable = axAcroPDF1.LoadFile(PDFPath.ToString());
                       
                       if (PDFAvailable == true)
                       {
                           axAcroPDF1.LoadFile(PDFPath.ToString());
                           axAcroPDF1.setShowToolbar(false); //disable pdf toolbar.
                           axAcroPDF1.Enabled = true;
                           
                       }
                       else
                       {
                           MessageBox.Show("Selected PDF Template Is Locked By Another Application.", ""Test Application"", MessageBoxButtons.OK, MessageBoxIcon.Information);
                           
                       }

解決策 2

これで回避策を見つけました 役職

LoadFile() の代わりに、コントロールの「src」プロパティを使用できます。

解決策 4

src プロパティを使用してパスを定義すると、パスが長すぎる場合にもエラーが発生する可能性があります。
解決策の 1 つは、ファイルをより短いパス ファイルにコピーし、この新しいパスで src を変更することです。

File.Copy(iRec.Path, “https://www.codeproject.com/Questions/423157/C:\temp\a.pdf”,true);
スレッド.スリープ(500);
axAcroPDF1.src = “https://www.codeproject.com/Questions/423157/C:\temp\a.pdf”;

他の解決策はありますか?

コメント

タイトルとURLをコピーしました