コード例 #1
0
 internal void AddPowerpointFile(string file)
 {
     if (file.EndsWith(".ppt") || file.EndsWith(".pptx") || file.EndsWith(".jpg"))
     {
         FilesToMerge.Add(file);
     }
 }
コード例 #2
0
        protected override void DoRun()
        {
            SetStatus(TaskStatus.Validating);
            bool   hasError = false;
            string ext      = null;

            foreach (var file in FilesToMerge)
            {
                var fi = new FileInfo(file);
                if (!fi.Exists)
                {
                    hasError = true;
                    LogError($"Can't find file {file}, abort.");
                }
                if (ext == null)
                {
                    ext = fi.Extension;
                }
                else
                {
                    if (!string.Equals(ext, fi.Extension, StringComparison.OrdinalIgnoreCase))
                    {
                        hasError = true;
                        LogError("Input files have different extentions, abort.");
                    }
                }
            }
            if (hasError)
            {
                return;
            }

            SetStatus(TaskStatus.Merging);
            var listFile     = Path.GetTempFileName();
            var tempFileInfo = new FileInfo(Path.GetTempFileName());
            var concatFile   = tempFileInfo.FullName.Replace(tempFileInfo.Extension, ext);

            File.WriteAllLines(listFile, FilesToMerge.Select(x => $"file \'{x}\'").ToArray());
            var mergeArg = $"-f concat -safe 0 -i \"{listFile}\" -c copy \"{concatFile}\"";

            LogInfo($"Task {TaskName} merge with arg:{mergeArg}");
            if (_isCancelling)
            {
                return;
            }
            var exitCode = RunFfmpeg(mergeArg);

            if (exitCode != 0)
            {
                Status = TaskStatus.Failed;
                LogError($"Task {TaskName} merge failed ({exitCode}), abort.");
                return;
            }
            if (_isCancelling)
            {
                return;
            }
            RunConvert(concatFile);
        }
コード例 #3
0
        public async Task <string> MergeFiles(FilesToMerge filesToMerge)
        {
            var mergedFile = UglyToad.PdfPig.Writer.PdfMerger.Merge(filesToMerge.StarterFile, filesToMerge.FileToAdd);

            await File.WriteAllBytesAsync($"{filesToMerge.SaveLocation}\\{filesToMerge.SaveName}", mergedFile);

            var newPdfName = $"{filesToMerge.SaveLocation}\\{filesToMerge.SaveName}";

            return(newPdfName);
        }
コード例 #4
0
        internal int MovePPTDown()
        {
            var i = FilesToMerge.IndexOf(FilesToMerge_Selected);

            if (i >= 0 && i < (FilesToMerge.Count - 1))   // -1 bc. at the last position you cannot go further down
            {
                var selected = FilesToMerge_Selected;
                FilesToMerge.RemoveAt(i);
                FilesToMerge.Insert(i + 1, selected);
                i++;
            }
            return(i);
        }
コード例 #5
0
        internal int MovePPTUp()
        {
            var i = FilesToMerge.IndexOf(FilesToMerge_Selected);

            if (i > 0)
            {
                var selected = FilesToMerge_Selected;
                FilesToMerge.RemoveAt(i);
                FilesToMerge.Insert(i - 1, selected);
                i--;
            }
            return(i);
        }
コード例 #6
0
 internal void RemoveSelectedPowerpointFile()
 {
     if (String.IsNullOrEmpty(FilesToMerge_Selected))
     {
         System.Windows.MessageBox.Show("No File to remove selected");
         return;
     }
     else
     {
         if (FilesToMerge.Contains(_FilesToMerge_Selected))
         {
             FilesToMerge.Remove(FilesToMerge_Selected);
         }
     }
 }
コード例 #7
0
 protected override bool DoCanRun()
 {
     return(FilesToMerge.Any());
 }
コード例 #8
0
        public async Task <IActionResult> MergePdfFiles(FilesToMerge filesToMerge)
        {
            var mergedFile = await _mergePdf.MergeFiles(filesToMerge);

            return(Ok(mergedFile));
        }
コード例 #9
0
 internal void MergePowerPoints()
 {
     OW.MoveSlides(FilesToMerge.ToList());
 }