using PdfSharp.Pdf;
using PdfSharp.Pdf.IO;
namespace Remiss.Core.Pdf;
/// <summary>
/// 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).
/// </summary>
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);
}
}