using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Linq; using System.Threading.Tasks; using System.Windows.Forms; using DevExpress.XtraEditors; using System.IO; using ProjectBase.Data.Logs; namespace ProjectBase.Controls.DocViewer { /// /// PDF测试显示窗体 /// public partial class FrmPDFView : DevExpress.XtraEditors.XtraForm { /// /// 加载流数据 /// public Stream Stream { get; set; } /// /// 文件后缀名,如.pdf /// public string Extension { get; set; } /// /// 文档文件路径。如果指定了该属性,可以不用设置Stream和Extension属性。 /// public string FilePath { get; set; } /// /// 是否显示打开文件按钮 /// public bool ShowBtnOpenFile { get { return m_ShowBtnOpenFile; } set { m_ShowBtnOpenFile = value; this.btnOpenFile.Visible = this.ShowBtnOpenFile; } } //记录窗体的名称 readonly string mainFormText; private bool m_ShowBtnOpenFile = false;//是否显示打开文件按钮 public FrmPDFView() { InitializeComponent(); //记录窗体的名称,并实现文档变化事件的处理,方便显示新的文件名称 mainFormText = this.Text; pdfViewer1.DocumentChanged += new DevExpress.XtraPdfViewer.PdfDocumentChangedEventHandler(pdfViewer1_DocumentChanged); } /// /// PDF文档变化后,实现对新文件名称的显示 /// void pdfViewer1_DocumentChanged(object sender, DevExpress.XtraPdfViewer.PdfDocumentChangedEventArgs e) { string fileName = Path.GetFileName(e.DocumentFilePath); if (String.IsNullOrEmpty(fileName)) { Text = mainFormText; } else { Text = fileName + " - " + mainFormText; } } private void FrmPDFView_Load(object sender, EventArgs e) { //如果文件流不为空,首先根据Stream对象加载文档,否则根据文件路径进行加载 if (!this.DesignMode) { if (this.Stream != null) { #region MyRegion try { this.pdfViewer1.LoadDocument(this.Stream); } catch (Exception ex) { DevExpress.XtraEditors.XtraMessageBox.Show("加载PDF文件失败", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information); LogHelper.log.Error(string.Format("加载PDF文件失败,错误为{0}", ex.ToString())); } #endregion } else if (!string.IsNullOrEmpty(FilePath)) { this.pdfViewer1.LoadDocument(this.FilePath); } } } /// /// 打开PDF文件 /// private void btnOpenFile_Click(object sender, EventArgs e) { string filePath; OpenFileDialog dialog = new OpenFileDialog(); dialog.Filter = "PDF(*.pdf)|*.pdf|All File(*.*)|*.*"; dialog.Title = "PDF选择"; dialog.RestoreDirectory = true; dialog.FileName = null; if (dialog.ShowDialog() == DialogResult.OK) { filePath = dialog.FileName; } else { filePath = string.Empty; } if (!string.IsNullOrEmpty(filePath)) { this.pdfViewer1.LoadDocument(filePath); } } /// /// 另存为PDF文件 /// private void btnSaveAs_Click(object sender, EventArgs e) { string dir = System.Environment.CurrentDirectory; string filePath = null; SaveFileDialog dialog = new SaveFileDialog(); dialog.Filter = "PDF(*.pdf)|*.pdf|All File(*.*)|*.*"; dialog.Title = "保存Pdf"; dialog.FileName = ""; dialog.RestoreDirectory = true; if (!string.IsNullOrEmpty(dir)) { dialog.InitialDirectory = dir; } if (dialog.ShowDialog() == DialogResult.OK) { filePath = dialog.FileName; } if (!string.IsNullOrEmpty(filePath)) { try { this.pdfViewer1.SaveDocument(filePath); DevExpress.XtraEditors.XtraMessageBox.Show("保存PDF文件成功", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information); this.Close(); } catch (Exception ex) { DevExpress.XtraEditors.XtraMessageBox.Show("保存PDF文件失败", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information); LogHelper.log.Error(string.Format("保存PDF文件失败,错误为{0}", ex.ToString())); } } } /// /// PDF文件打印 /// private void btnPreview_Click(object sender, EventArgs e) { this.pdfViewer1.Print(); } private void btnClose_Click(object sender, EventArgs e) { this.Close(); } } }