Co-authored-by: gorbenko.pavel <gorbenko.pavel@tansu.kz> Reviewed-on: http://git.tnsu.kz/timur.gorodetskiy/request-portal/pulls/23
This commit was merged in pull request #23.
This commit is contained in:
@@ -0,0 +1,33 @@
|
||||
import { ORG_LOGOS } from './orgLogos';
|
||||
|
||||
/** Логотип для шапки документа: PNG в base64 и его размеры в пикселях (по ним считается пропорция). */
|
||||
export interface ILetterheadLogo {
|
||||
base64: string;
|
||||
width: number;
|
||||
height: number;
|
||||
}
|
||||
|
||||
/** Ширина и высота PNG из заголовка IHDR (байты 16–23). */
|
||||
export function pngSize(base64: string): { width: number; height: number } {
|
||||
const head = atob(base64.slice(0, 44));
|
||||
const read = (offset: number): number =>
|
||||
((head.charCodeAt(offset) << 24) |
|
||||
(head.charCodeAt(offset + 1) << 16) |
|
||||
(head.charCodeAt(offset + 2) << 8) |
|
||||
head.charCodeAt(offset + 3)) >>>
|
||||
0;
|
||||
return { width: read(16), height: read(20) };
|
||||
}
|
||||
|
||||
/**
|
||||
* Логотип компании — тот же, что в печатной шапке (shared/ui/OrgLetterhead). Логотипы вшиты в бандл,
|
||||
* поэтому у компании, для которой он есть, шапка в документе будет всегда. Нет логотипа у компании
|
||||
* вовсе — undefined, документ уходит без шапки, как и печатается.
|
||||
*/
|
||||
export function letterheadLogoFor(company: string, logos: Record<string, string> = ORG_LOGOS): ILetterheadLogo | undefined {
|
||||
const dataUri = logos[company];
|
||||
const prefix = 'data:image/png;base64,';
|
||||
if (!dataUri?.startsWith(prefix)) return undefined;
|
||||
const base64 = dataUri.slice(prefix.length);
|
||||
return { base64, ...pngSize(base64) };
|
||||
}
|
||||
Reference in New Issue
Block a user