using System; using System.IO; using System.Reflection; using PdfSharp.Fonts; namespace timetracker.Server.Services { public class PdfFontResolver : IFontResolver { public byte[] GetFont(string faceName) { var assembly = Assembly.GetExecutingAssembly(); // Map faceName to Embedded Resource stream string resourceName = faceName.ToLower() switch { "opensans-bold" => "timetracker.Server.Fonts.OpenSans-Bold.ttf", _ => "timetracker.Server.Fonts.OpenSans-Regular.ttf" }; using var stream = assembly.GetManifestResourceStream(resourceName); if (stream == null) { throw new InvalidOperationException($"Could not load font resource '{resourceName}'"); } using var ms = new MemoryStream(); stream.CopyTo(ms); return ms.ToArray(); } public FontResolverInfo ResolveTypeface(string familyName, bool isBold, bool isItalic) { if (isBold) { return new FontResolverInfo("OpenSans-Bold"); } return new FontResolverInfo("OpenSans-Regular"); } } }