Ejemplo n.º 1
0
        /// <summary>
        /// 合并操作
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btnCombine_Click(object sender, EventArgs e)
        {
            string path = txtCombinePath.Text.Trim();

            pdfCount        = 0;
            photoCount      = 0;
            currentpdfIndex = 0;
            getPath(path);
            level = CombineToPDF.GetDirLevel(path);
            string levelName = level == 2 ? "组级别" : "村级别";

            if (
                MessageBox.Show(@"已选择【" + levelName + "】目录\r\n操作路径【" + path + "】\r\n包含【" + pdfCount + "】个pdf文件,【" + photoCount + "】个图片文件\r\n是否合并处理为pdf?", "提示信息-操作前请做好备份", MessageBoxButtons.OKCancel,
                                MessageBoxIcon.Question) == DialogResult.OK)
            {
                PublicCode.Log("【自动合并生成PDF文件操作】操作路径【" + path + "】级别 【" + levelName + "】包含【" + pdfCount + "】个pdf文件,【" + photoCount + "】个图片文件");
                processTotalCount = pdfCount + photoCount;
                if (pdfCount == 0 && photoCount == 0)
                {
                    MessageBox.Show("未包含任何文件,当前操作终止!");
                    return;
                }

                this.backgroundWorker1.RunWorkerAsync();                    // 运行 backgroundWorker 组件

                ProcessForm form = new ProcessForm(this.backgroundWorker1); // 显示进度条窗体
                form.ShowDialog(this);
                form.Close();
            }
        }
Ejemplo n.º 2
0
        private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
        {
            BackgroundWorker worker = sender as BackgroundWorker;
            string           path   = txtCombinePath.Text.Trim();
            var dirList             = new List <string>();

            #region 处理层级结构
            if (level == 2)
            {
                var dirInfo = new DirectoryInfo(path);
                dirList.Add(dirInfo.FullName);
            }
            if (level == 3)
            {
                var dirInfo = new DirectoryInfo(path);
                var dirii   = dirInfo.GetDirectories();
                foreach (DirectoryInfo ii in dirii)
                {
                    dirList.Add(ii.FullName);
                }
            }
            #endregion

            string currentFilePath = "";

            try
            {
                foreach (var str in dirList)
                {
                    #region 发包方处理

                    string          fbfPath = Path.Combine(str, "发包方");
                    DirectoryInfo   dir     = new DirectoryInfo(fbfPath);
                    DirectoryInfo[] dirArr  = dir.GetDirectories();
                    foreach (DirectoryInfo dirItem in dirArr)
                    {
                        try
                        {
                            string dirName = dirItem.Name;
                            currentFilePath = dirItem.FullName;
                            var addFlag = CombineToPDF.CheckPdfJpg(dirItem);
                            CombineToPDF.dirPhoto2Pdf(dirItem, addFlag);         //处理图片转PDF
                            string[] fileArr = CombineToPDF.getFileArr(dirItem); //获取PDF文件

                            if (fileArr.Length == 0)
                            {
                                continue;
                            }

                            string pdfN       = dirName.Split('#')[1].Trim();
                            string newPdfName = Path.Combine(fbfPath, pdfN + ".pdf");
                            PdfUtility.MergePDF(fileArr, newPdfName);

                            int fileCount = dir.GetFiles().Length;   //获取文件夹下是否有文件,如果没有任何文件则不进行删除
                            if (ckIsDelete.Checked && fileCount > 0) //文件夹下如果没有任何文件则不进行删除
                            {
                                Directory.Delete(Path.Combine(fbfPath, dirName), true);
                            }
                            currentpdfIndex += fileArr.Length;
                        }
                        catch (Exception ex)
                        {
                            MessageBox.Show("【" + dirItem.FullName + "】路径下文件命名格式有误,请检查!");
                            throw ex;
                        }

                        int progeress = currentpdfIndex * 100 / processTotalCount;
                        worker.ReportProgress(progeress);
                        if (progeress == 100) // 如果用户取消则跳出处理数据代码
                        {
                            e.Cancel = true;
                            ShowCompletePath();
                            break;
                        }
                    }

                    #endregion

                    #region 承包方处理

                    string          cbfPath   = Path.Combine(str, "承包方");
                    DirectoryInfo   cbfDir    = new DirectoryInfo(cbfPath);
                    DirectoryInfo[] cbfDirArr = cbfDir.GetDirectories();
                    foreach (DirectoryInfo dirItem in cbfDirArr)
                    {
                        string          dirItemName = dirItem.Name;
                        DirectoryInfo[] cbfDirArr2  = dirItem.GetDirectories();
                        foreach (DirectoryInfo item in cbfDirArr2)
                        {
                            string dirName = item.Name;
                            currentFilePath = item.FullName;
                            var addFlag = CombineToPDF.CheckPdfJpg(dirItem);
                            CombineToPDF.dirPhoto2Pdf(item, addFlag); //处理图片转PDF
                            string[] fileArr = CombineToPDF.getFileArr(item);
                            if (fileArr.Length == 0)
                            {
                                continue;
                            }

                            string pdfN = dirName.Split('#')[1].Trim();
                            //pdfN = EncryptUtil.UnAesStr(pdfN, keyVal, ivVal);
                            string newPdfName = Path.Combine(cbfPath, pdfN + ".pdf");
                            PdfUtility.MergePDF(fileArr, newPdfName);

                            int fileCount2 = item.GetFiles().Length;  //获取文件夹下是否有文件,如果没有任何文件则不进行删除
                            if (ckIsDelete.Checked && fileCount2 > 0) //文件夹下如果没有任何文件则不进行删除
                            {
                                Directory.Delete(item.FullName, true);
                            }
                            currentpdfIndex += fileArr.Length;

                            int progeress = currentpdfIndex * 100 / processTotalCount;
                            worker.ReportProgress(progeress);
                            if (progeress == 100) // 如果用户取消则跳出处理数据代码
                            {
                                e.Cancel = true;
                                ShowCompletePath();
                                break;
                            }
                        }
                        int fileCount = dirItem.GetDirectories().Length; //获取文件夹下是否有文件夹,如果没有任何文件夹则进行删除
                        if (ckIsDelete.Checked && fileCount == 0)        //文件夹下如果没有任何文件则不进行删除
                        {
                            Directory.Delete(Path.Combine(cbfPath, dirItemName), true);
                        }
                    }

                    #endregion
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(currentFilePath + "文件夹下文件有误,请检查!\r\n错误信息:" + ex.Message);
                return;
            }
        }