我有一个pdf查看器,为了便于示例,它从列表框中显示选定的文件名。它是一个简单的表单,带有列表框、axAcroPDF和文本框,用于确认正确的文件路径。代码如下,文件被放置在Debug文件夹下的pdf文件夹中:
using System;
using System.Windows.Forms;
namespace pdf_viewer
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void listBox1_SelectedIndexChanged(object sender, EventArgs e)
{
string path = AppDomain.CurrentDomain.BaseDirectory + "pdfs\" + listBox1.SelectedItem.ToString();
textBox1.Text = path;
InitializeAdobe(path);
}
private void InitializeAdobe(string filePath)
{
axAcroPDF1.LoadFile(filePath);
axAcroPDF1.src = filePath;
axAcroPDF1.setShowToolbar(false);
axAcroPDF1.setView("Fit");
axAcroPDF1.setLayoutMode("SinglePage");
axAcroPDF1.Show();
}
}
}
一切正常,但有几个问题:
- 第一次循环遍历文件时,它会在窗口中正确显示,但如果您返回到某个条目,第二次它会在右侧显示工具栏,尽管在代码中禁用了此功能。工具栏占据了窗口的大部分。
- 当你关闭窗口时,它需要非常长的时间才能关闭,这对我来说意味着有很多家务在进行。关于为什么会发生这种情况的线索吗?
除此之外:
- 我需要两个。loadfile和。src语句在代码中,因为这两个工作在隔离,但是一个优于另一个。似乎并没有改变上述问题。这个方法是从另一个堆栈溢出问题中删除的。
PS自从最初发布以来,我曾试图在web浏览器窗口中显示,但完全相同的事情发生在工具栏面板上,显示第二次选择一个条目。代码如下:
webBrowser1.Url = new Uri(path);
在很长一段时间后重新审视了这个问题,在这里找到了答案从ActiveX中禁用adobereader工具栏
它似乎在axAcroPDF和web浏览器窗口中工作。对于axAcropdf,显示pdf而不显示工具栏的代码是(使用问题示例):
this.axAcroPDF1.src = filePath + "#toolbar=0";
this.axAcroPDF1.setView("Fit");
this.axAcroPDF1.setLayoutMode("SinglePage");
this.axAcroPDF1.Show();
浏览器窗口
InitializeAdobe(path);
webBrowser1.Url = new Uri(path + "#toolbar=0");