using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Drawing.Printing; using System.IO; using System.Linq; using System.Text; using System.Windows.Forms; namespace Lskj.MyControl { public partial class FrmSelectDownload : Form { public string FileName = string.Empty; public string URL = string.Empty; public bool isBatchDownLoad = false; public FrmSelectDownload() { InitializeComponent(); } /// /// 初始加载 /// /// /// private void FrmSelectDownload_Load(object sender, EventArgs e) { try { if (!isBatchDownLoad) this.Opacity = 100D; this.labUrl.Text = URL; this.labName.Text = FileName; string FOLDER_NAME = isBatchDownLoad ? "BatchPrintFile" : "TempFolder"; this.labAddress.Text = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, FOLDER_NAME, FileName);//设置默认路径 if (isBatchDownLoad) this.btnDownload.PerformClick(); } catch (Exception ex) { } } /// /// 点击预览筛选文件位置 /// /// /// private void btnPreview_Click(object sender, EventArgs e) { try { SaveFileDialog saveFileDialog = new SaveFileDialog(); saveFileDialog.FileName = FileName; saveFileDialog.Title = "下载模板文件到"; saveFileDialog.RestoreDirectory = true; //点了保存按钮进入 if (saveFileDialog.ShowDialog() == DialogResult.OK) { string localFilePath = labAddress.Text = System.IO.Path.GetFullPath(saveFileDialog.FileName);//获得文件路径,含文件名 labName.Text = localFilePath.Substring(localFilePath.LastIndexOf("\\") + 1);//获取文件名,不带路径 } } catch (Exception ex) { } } /// /// 点击下载附件 /// /// /// private void btnDownload_Click(object sender, EventArgs e) { try { if (string.IsNullOrEmpty(labUrl.Text)) { MessageBox.Show("请填下载的地址!"); return; } if (string.IsNullOrEmpty(labName.Text)) { MessageBox.Show("请填写下载的文件名称!"); return; } if (string.IsNullOrEmpty(labAddress.Text)) { MessageBox.Show("请选择下载路径!"); return; } FrmDownload frm = new FrmDownload(labUrl.Text, labName.Text, labAddress.Text); frm.isBatchPrind = isBatchDownLoad; if (frm.ShowDialog() == DialogResult.OK) { frm.Dispose(); if (isBatchDownLoad) { PrintFile(labAddress.Text); File.Delete(labAddress.Text); } this.Close(); } } catch (Exception ex) { this.Close(); } } /// /// 直接打开下载附件 /// /// /// private void btnOpen_Click(object sender, EventArgs e) { try { if (string.IsNullOrEmpty(labUrl.Text)) { MessageBox.Show("请填下载的地址!"); return; } if (string.IsNullOrEmpty(labName.Text)) { MessageBox.Show("请填写下载的文件名称!"); return; } if (string.IsNullOrEmpty(labAddress.Text)) { MessageBox.Show("请选择下载路径!"); return; } //FrmDownload frm = new FrmDownload(labUrl.Text, labName.Text, labAddress.Text, true); //if (frm.ShowDialog() == DialogResult.OK) //{ // this.Close(); //} } catch (Exception ex) { } } /// /// 关闭下载界面 /// /// /// private void btnClose_Click(object sender, EventArgs e) { this.Close(); } private void PrintFile(string filePath) { bool isPic = false;//是否为图片 Stream fs = null; Image img = null; try { fs = new FileStream(filePath, FileMode.Open, FileAccess.Read); img = Image.FromFile(filePath); isPic = true; } catch (Exception) { isPic = false; } finally { if (fs != null) fs.Close(); if (img != null) img.Dispose(); } if (isPic) { PrintDocument docToPrint = new PrintDocument(); docToPrint.PrintPage += new System.Drawing.Printing.PrintPageEventHandler(PicToPrint_PrintPage); docToPrint.DefaultPageSettings.PrinterSettings.DefaultPageSettings.PaperSize = new PaperSize { Width = 583, Height = 827, PaperName = "A5" }; PrintDialog printDialog = new PrintDialog(); printDialog.ShowDialog(); docToPrint.Print(); } else { if (Path.GetExtension(filePath).Equals(".doc", StringComparison.CurrentCultureIgnoreCase) || Path.GetExtension(filePath).Equals(".docx", StringComparison.CurrentCultureIgnoreCase))//word文档 { Spire.Doc.Document doc = new Spire.Doc.Document(); doc.LoadFromFile(filePath); Spire.Doc.Section sec = doc.Sections[0]; sec.PageSetup.PageSize = Spire.Doc.Documents.PageSize.A5; PrintDocument printDoc = doc.PrintDocument; printDoc.Print(); } else if (Path.GetExtension(filePath).Equals(".xls", StringComparison.CurrentCultureIgnoreCase) || Path.GetExtension(filePath).Equals(".xlsx", StringComparison.CurrentCultureIgnoreCase))//excel文档 { Spire.Xls.Workbook workbook = new Spire.Xls.Workbook(); workbook.LoadFromFile(filePath); foreach (Spire.Xls.Worksheet worksheet in workbook.Worksheets) { worksheet.PageSetup.PaperSize = Spire.Xls.PaperSizeType.PaperA5; worksheet.PageSetup.FitToPagesTall = 0; worksheet.PageSetup.FitToPagesWide = 1; } PrintDocument printDoc = workbook.PrintDocument; printDoc.Print(); } else if (Path.GetExtension(filePath).Equals(".pdf", StringComparison.CurrentCultureIgnoreCase)) { Spire.Pdf.PdfDocument pdfDocument = new Spire.Pdf.PdfDocument(); pdfDocument.LoadFromFile(filePath); pdfDocument.Print(); } else if (Path.GetExtension(filePath).Equals(".txt", StringComparison.CurrentCultureIgnoreCase)) { Spire.Doc.Document doc = new Spire.Doc.Document(); doc.LoadFromFile(filePath); Spire.Doc.Section sec = doc.Sections[0]; sec.PageSetup.PageSize = Spire.Doc.Documents.PageSize.A5; PrintDocument printDoc = doc.PrintDocument; printDoc.Print(); } } } private void PicToPrint_PrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs e) { if (!string.IsNullOrEmpty(this.labAddress.Text)) { //图片抗锯齿 e.Graphics.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.AntiAlias; Stream fs = new FileStream(this.labAddress.Text, FileMode.Open, FileAccess.Read); System.Drawing.Image i = System.Drawing.Image.FromStream(fs);//转换为 IMAGE fs.Close(); Rectangle m = e.MarginBounds; if ((double)i.Width / (double)i.Height > (double)m.Width / (double)m.Height) // image is wider { m.Height = (int)((double)i.Height / (double)i.Width * (double)m.Width); } else { m.Width = (int)((double)i.Width / (double)i.Height * (double)m.Height); } e.Graphics.DrawImage(i, m); i.Dispose(); e.HasMorePages = false; } } } }