2021-10-09 将多张电子发票pdf合并成一个pdf文件

最近打印电子发票时,由于公司打印机都是A4纸,打印一张发票用一张A4,太浪费了。

想到找一个合并多张发票打印在一张A4的小工具,网上找到的要么需要授权,要么到处弹广告。

作为程序员,那就自己弄一个吧。

于是实现了如下功能:

  1. 选择需要打印的多张发票pdf文件,合并成一个pdf文件。
  2. 用pdf阅读器工具打开pdf文件,打印时选择4合1打印,横版。刚好把4张发票打印到一张A4上。

主要代码:

引用dll:using Spire.Pdf;

        ///


        /// 选择文件操作
        ///

        private void SelectPdfFile()
        {
            OpenFileDialog openFileDialog = new OpenFileDialog();
            openFileDialog.Filter = "pdf文件(*.pdf)|*.pdf";
            openFileDialog.Multiselect = true;
            if(openFileDialog.ShowDialog()==DialogResult.OK)
            {
                foreach (string fileName in openFileDialog.FileNames)
                {
                    if (!this.listBox1.Items.Contains(fileName))
                    {
                        this.listBox1.Items.Add(fileName);
                    }
                }
            }
        }
        ///
        /// 拖放pdf文件进入
        ///

        private void DragEnterPdf(DragEventArgs e)
        {
            if (e.Data.GetDataPresent(DataFormats.FileDrop))
            {
                e.Effect = DragDropEffects.Copy;
            }
            else
            {
                e.Effect = DragDropEffects.None;
            } 
        }
        private void DragDropPdf(DragEventArgs e)
        {
            String[] files = e.Data.GetData(DataFormats.FileDrop, false) as String[];
            foreach (string fileName in files)
            {
                string extName = fileName.Substring(fileName.Length - 4, 4);
                if (extName.ToUpper() == ".PDF")
                {
                    if (!this.listBox1.Items.Contains(fileName))
                    {
                        this.listBox1.Items.Add(fileName);
                    }
                }
            }
        }
        ///
        /// 合并文件操作
        ///

        private void mergePdf()
        {
            try
            {
                if (this.listBox1.Items.Count > 0)
                {
                    string[] files = new string[this.listBox1.Items.Count];
                    for (int i = 0; i < this.listBox1.Items.Count; i++)
                    {
                        files[i] = this.listBox1.Items[i].ToString();
                    }
                    string outputFile = string.Format("{0}\\电子发票合并_{1}.pdf",
                        this.txtOutputPath.Text,
                        System.DateTime.Now.ToString("yyyyMMddHHmmss"));
                    PdfDocumentBase doc = PdfDocument.MergeFiles(files);
                    doc.Save(outputFile);
                    //doc.Save(outputFile, FileFormat.PDF);
                    //doc.SaveToDoc("test.doc");
                    System.Diagnostics.Process.Start(outputFile);
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show("合并操作错误:" + ex.Message, "pdf合并操作");
            }
        }

编译好的可执行文件下载

百度网盘:https://pan.baidu.com/s/1fkpS3NlPsKmmlGKQ8i0y_Q

提取码:asdc

你可能感兴趣的:(C#学习,c#)