[ad_1]
我制作了一个 Windows 桌面应用程序(用 C# 编写),当用户给出 pdf 的路径并单击按钮时,我使用 AxAcroPDF 控件在表单上显示 pdf 文件。 Pdf 文件位于一个网络共享文件夹中,多个用户可以访问该文件夹。
(我使用对象 AxAcroPDFLib.AxAcroPDF 的 LoadFile() 方法)
这工作正常。 但是,当我的应用程序尝试打开的同一个 pdf 文件已使用 Adobe Reader 打开时,我的应用程序将无法打开同一个 pdf 文件。
如果我的应用程序安装的 PC 具有 Adobe reader 7,则应用程序会抛出错误消息“System.ApplicationException 加载 PDF 模板失败”,并且应用程序冻结。
如果运行 PC 的应用程序安装了 Adobe Reader X,则不会出现错误,但会永远出现加载屏幕。
但是使用我的应用程序在两台或多台电脑上同时打开相同的 pdf 效果非常好。
有人可以帮我解决这个问题吗?
解决方案1
我找不到我期望找到的正确解决方案。 但为了避免程序崩溃,我在加载 pdf 之前进行了检查。
bool PDFAvailable = axAcroPDF1.LoadFile(PDFPath.ToString());
如果布尔变量“PDFAvailable”返回 true,我将像下面一样加载 PDF。 否则会抛出正确的消息。
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
我在这找到了一个解决方法 邮政
我们可以使用控件的“src”属性,而不是 LoadFile()。
解决方案4
如果路径太长,使用 src 属性定义路径也会生成错误。
一种解决方案是将文件复制到较短的路径文件,然后使用此新路径修改 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”;
还有其他解决方案吗?
[ad_2]
コメント