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