using PdfSharp.Pdf; using PdfSharp.Pdf.IO; namespace Remiss.Core.Pdf; /// /// Sammanfogar PDF:er sida för sida i angiven ordning. Används för /// försättsblad (sida 1) + remiss (sida 2 och framåt). /// public static class PdfMerger { public static void Merge(string outputPath, params string[] inputPaths) { if (inputPaths.Length == 0) throw new ArgumentException("Inga indata-PDF:er angivna.", nameof(inputPaths)); using var output = new PdfDocument(); foreach (var path in inputPaths) { if (!File.Exists(path)) throw new FileNotFoundException($"PDF att sammanfoga saknas: {path}", path); PdfDocument input; try { input = PdfReader.Open(path, PdfDocumentOpenMode.Import); } catch (PdfReaderException ex) { throw new InvalidOperationException( $"Kunde inte läsa PDF:en (skadad eller lösenordsskyddad): {Path.GetFileName(path)}", ex); } using (input) { for (var i = 0; i < input.PageCount; i++) output.AddPage(input.Pages[i]); } } output.Save(outputPath); } }