/* ----------------------------------------------------------------- */ /// /// Merge /// /// <summary> /// ファイルを結合します。 /// </summary> /// /* ----------------------------------------------------------------- */ public void Merge(string path) { var dir = IO.Get(path).DirectoryName; var tmp = IO.Combine(dir, Guid.NewGuid().ToString("N")); try { var writer = new Cube.Pdf.Itext.DocumentWriter(); foreach (var file in Items) { if (file is PdfFile) { AddDocument(file as PdfFile, writer); } else { AddImage(file as ImageFile, writer); } } writer.Set(Metadata); writer.Save(tmp); IO.Move(tmp, path, true); } finally { IO.TryDelete(tmp); } }
/* ----------------------------------------------------------------- */ /// /// Save /// /// <summary> /// PDF ファイルを上書き保存します。 /// </summary> /// /* ----------------------------------------------------------------- */ public void Save() { var dest = Source.File.FullName; var tmp = System.IO.Path.GetTempFileName(); var items = Clips.Select(e => e.RawObject).Where(e => IO.Exists(e.Source)); using (var writer = new Cube.Pdf.Itext.DocumentWriter()) { writer.UseSmartCopy = true; writer.Set(Source.Metadata); writer.Set(Source.Encryption); writer.Add(Source.Pages); writer.Add(items); IO.TryDelete(tmp); writer.Save(tmp); } Close(); IO.Copy(tmp, dest, true); IO.TryDelete(tmp); }