LoadFile() Metode objek AxAcroPDFLib.AxAcroPDF tidak dapat digunakan untuk memuat file PDF yang sudah terbuka

pemrograman


Saya telah membuat aplikasi desktop Windows (dalam C#) di mana saya menggunakan kontrol AxAcroPDF untuk menampilkan file pdf pada formulir ketika pengguna memberikan jalur pdf dan mengklik tombol. File Pdf terletak di satu folder file bersama jaringan di mana banyak pengguna dapat mengaksesnya.
(Saya menggunakan Metode LoadFile() dari objek AxAcroPDFLib.AxAcroPDF)

Ini berfungsi dengan baik. Tetapi ketika file pdf yang sama yang coba dibuka oleh aplikasi saya sudah dibuka menggunakan Adobe Reader maka aplikasi saya tidak dapat membuka file pdf yang sama.

Jika PC yang saya instal aplikasinya memiliki Adobe reader 7 maka aplikasi menampilkan pesan kesalahan sebagai “System.ApplicationException Gagal Memuat Templat PDF” dan aplikasi terhenti.

Dan jika aplikasi yang berjalan di PC telah terinstal Adobe Reader X maka tidak akan ada kesalahan yang muncul tetapi layar pemuatan akan muncul selamanya.

Tapi membuka pdf yang sama secara bersamaan di dua atau lebih PC menggunakan aplikasi saya berfungsi dengan sempurna.

Dapatkah seseorang membantu saya mengatasi masalah ini?

Solusi 1

Saya tidak dapat menemukan solusi yang tepat seperti yang saya harapkan. Tetapi untuk menghindari program crash, saya memberi tanda centang sebelum memuat pdf.

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

Jika variabel Boolean ‘PDFAvailable’ menghasilkan nilai true, saya akan memuat PDF seperti di bawah ini. Jika tidak, pesan yang tepat akan dilempar.

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);
                           
                       }

Solusi 2

Saya menemukan solusi dalam hal ini pos

Daripada LoadFile() kita bisa menggunakan properti “src” dari kontrol.

Solusi 4

menggunakan properti src untuk menentukan jalur juga dapat menghasilkan kesalahan jika jalur terlalu panjang.
Salah satu solusinya adalah menyalin file ke file jalur yang lebih pendek dan kemudian memodifikasi src dengan jalur baru ini.

File.Copy(iRec.Path, “https://www.codeproject.com/Questions/423157/C:\temp\a.pdf”,true);
Thread.Tidur(500);
axAcroPDF1.src = “https://www.codeproject.com/Questions/423157/C:\temp\a.pdf”;

Ada solusi lain?

コメント

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