Files
timetracker/timetracker.Server/Services/PdfFontResolver.cs
T
MarcWieland 62e58fc9ad QoL
2026-06-26 23:17:08 +02:00

42 lines
1.2 KiB
C#

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");
}
}
}