From 7038dab1469f7c8e7cb9531a7062ddb41524904b Mon Sep 17 00:00:00 2001 From: Galina Edinakova Date: Thu, 19 Feb 2026 11:40:33 +0200 Subject: [PATCH 1/3] fix(PDF): Add live-editing config for custom font sample --- live-editing/configs/ExportPdfConfigGenerator.ts | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/live-editing/configs/ExportPdfConfigGenerator.ts b/live-editing/configs/ExportPdfConfigGenerator.ts index 11a18cb87..4d8b90066 100644 --- a/live-editing/configs/ExportPdfConfigGenerator.ts +++ b/live-editing/configs/ExportPdfConfigGenerator.ts @@ -12,6 +12,11 @@ export class ExportPdfConfigGenerator implements IConfigGenerator { appConfig: BaseAppConfig })); + configs.push(new Config({ + component: 'ExportPdfCustomFontComponent', + appConfig: BaseAppConfig + })); + return configs; } } From bca6aba7cb4ae0e4953b28477c72bd38ce30a962 Mon Sep 17 00:00:00 2001 From: Galina Edinakova Date: Thu, 19 Feb 2026 13:35:48 +0200 Subject: [PATCH 2/3] chore(*): Add font files to the live-editing config --- live-editing/configs/ExportPdfConfigGenerator.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/live-editing/configs/ExportPdfConfigGenerator.ts b/live-editing/configs/ExportPdfConfigGenerator.ts index 4d8b90066..7c38bcd1e 100644 --- a/live-editing/configs/ExportPdfConfigGenerator.ts +++ b/live-editing/configs/ExportPdfConfigGenerator.ts @@ -14,6 +14,7 @@ export class ExportPdfConfigGenerator implements IConfigGenerator { configs.push(new Config({ component: 'ExportPdfCustomFontComponent', + additionalFiles: ['/src/assets/fonts/noto-sans.json', '/src/assets/fonts/OFL.txt'], appConfig: BaseAppConfig })); From ea2280a70f9991eeb6a9a17e955731e6e83840de Mon Sep 17 00:00:00 2001 From: Galina Edinakova Date: Fri, 20 Feb 2026 12:05:17 +0200 Subject: [PATCH 3/3] fix(*): Moved fonts in to avoid assets urls transformations --- .../configs/ExportPdfConfigGenerator.ts | 2 +- .../export-pdf-custom-font.component.ts | 41 +++++-------------- .../export-pdf-custom-font}/fonts/OFL.txt | 0 .../fonts/noto-sans.json | 0 4 files changed, 12 insertions(+), 31 deletions(-) rename src/{assets => app/services/export-pdf-custom-font}/fonts/OFL.txt (100%) rename src/{assets => app/services/export-pdf-custom-font}/fonts/noto-sans.json (100%) diff --git a/live-editing/configs/ExportPdfConfigGenerator.ts b/live-editing/configs/ExportPdfConfigGenerator.ts index 7c38bcd1e..485ad86bd 100644 --- a/live-editing/configs/ExportPdfConfigGenerator.ts +++ b/live-editing/configs/ExportPdfConfigGenerator.ts @@ -14,7 +14,7 @@ export class ExportPdfConfigGenerator implements IConfigGenerator { configs.push(new Config({ component: 'ExportPdfCustomFontComponent', - additionalFiles: ['/src/assets/fonts/noto-sans.json', '/src/assets/fonts/OFL.txt'], + additionalFiles: ['/src/app/services/export-pdf-custom-font/fonts/noto-sans.json', '/src/app/services/export-pdf-custom-font/fonts/OFL.txt'], appConfig: BaseAppConfig })); diff --git a/src/app/services/export-pdf-custom-font/export-pdf-custom-font.component.ts b/src/app/services/export-pdf-custom-font/export-pdf-custom-font.component.ts index 9594144e3..79a5b0de4 100644 --- a/src/app/services/export-pdf-custom-font/export-pdf-custom-font.component.ts +++ b/src/app/services/export-pdf-custom-font/export-pdf-custom-font.component.ts @@ -1,16 +1,17 @@ -import { ChangeDetectionStrategy, Component, signal, computed, inject, viewChild, OnInit } from '@angular/core'; +import { ChangeDetectionStrategy, Component, signal, computed, inject, viewChild } from '@angular/core'; import { IgxColumnComponent, IgxPdfExporterService, IgxPdfExporterOptions } from 'igniteui-angular/grids/core'; import { IgxGridComponent } from 'igniteui-angular/grids/grid'; +import notoSansFontData from './fonts/noto-sans.json'; /** * Demonstrates PDF export with a custom Unicode font. * * The sample ships with Noto Sans (Latin/Cyrillic/Greek) loaded from - * assets/fonts/noto-sans.json. Users can also upload their own .ttf font — + * fonts/noto-sans.json. Users can also upload their own .ttf font — * for example Noto Sans CJK for Japanese/Chinese/Korean support. * * All Noto fonts are licensed under the SIL Open Font License 1.1 - * (see assets/fonts/OFL.txt). + * (see fonts/OFL.txt). */ @Component({ selector: 'app-export-pdf-custom-font', @@ -19,7 +20,7 @@ import { IgxGridComponent } from 'igniteui-angular/grids/grid'; changeDetection: ChangeDetectionStrategy.OnPush, imports: [IgxGridComponent, IgxColumnComponent] }) -export class ExportPdfCustomFontComponent implements OnInit { +export class ExportPdfCustomFontComponent { private pdfExporter = inject(IgxPdfExporterService); protected readonly grid = viewChild.required('grid'); @@ -48,32 +49,12 @@ export class ExportPdfCustomFontComponent implements OnInit { { Name: 'Ирина Петрова', City: 'Санкт-Петербург', Product: '製品 F', Amount: 2890 } ]); - public ngOnInit(): void { - this.loadBuiltInFont(); - } - - /** Loads the built-in Noto Sans font from application assets. */ - private async loadBuiltInFont(): Promise { - this.builtInFontLoading.set(true); - this.exportStatus.set('Loading built-in Noto Sans font…'); - - try { - const response = await fetch('assets/fonts/noto-sans.json'); - if (!response.ok) { - throw new Error(`HTTP ${response.status}`); - } - const fontJson: { normal: string; bold: string } = await response.json(); - - this.builtInFontData = fontJson.normal; - this.builtInBoldFontData = fontJson.bold; - this.builtInFontLoaded.set(true); - this.exportStatus.set('Noto Sans loaded — ready to export. Upload a CJK font for Japanese/Chinese/Korean support.'); - } catch (error) { - console.error('Failed to load built-in font:', error); - this.exportStatus.set('Failed to load built-in Noto Sans font.'); - } finally { - this.builtInFontLoading.set(false); - } + constructor() { + const fontJson = notoSansFontData as unknown as { normal: string; bold: string }; + this.builtInFontData = fontJson.normal; + this.builtInBoldFontData = fontJson.bold; + this.builtInFontLoaded.set(true); + this.exportStatus.set('Noto Sans loaded — ready to export. Upload a CJK font for Japanese/Chinese/Korean support.'); } /** Handles the user uploading a custom .ttf font file. */ diff --git a/src/assets/fonts/OFL.txt b/src/app/services/export-pdf-custom-font/fonts/OFL.txt similarity index 100% rename from src/assets/fonts/OFL.txt rename to src/app/services/export-pdf-custom-font/fonts/OFL.txt diff --git a/src/assets/fonts/noto-sans.json b/src/app/services/export-pdf-custom-font/fonts/noto-sans.json similarity index 100% rename from src/assets/fonts/noto-sans.json rename to src/app/services/export-pdf-custom-font/fonts/noto-sans.json