42 lines
1.2 KiB
C#
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");
|
|
}
|
|
}
|
|
}
|