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

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

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

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

于是实现了如下功能:

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

主要代码:

引用dll:using Spire.Pdf;

        /// <summary>
        /// 选择文件操作
        /// </summary>
        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);
                    }
                }
            }
        }
        /// <summary>
        /// 拖放pdf文件进入
        /// </summary>
        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);
                    }
                }
            }
        }
        /// <summary>
        /// 合并文件操作
        /// </summary>
        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

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值