QoL
This commit is contained in:
@@ -0,0 +1,41 @@
|
||||
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");
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user