.net核心JSReport自定义字体

3yhwsihp  于 2022-12-01  发布在  .NET
关注(0)|答案(2)|浏览(128)

有人知道在.net核心中加载jsreport时如何告诉它自定义字体吗?
无论如何,jsrport似乎都不会加载字体,并且没有关于如何在. net中加载字体的明确文档。
程式.cs:'

AddJsReport(new LocalReporting().UseBinary(RuntimeInformation.IsOSPlatform(OSPlatform.Windows)  ?
            jsreport.Binary.JsReportBinary.GetBinary() :
            jsreport.Binary.Linux.JsReportBinary.GetBinary())
        .KillRunningJsReportProcesses()
        .AsUtility()
        .Create());

Controller.cs:

HttpContext.JsReportFeature().Recipe(Recipe.ChromePdf)
            .DebugLogsToResponse()
            .Configure((r) =>
            {
                r.Options.Base = $"http://127.0.0.1:{HttpContext.Request.Host.Port??80}";
                r.Template.Chrome = new Chrome
                {
                    MarginTop = "0mm",
                    MarginLeft = "0mm",
                    MarginBottom = "0mm",
                    MarginRight = "0mm",
                    Format = "A4",
                    WaitForNetworkIddle = true,
                };
            });

`
css:

@font-face {
    font-family: Athletics Regular;
    src: url('fonts/Athletics/Athletics-Regular.otf');
}

`

hvvq6cgz

hvvq6cgz1#

字体请求可能被CORS阻止。
"如何找到答案"
通过您的应用程序呈现报表,然后在http://localhost:5488中打开jsreport v3 profiler,您可能会看到类似以下内容

Access to the font at 'http://localhost:61338/fonts/Athletics-Regular.otf' from origin 'null' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource.

如何解决

您可以为应用中的字体等静态资源启用CORS。这是标准.net core app config的一部分。
第二个解决方案是在jsrport打印pdf文件时使用的chrome中禁用CORS检查。

Environment.SetEnvironmentVariable("chrome_launchOptions_args", "--disable-web-security");
dgiusagp

dgiusagp2#

显然,唯一的工作方式是首先创建jsreport文件夹,然后将资产添加到文件夹


然后将其添加到标头中,因为它似乎在.css文件中根本不起作用。

同样在启动时,我必须使用以下命令配置jsreport。配置(cfg =〉cfg.DoTrustUserCode().FileSystemStore())
最后,确保告诉.net将jsreport复制到输出文件夹。

<ItemGroup>
    <None Include="jsreport\**" 
          CopyToOutputDirectory="PreserveNewest"/>
</ItemGroup>

相关问题