@ninepay/nfse-pdf-generator 1.0.1 → 1.0.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +168 -38
- package/dist/NfsePdfGenerator.d.ts +1 -4
- package/dist/NfsePdfGenerator.d.ts.map +1 -1
- package/dist/NfsePdfGenerator.js +1 -10
- package/dist/NfsePdfGenerator.js.map +1 -1
- package/dist/sections/header.d.ts +2 -2
- package/dist/sections/header.d.ts.map +1 -1
- package/dist/sections/header.js +34 -37
- package/dist/sections/header.js.map +1 -1
- package/dist/types.d.ts +0 -5
- package/dist/types.d.ts.map +1 -1
- package/dist/utils/font-manager.js +6 -6
- package/dist/utils/font-manager.js.map +1 -1
- package/dist/utils/image-helper.d.ts +6 -0
- package/dist/utils/image-helper.d.ts.map +1 -0
- package/dist/utils/image-helper.js +21 -0
- package/dist/utils/image-helper.js.map +1 -0
- package/package.json +1 -1
- package/assets/fonts/arial/ARIAL.TTF +0 -0
- package/assets/fonts/arial/ARIALBD 1.TTF +0 -0
- package/assets/fonts/arial/ARIALBD.TTF +0 -0
- package/assets/fonts/arial/ARIALBI 1.TTF +0 -0
- package/assets/fonts/arial/ARIALBI.TTF +0 -0
- package/assets/fonts/arial/ARIALBLACKITALIC.TTF +0 -0
- package/assets/fonts/arial/ARIALI 1.TTF +0 -0
- package/assets/fonts/arial/ARIALLGT.TTF +0 -0
- package/assets/fonts/arial/ARIALLGTITL.TTF +0 -0
- package/assets/fonts/arial/ARIALN.TTF +0 -0
- package/assets/fonts/arial/ARIALNB.TTF +0 -0
- package/assets/fonts/arial/ARIALNBI.TTF +0 -0
- package/assets/fonts/arial/ARIALNI.TTF +0 -0
- package/assets/fonts/arial/ARIBLK.TTF +0 -0
- package/assets/fonts/arial/ArialCE.ttf +0 -0
- package/assets/fonts/arial/ArialCEBoldItalic.ttf +0 -0
- package/assets/fonts/arial/ArialCEItalic.ttf +0 -0
- package/assets/fonts/arial/ArialCEMTBlack.ttf +0 -0
- package/assets/fonts/arial/ArialMdm.ttf +0 -0
- package/assets/fonts/arial/ArialMdmItl.ttf +0 -0
- package/assets/fonts/arial/arialceb.ttf +0 -0
- package/assets/logo-nfse.png +0 -0
package/README.md
CHANGED
|
@@ -18,24 +18,18 @@ async function gerarPDF() {
|
|
|
18
18
|
// Criar instância do gerador
|
|
19
19
|
const generator = new NfsePdfGenerator();
|
|
20
20
|
|
|
21
|
-
// Configurar cabeçalho (opcional)
|
|
22
|
-
generator.setHeader({
|
|
23
|
-
danfseVersionText: 'DANFSE - Documento Auxiliar da Nota Fiscal de Serviços Eletrônica',
|
|
24
|
-
titleText: 'NFS-e Nacional',
|
|
25
|
-
nfseLogoPath: './assets/logo-nfse.png' // opcional
|
|
26
|
-
});
|
|
27
|
-
|
|
28
21
|
// Configurar dados do município (opcional)
|
|
29
22
|
generator.setMunicipality({
|
|
30
23
|
name: 'Prefeitura Municipal',
|
|
31
24
|
department: 'Secretaria de Fazenda',
|
|
32
25
|
phone: '(11) 1234-5678',
|
|
33
26
|
email: 'contato@prefeitura.gov.br',
|
|
34
|
-
|
|
27
|
+
imageBase64: 'data:image/png;base64,iVBORw0KGgoAAAANS...' // opcional
|
|
35
28
|
});
|
|
36
29
|
|
|
37
|
-
// Fazer parse do XML
|
|
38
|
-
|
|
30
|
+
// Fazer parse do XML (string)
|
|
31
|
+
const xmlContent = fs.readFileSync('./nfse.xml', 'utf-8');
|
|
32
|
+
generator.parseXml(xmlContent);
|
|
39
33
|
|
|
40
34
|
// Gerar PDF
|
|
41
35
|
const pdfDoc = await generator.generate();
|
|
@@ -53,33 +47,32 @@ gerarPDF();
|
|
|
53
47
|
```typescript
|
|
54
48
|
import { NfsePdfGenerator } from '@ninepay/nfse-pdf-generator';
|
|
55
49
|
import fs from 'fs';
|
|
56
|
-
import path from 'path';
|
|
57
50
|
|
|
58
51
|
async function main() {
|
|
59
52
|
try {
|
|
53
|
+
// Ler o conteúdo XML
|
|
54
|
+
const xmlContent = fs.readFileSync('./nfse-exemplo.xml', 'utf-8');
|
|
55
|
+
|
|
56
|
+
// Converter logo do município para base64
|
|
57
|
+
const brasaoMunicipio = fs.readFileSync('./brasao-sp.png').toString('base64');
|
|
58
|
+
|
|
60
59
|
const generator = new NfsePdfGenerator(
|
|
61
60
|
'Minha Empresa', // author
|
|
62
61
|
'Sistema de NFS-e', // creator
|
|
63
62
|
'Documento Auxiliar da NFS-e' // subject
|
|
64
63
|
);
|
|
65
64
|
|
|
66
|
-
//
|
|
67
|
-
generator
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
}
|
|
73
|
-
|
|
74
|
-
name: 'Prefeitura de São Paulo',
|
|
75
|
-
department: 'Secretaria Municipal de Fazenda',
|
|
76
|
-
phone: '(11) 3113-9000',
|
|
77
|
-
email: 'atendimento@prefeitura.sp.gov.br',
|
|
78
|
-
imagePath: path.resolve(__dirname, '../assets/brasao-sp.png')
|
|
79
|
-
});
|
|
65
|
+
// Configurar dados do município (opcional)
|
|
66
|
+
generator.setMunicipality({
|
|
67
|
+
name: 'Prefeitura de São Paulo',
|
|
68
|
+
department: 'Secretaria Municipal de Fazenda',
|
|
69
|
+
phone: '(11) 3113-9000',
|
|
70
|
+
email: 'atendimento@prefeitura.sp.gov.br',
|
|
71
|
+
imageBase64: `data:image/png;base64,${brasaoMunicipio}`
|
|
72
|
+
});
|
|
80
73
|
|
|
81
|
-
// Parse do XML da NFS-e
|
|
82
|
-
generator.parseXml(
|
|
74
|
+
// Parse do conteúdo XML da NFS-e
|
|
75
|
+
generator.parseXml(xmlContent);
|
|
83
76
|
|
|
84
77
|
// Gerar PDF
|
|
85
78
|
const pdf = await generator.generate();
|
|
@@ -102,31 +95,168 @@ main();
|
|
|
102
95
|
|
|
103
96
|
### Cabeçalho (Header)
|
|
104
97
|
|
|
98
|
+
O cabeçalho da NFS-e possui valores **fixos e internos** que aparecem automaticamente em todas as notas:
|
|
99
|
+
- Logo da NFS-e Nacional
|
|
100
|
+
- Texto "DANFSE - Documento Auxiliar da Nota Fiscal de Serviços Eletrônica"
|
|
101
|
+
- Título "NFS-e Nacional"
|
|
102
|
+
|
|
103
|
+
Esses elementos não precisam (e não podem) ser configurados, garantindo padronização.
|
|
104
|
+
|
|
105
|
+
### Dados do Município
|
|
106
|
+
|
|
105
107
|
```typescript
|
|
106
|
-
generator.
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
108
|
+
generator.setMunicipality({
|
|
109
|
+
name?: string, // Nome do município/prefeitura
|
|
110
|
+
department?: string, // Departamento/secretaria
|
|
111
|
+
phone?: string, // Telefone de contato
|
|
112
|
+
email?: string, // Email de contato
|
|
113
|
+
imageBase64?: string // Brasão/logo em Data URI ou base64 puro (opcional)
|
|
114
|
+
// Formato: 'data:image/png;base64,iVBORw0KGg...' ou 'iVBORw0KGg...'
|
|
110
115
|
});
|
|
111
116
|
```
|
|
112
117
|
|
|
113
|
-
###
|
|
118
|
+
### 🖼️ Formato de Imagens
|
|
119
|
+
|
|
120
|
+
#### Logo NFS-e
|
|
121
|
+
A logo da NFS-e é **interna e fixa**, carregada automaticamente pelo gerador. Não é necessário fornecê-la.
|
|
122
|
+
|
|
123
|
+
#### Logo do Município
|
|
124
|
+
A logo do município aceita **Data URI ou base64 puro**:
|
|
114
125
|
|
|
115
126
|
```typescript
|
|
127
|
+
// Opção 1: Data URI
|
|
128
|
+
const imageBuffer = fs.readFileSync('./brasao.png');
|
|
129
|
+
const base64 = imageBuffer.toString('base64');
|
|
130
|
+
const dataUri = `data:image/png;base64,${base64}`;
|
|
131
|
+
|
|
132
|
+
generator.setMunicipality({
|
|
133
|
+
imageBase64: dataUri
|
|
134
|
+
});
|
|
135
|
+
|
|
136
|
+
// Opção 2: Base64 puro
|
|
116
137
|
generator.setMunicipality({
|
|
117
|
-
|
|
118
|
-
department: string, // Departamento/secretaria
|
|
119
|
-
phone: string, // Telefone de contato
|
|
120
|
-
email: string, // Email de contato
|
|
121
|
-
imagePath: string // Caminho para brasão/logo (opcional)
|
|
138
|
+
imageBase64: base64
|
|
122
139
|
});
|
|
123
140
|
```
|
|
124
141
|
|
|
142
|
+
Formatos suportados: `png`, `jpg`, `jpeg`
|
|
143
|
+
|
|
144
|
+
## 📁 Estrutura do XML
|
|
145
|
+
|
|
146
|
+
O gerador aceita o conteúdo XML no padrão NFS-e Nacional como string. Exemplo de estrutura mínima:
|
|
147
|
+
|
|
148
|
+
```xml
|
|
149
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
150
|
+
<NFSe>
|
|
151
|
+
<infNFSe Id="NFS12345678901234567890123456789012345678901234">
|
|
152
|
+
<nNFSe>123456</nNFSe>
|
|
153
|
+
<dhProc>2024-01-15T10:30:00-03:00</dhProc>
|
|
154
|
+
<emit>
|
|
155
|
+
<CNPJ>12345678000190</CNPJ>
|
|
156
|
+
<xNome>Empresa Prestadora LTDA</xNome>
|
|
157
|
+
<!-- mais campos do emitente -->
|
|
158
|
+
</emit>
|
|
159
|
+
<DPS>
|
|
160
|
+
<infDPS>
|
|
161
|
+
<toma>
|
|
162
|
+
<CNPJ>98765432000100</CNPJ>
|
|
163
|
+
<xNome>Cliente Tomador LTDA</xNome>
|
|
164
|
+
<!-- mais campos do tomador -->
|
|
165
|
+
</toma>
|
|
166
|
+
<serv>
|
|
167
|
+
<!-- dados do serviço -->
|
|
168
|
+
</serv>
|
|
169
|
+
<valores>
|
|
170
|
+
<!-- valores da nota -->
|
|
171
|
+
</valores>
|
|
172
|
+
</infDPS>
|
|
173
|
+
</DPS>
|
|
174
|
+
</infNFSe>
|
|
175
|
+
</NFSe>
|
|
176
|
+
```
|
|
177
|
+
|
|
178
|
+
## 🔧 API
|
|
179
|
+
|
|
180
|
+
### `new NfsePdfGenerator(author?, creator?, subject?)`
|
|
181
|
+
|
|
182
|
+
Cria uma nova instância do gerador.
|
|
183
|
+
|
|
184
|
+
|
|
185
|
+
### `setMunicipality(data: MunicipalityHeaderData): this`
|
|
186
|
+
|
|
187
|
+
Define os dados do município.
|
|
188
|
+
|
|
189
|
+
**Parâmetros:**
|
|
190
|
+
```typescript
|
|
191
|
+
{
|
|
192
|
+
name?: string;
|
|
193
|
+
department?: string;
|
|
194
|
+
phone?: string;
|
|
195
|
+
email?: string;
|
|
196
|
+
imageBase64?: string; // Data URI ou base64 puro
|
|
197
|
+
}
|
|
198
|
+
```
|
|
199
|
+
|
|
200
|
+
### `parseXml(xmlContent: string): this`
|
|
201
|
+
|
|
202
|
+
Faz o parse do conteúdo XML da NFS-e.
|
|
203
|
+
|
|
204
|
+
**Parâmetros:**
|
|
205
|
+
- `xmlContent`: String contendo o conteúdo XML da NFS-e
|
|
206
|
+
|
|
207
|
+
**Retorna:** `this` (para encadeamento)
|
|
208
|
+
|
|
209
|
+
**Lança:** Error se o XML for inválido
|
|
210
|
+
|
|
211
|
+
**Exemplo:**
|
|
212
|
+
```typescript
|
|
213
|
+
const xmlContent = fs.readFileSync('./nfse.xml', 'utf-8');
|
|
214
|
+
generator.parseXml(xmlContent);
|
|
215
|
+
```
|
|
216
|
+
|
|
217
|
+
### `async generate(): Promise<PDFKit.PDFDocument>`
|
|
218
|
+
|
|
219
|
+
Gera o documento PDF.
|
|
220
|
+
|
|
221
|
+
**Retorna:** Promise com o documento PDFKit
|
|
222
|
+
|
|
223
|
+
**Lança:** Error se `parseXml()` não foi chamado antes
|
|
224
|
+
|
|
225
|
+
**Exemplo:**
|
|
226
|
+
```typescript
|
|
227
|
+
const pdf = await generator.generate();
|
|
228
|
+
pdf.pipe(fs.createWriteStream('output.pdf'));
|
|
229
|
+
pdf.end();
|
|
230
|
+
```
|
|
231
|
+
|
|
125
232
|
## 📋 Requisitos
|
|
126
233
|
|
|
127
234
|
- Node.js >= 14
|
|
128
235
|
- TypeScript >= 4.5 (se usar TypeScript)
|
|
129
236
|
|
|
237
|
+
## 🤝 Contribuindo
|
|
238
|
+
|
|
239
|
+
Contribuições são bem-vindas! Por favor:
|
|
240
|
+
|
|
241
|
+
1. Faça um fork do projeto
|
|
242
|
+
2. Crie uma branch para sua feature (`git checkout -b feature/MinhaFeature`)
|
|
243
|
+
3. Commit suas mudanças (`git commit -m 'Adiciona MinhaFeature'`)
|
|
244
|
+
4. Push para a branch (`git push origin feature/MinhaFeature`)
|
|
245
|
+
5. Abra um Pull Request
|
|
246
|
+
|
|
130
247
|
## 📝 Licença
|
|
131
248
|
|
|
132
|
-
|
|
249
|
+
MIT
|
|
250
|
+
|
|
251
|
+
## 👤 Autor
|
|
252
|
+
|
|
253
|
+
**Arthur Fonseca**
|
|
254
|
+
- GitHub: [@arthurbfonseca27](https://github.com/arthurbfonseca27)
|
|
255
|
+
|
|
256
|
+
## 🐛 Reportar Bugs
|
|
257
|
+
|
|
258
|
+
Encontrou um bug? Por favor abra uma [issue](https://github.com/arthurbfonseca27/nfse-pdf-generator/issues).
|
|
259
|
+
|
|
260
|
+
## ⭐ Mostre seu apoio
|
|
261
|
+
|
|
262
|
+
Dê uma ⭐️ se este projeto ajudou você!
|
|
@@ -1,15 +1,12 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { MunicipalityHeaderData } from "./types";
|
|
2
2
|
export declare class NfsePdfGenerator {
|
|
3
3
|
private pdf;
|
|
4
|
-
private header;
|
|
5
4
|
private municipality;
|
|
6
5
|
private data?;
|
|
7
6
|
private font;
|
|
8
7
|
constructor(author?: string, creator?: string, subject?: string);
|
|
9
|
-
setHeader(data: HeaderData): this;
|
|
10
8
|
setMunicipality(data: MunicipalityHeaderData): this;
|
|
11
9
|
parseXml(xmlContent: string): this;
|
|
12
|
-
parseXmlString(xmlContent: string): this;
|
|
13
10
|
generate(): Promise<PDFKit.PDFDocument>;
|
|
14
11
|
}
|
|
15
12
|
//# sourceMappingURL=NfsePdfGenerator.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NfsePdfGenerator.d.ts","sourceRoot":"","sources":["../src/NfsePdfGenerator.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"NfsePdfGenerator.d.ts","sourceRoot":"","sources":["../src/NfsePdfGenerator.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,sBAAsB,EAAgB,MAAM,SAAS,CAAC;AAkB/D,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,GAAG,CAAqB;IAChC,OAAO,CAAC,YAAY,CAA8B;IAClD,OAAO,CAAC,IAAI,CAAC,CAAe;IAC5B,OAAO,CAAC,IAAI,CAAW;gBAGrB,MAAM,SAAiB,EACvB,OAAO,SAAwB,EAC/B,OAAO,SAAgC;IA2BlC,eAAe,CAAC,IAAI,EAAE,sBAAsB;IAK5C,QAAQ,CAAC,UAAU,EAAE,MAAM;IAKrB,QAAQ,IAAI,OAAO,CAAC,MAAM,CAAC,WAAW,CAAC;CAuGrD"}
|
package/dist/NfsePdfGenerator.js
CHANGED
|
@@ -23,7 +23,6 @@ const layout_constants_1 = require("./utils/layout-constants");
|
|
|
23
23
|
const font_manager_1 = require("./utils/font-manager");
|
|
24
24
|
class NfsePdfGenerator {
|
|
25
25
|
constructor(author = "NFS-e System", creator = "NFS-e PDF Generator", subject = "Documento Auxiliar da NFS-e") {
|
|
26
|
-
this.header = {};
|
|
27
26
|
this.municipality = {};
|
|
28
27
|
this.font = "Arial";
|
|
29
28
|
this.pdf = new pdfkit_1.default({
|
|
@@ -47,10 +46,6 @@ class NfsePdfGenerator {
|
|
|
47
46
|
(0, font_manager_1.registerFonts)(this.pdf);
|
|
48
47
|
this.pdf.font(this.font).fontSize(8);
|
|
49
48
|
}
|
|
50
|
-
setHeader(data) {
|
|
51
|
-
this.header = { ...this.header, ...data };
|
|
52
|
-
return this;
|
|
53
|
-
}
|
|
54
49
|
setMunicipality(data) {
|
|
55
50
|
this.municipality = { ...this.municipality, ...data };
|
|
56
51
|
return this;
|
|
@@ -59,10 +54,6 @@ class NfsePdfGenerator {
|
|
|
59
54
|
this.data = (0, xml_parser_1.parseXmlContent)(xmlContent);
|
|
60
55
|
return this;
|
|
61
56
|
}
|
|
62
|
-
parseXmlString(xmlContent) {
|
|
63
|
-
this.data = (0, xml_parser_1.parseXmlContent)(xmlContent);
|
|
64
|
-
return this;
|
|
65
|
-
}
|
|
66
57
|
async generate() {
|
|
67
58
|
if (!this.data)
|
|
68
59
|
throw new Error("Chame parseXml() antes de generate()");
|
|
@@ -78,7 +69,7 @@ class NfsePdfGenerator {
|
|
|
78
69
|
left: (0, formatters_1.mm)(layout_constants_1.LAYOUT_CONSTANTS.margin),
|
|
79
70
|
},
|
|
80
71
|
});
|
|
81
|
-
(0, header_1.renderHeader)(this.pdf, this.
|
|
72
|
+
(0, header_1.renderHeader)(this.pdf, this.municipality, layout_constants_1.LAYOUT_CONSTANTS.margin, this.font);
|
|
82
73
|
(0, drawing_utils_1.addHorizontalLine)(this.pdf, layout_constants_1.LAYOUT_CONSTANTS.pageWidthMm, layout_constants_1.LAYOUT_CONSTANTS.margin);
|
|
83
74
|
await (0, dados_nfse_1.renderDadosNfse)(this.pdf, this.data, this.font);
|
|
84
75
|
(0, drawing_utils_1.addHorizontalLine)(this.pdf, layout_constants_1.LAYOUT_CONSTANTS.pageWidthMm, layout_constants_1.LAYOUT_CONSTANTS.margin);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NfsePdfGenerator.js","sourceRoot":"","sources":["../src/NfsePdfGenerator.ts"],"names":[],"mappings":";;;;;;AAAA,oDAAiC;AAEjC,
|
|
1
|
+
{"version":3,"file":"NfsePdfGenerator.js","sourceRoot":"","sources":["../src/NfsePdfGenerator.ts"],"names":[],"mappings":";;;;;;AAAA,oDAAiC;AAEjC,mDAAqD;AACrD,mDAAwC;AACxC,yDAA8E;AAC9E,8CAAiD;AACjD,sDAAwD;AACxD,kDAAqD;AACrD,gDAAmD;AACnD,4DAA+D;AAC/D,gDAAmD;AACnD,0EAA4E;AAC5E,sEAAwE;AACxE,gDAAmD;AACnD,gEAAkE;AAClE,sFAAwF;AACxF,+DAA4D;AAC5D,uDAAqD;AAErD,MAAa,gBAAgB;IAM3B,YACE,MAAM,GAAG,cAAc,EACvB,OAAO,GAAG,qBAAqB,EAC/B,OAAO,GAAG,6BAA6B;QAPjC,iBAAY,GAA2B,EAAE,CAAC;QAE1C,SAAI,GAAG,OAAO,CAAC;QAOrB,IAAI,CAAC,GAAG,GAAG,IAAI,gBAAW,CAAC;YACzB,IAAI,EAAE;gBACJ,IAAA,eAAE,EAAC,mCAAgB,CAAC,WAAW,CAAC;gBAChC,IAAA,eAAE,EAAC,mCAAgB,CAAC,YAAY,CAAC;aAClC;YACD,MAAM,EAAE,UAAU;YAClB,aAAa,EAAE,KAAK;YACpB,OAAO,EAAE;gBACP,GAAG,EAAE,IAAA,eAAE,EAAC,mCAAgB,CAAC,MAAM,CAAC;gBAChC,KAAK,EAAE,IAAA,eAAE,EAAC,mCAAgB,CAAC,MAAM,CAAC;gBAClC,MAAM,EAAE,IAAA,eAAE,EAAC,mCAAgB,CAAC,MAAM,CAAC;gBACnC,IAAI,EAAE,IAAA,eAAE,EAAC,mCAAgB,CAAC,MAAM,CAAC;aAClC;SACF,CAAC,CAAC;QAEH,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QAC9B,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QAChC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QAEhC,gCAAgC;QAChC,IAAA,4BAAa,EAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAExB,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;IACvC,CAAC;IAEM,eAAe,CAAC,IAA4B;QACjD,IAAI,CAAC,YAAY,GAAG,EAAE,GAAG,IAAI,CAAC,YAAY,EAAE,GAAG,IAAI,EAAE,CAAC;QACtD,OAAO,IAAI,CAAC;IACd,CAAC;IAEM,QAAQ,CAAC,UAAkB;QAChC,IAAI,CAAC,IAAI,GAAG,IAAA,4BAAe,EAAC,UAAU,CAAC,CAAC;QACxC,OAAO,IAAI,CAAC;IACd,CAAC;IAEM,KAAK,CAAC,QAAQ;QACnB,IAAI,CAAC,IAAI,CAAC,IAAI;YAAE,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC,CAAC;QAExE,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC;YACf,IAAI,EAAE;gBACJ,IAAA,eAAE,EAAC,mCAAgB,CAAC,WAAW,CAAC;gBAChC,IAAA,eAAE,EAAC,mCAAgB,CAAC,YAAY,CAAC;aAClC;YACD,OAAO,EAAE;gBACP,GAAG,EAAE,IAAA,eAAE,EAAC,mCAAgB,CAAC,MAAM,CAAC;gBAChC,KAAK,EAAE,IAAA,eAAE,EAAC,mCAAgB,CAAC,MAAM,CAAC;gBAClC,MAAM,EAAE,IAAA,eAAE,EAAC,mCAAgB,CAAC,MAAM,CAAC;gBACnC,IAAI,EAAE,IAAA,eAAE,EAAC,mCAAgB,CAAC,MAAM,CAAC;aAClC;SACF,CAAC,CAAC;QAEH,IAAA,qBAAY,EACV,IAAI,CAAC,GAAG,EACR,IAAI,CAAC,YAAY,EACjB,mCAAgB,CAAC,MAAM,EACvB,IAAI,CAAC,IAAI,CACV,CAAC;QAEF,IAAA,iCAAiB,EACf,IAAI,CAAC,GAAG,EACR,mCAAgB,CAAC,WAAW,EAC5B,mCAAgB,CAAC,MAAM,CACxB,CAAC;QAEF,MAAM,IAAA,4BAAe,EAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;QACtD,IAAA,iCAAiB,EACf,IAAI,CAAC,GAAG,EACR,mCAAgB,CAAC,WAAW,EAC5B,mCAAgB,CAAC,MAAM,CACxB,CAAC;QAEF,IAAA,yBAAc,EAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;QAC/C,IAAA,iCAAiB,EACf,IAAI,CAAC,GAAG,EACR,mCAAgB,CAAC,WAAW,EAC5B,mCAAgB,CAAC,MAAM,CACxB,CAAC;QAEF,IAAA,uBAAa,EAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;QAC9C,IAAA,iCAAiB,EACf,IAAI,CAAC,GAAG,EACR,mCAAgB,CAAC,WAAW,EAC5B,mCAAgB,CAAC,MAAM,CACxB,CAAC;QAEF,IAAA,mCAAmB,EAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAC9B,IAAA,iCAAiB,EACf,IAAI,CAAC,GAAG,EACR,mCAAgB,CAAC,WAAW,EAC5B,mCAAgB,CAAC,MAAM,CACxB,CAAC;QAEF,IAAA,uBAAa,EAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;QAC9C,IAAA,iCAAiB,EACf,IAAI,CAAC,GAAG,EACR,mCAAgB,CAAC,WAAW,EAC5B,mCAAgB,CAAC,MAAM,CACxB,CAAC;QAEF,IAAA,gDAAyB,EAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;QAC1D,IAAA,iCAAiB,EACf,IAAI,CAAC,GAAG,EACR,mCAAgB,CAAC,WAAW,EAC5B,mCAAgB,CAAC,MAAM,CACxB,CAAC;QAEF,IAAA,4CAAuB,EAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;QACxD,IAAA,iCAAiB,EACf,IAAI,CAAC,GAAG,EACR,mCAAgB,CAAC,WAAW,EAC5B,mCAAgB,CAAC,MAAM,CACxB,CAAC;QAEF,IAAA,uBAAa,EAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;QAC9C,IAAA,iCAAiB,EACf,IAAI,CAAC,GAAG,EACR,mCAAgB,CAAC,WAAW,EAC5B,mCAAgB,CAAC,MAAM,CACxB,CAAC;QAEF,IAAA,sCAAoB,EAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;QAC1C,IAAA,iCAAiB,EACf,IAAI,CAAC,GAAG,EACR,mCAAgB,CAAC,WAAW,EAC5B,mCAAgB,CAAC,MAAM,CACxB,CAAC;QAEF,IAAA,4DAA+B,EAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;QAEhE,IAAA,kCAAkB,EAChB,IAAI,CAAC,GAAG,EACR,mCAAgB,CAAC,WAAW,EAC5B,mCAAgB,CAAC,YAAY,EAC7B,mCAAgB,CAAC,MAAM,CACxB,CAAC;QAEF,OAAO,IAAI,CAAC,GAAG,CAAC;IAClB,CAAC;CACF;AArJD,4CAqJC"}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import {
|
|
2
|
-
export declare function renderHeader(pdf: PDFKit.PDFDocument,
|
|
1
|
+
import { MunicipalityHeaderData } from "../types";
|
|
2
|
+
export declare function renderHeader(pdf: PDFKit.PDFDocument, municipality: MunicipalityHeaderData, margin: number, font: string): void;
|
|
3
3
|
//# sourceMappingURL=header.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"header.d.ts","sourceRoot":"","sources":["../../src/sections/header.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"header.d.ts","sourceRoot":"","sources":["../../src/sections/header.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,UAAU,CAAC;AAWlD,wBAAgB,YAAY,CAC1B,GAAG,EAAE,MAAM,CAAC,WAAW,EACvB,YAAY,EAAE,sBAAsB,EACpC,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,GACX,IAAI,CAqFN"}
|
package/dist/sections/header.js
CHANGED
|
@@ -1,53 +1,49 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
2
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
6
|
exports.renderHeader = renderHeader;
|
|
4
7
|
const formatters_1 = require("../utils/formatters");
|
|
5
|
-
|
|
8
|
+
const image_helper_1 = require("../utils/image-helper");
|
|
9
|
+
const path_1 = __importDefault(require("path"));
|
|
10
|
+
// Constantes fixas do cabeçalho NFS-e
|
|
11
|
+
const NFSE_LOGO_PATH = path_1.default.join(__dirname, "../assets/logo-nfse.png");
|
|
12
|
+
const DANFSE_VERSION_TEXT = "DANFSE - Documento Auxiliar da Nota Fiscal de Serviços Eletrônica";
|
|
13
|
+
const TITLE_TEXT = "NFS-e Nacional";
|
|
14
|
+
function renderHeader(pdf, municipality, margin, font) {
|
|
6
15
|
const startYmm = margin + 0.2;
|
|
7
16
|
const startXmm = margin + 0.8;
|
|
8
17
|
const centerXmm = 64;
|
|
9
18
|
const col4Xmm = 147;
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
height: (0, formatters_1.mm)(7.8),
|
|
15
|
-
});
|
|
16
|
-
}
|
|
17
|
-
catch (error) {
|
|
18
|
-
// Ignora se a imagem for inválida
|
|
19
|
-
}
|
|
20
|
-
}
|
|
21
|
-
if (header.danfseVersionText) {
|
|
22
|
-
pdf
|
|
23
|
-
.font("Arial-Semibold")
|
|
24
|
-
.fontSize(10)
|
|
25
|
-
.text(header.danfseVersionText, (0, formatters_1.mm)(centerXmm), (0, formatters_1.mm)(startYmm + 0.5), {
|
|
26
|
-
width: (0, formatters_1.mm)(50),
|
|
27
|
-
align: "center",
|
|
19
|
+
try {
|
|
20
|
+
pdf.image(NFSE_LOGO_PATH, (0, formatters_1.mm)(startXmm), (0, formatters_1.mm)(startYmm), {
|
|
21
|
+
width: (0, formatters_1.mm)(40),
|
|
22
|
+
height: (0, formatters_1.mm)(7.8),
|
|
28
23
|
});
|
|
29
24
|
}
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
.font("Arial-Semibold")
|
|
33
|
-
.fontSize(10)
|
|
34
|
-
.text(header.titleText, (0, formatters_1.mm)(centerXmm), (0, formatters_1.mm)(startYmm + 4), {
|
|
35
|
-
width: (0, formatters_1.mm)(50),
|
|
36
|
-
align: "center",
|
|
37
|
-
});
|
|
25
|
+
catch (error) {
|
|
26
|
+
console.warn("Erro ao carregar logo NFS-e:", error);
|
|
38
27
|
}
|
|
39
|
-
|
|
28
|
+
pdf
|
|
29
|
+
.font("Arial-Semibold")
|
|
30
|
+
.fontSize(10)
|
|
31
|
+
.text(DANFSE_VERSION_TEXT, (0, formatters_1.mm)(centerXmm), (0, formatters_1.mm)(startYmm + 0.5), {
|
|
32
|
+
width: (0, formatters_1.mm)(50),
|
|
33
|
+
align: "center",
|
|
34
|
+
});
|
|
35
|
+
pdf
|
|
36
|
+
.font("Arial-Semibold")
|
|
37
|
+
.fontSize(10)
|
|
38
|
+
.text(TITLE_TEXT, (0, formatters_1.mm)(centerXmm), (0, formatters_1.mm)(startYmm + 4), {
|
|
39
|
+
width: (0, formatters_1.mm)(50),
|
|
40
|
+
align: "center",
|
|
41
|
+
});
|
|
42
|
+
// Logo/Brasão do Município
|
|
40
43
|
if (municipality.imageBase64) {
|
|
41
|
-
const buffer = Buffer.from(municipality.imageBase64, 'base64');
|
|
42
|
-
pdf.image(buffer, (0, formatters_1.mm)(col4Xmm - 15), (0, formatters_1.mm)(startYmm), {
|
|
43
|
-
fit: [(0, formatters_1.mm)(14), (0, formatters_1.mm)(8)],
|
|
44
|
-
align: "center",
|
|
45
|
-
valign: "center",
|
|
46
|
-
});
|
|
47
|
-
}
|
|
48
|
-
else if (municipality.imageBase64) {
|
|
49
44
|
try {
|
|
50
|
-
|
|
45
|
+
const imageData = (0, image_helper_1.processImageBase64)(municipality.imageBase64);
|
|
46
|
+
pdf.image(imageData, (0, formatters_1.mm)(col4Xmm - 15), (0, formatters_1.mm)(startYmm), {
|
|
51
47
|
fit: [(0, formatters_1.mm)(14), (0, formatters_1.mm)(8)],
|
|
52
48
|
align: "center",
|
|
53
49
|
valign: "center",
|
|
@@ -55,6 +51,7 @@ function renderHeader(pdf, header, municipality, margin, font) {
|
|
|
55
51
|
}
|
|
56
52
|
catch (error) {
|
|
57
53
|
// Ignora se a imagem for inválida
|
|
54
|
+
console.warn("Erro ao processar logo do município:", error);
|
|
58
55
|
}
|
|
59
56
|
}
|
|
60
57
|
let rowYmm = startYmm;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"header.js","sourceRoot":"","sources":["../../src/sections/header.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"header.js","sourceRoot":"","sources":["../../src/sections/header.ts"],"names":[],"mappings":"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"}
|
package/dist/types.d.ts
CHANGED
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,sBAAsB,GAAG;IACnC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG;IACzB,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,cAAc,EAAE,MAAM,CAAC;IACvB,eAAe,EAAE,MAAM,CAAC;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,EAAE,MAAM,CAAC;IACvB,eAAe,EAAE,MAAM,CAAC;IACxB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,cAAc,EAAE,MAAM,CAAC;IACvB,QAAQ,EAAE;QACR,IAAI,EAAE,MAAM,CAAC;QACb,kBAAkB,EAAE,MAAM,CAAC;QAC3B,IAAI,EAAE,MAAM,CAAC;QACb,KAAK,EAAE,MAAM,CAAC;QACd,IAAI,EAAE,MAAM,CAAC;QACb,UAAU,EAAE,MAAM,CAAC;QACnB,MAAM,EAAE,MAAM,CAAC;QACf,MAAM,EAAE,MAAM,CAAC;QACf,SAAS,EAAE,MAAM,CAAC;QAClB,EAAE,EAAE,MAAM,CAAC;QACX,GAAG,EAAE,MAAM,CAAC;QACZ,sBAAsB,EAAE,MAAM,CAAC;QAC/B,0BAA0B,EAAE,MAAM,CAAC;KACpC,CAAC;IACF,OAAO,EAAE;QACP,GAAG,EAAE,MAAM,CAAC;QACZ,kBAAkB,EAAE,MAAM,CAAC;QAC3B,IAAI,EAAE,MAAM,CAAC;QACb,KAAK,EAAE,MAAM,CAAC;QACd,IAAI,EAAE,MAAM,CAAC;QACb,UAAU,EAAE,MAAM,CAAC;QACnB,MAAM,EAAE,MAAM,CAAC;QACf,WAAW,EAAE,MAAM,CAAC;QACpB,MAAM,EAAE,MAAM,CAAC;QACf,aAAa,EAAE,MAAM,CAAC;QACtB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,EAAE,CAAC,EAAE,MAAM,CAAC;QACZ,GAAG,EAAE,MAAM,CAAC;KACb,CAAC;IACF,OAAO,EAAE;QACP,UAAU,EAAE,MAAM,CAAC;QACnB,UAAU,EAAE,MAAM,CAAC;QACnB,SAAS,EAAE,MAAM,CAAC;QAClB,GAAG,EAAE,MAAM,CAAC;QACZ,QAAQ,EAAE,MAAM,CAAC;KAClB,CAAC;IACF,OAAO,EAAE;QACP,OAAO,EAAE,MAAM,CAAC;QAChB,sBAAsB,EAAE,MAAM,CAAC;QAC/B,mBAAmB,EAAE,MAAM,CAAC;QAC5B,yBAAyB,EAAE,MAAM,CAAC;QAClC,gBAAgB,EAAE,MAAM,CAAC;QACzB,KAAK,EAAE,MAAM,CAAC;QACd,IAAI,EAAE,MAAM,CAAC;QACb,EAAE,EAAE,MAAM,CAAC;QACX,IAAI,EAAE,MAAM,CAAC;QACb,GAAG,EAAE,MAAM,CAAC;QACZ,MAAM,EAAE,MAAM,CAAC;QACf,OAAO,EAAE,MAAM,CAAC;QAChB,qBAAqB,EAAE,MAAM,CAAC;QAC9B,sBAAsB,EAAE,MAAM,CAAC;QAC/B,uBAAuB,EAAE,MAAM,CAAC;QAChC,iBAAiB,EAAE,MAAM,CAAC;QAC1B,gBAAgB,EAAE,MAAM,CAAC;KAC1B,CAAC;IACF,GAAG,EAAE;QACH,MAAM,EAAE,MAAM,CAAC;QACf,KAAK,EAAE,MAAM,CAAC;QACd,WAAW,EAAE,MAAM,CAAC;QACpB,WAAW,EAAE,MAAM,CAAC;KACrB,CAAC;IACF,UAAU,EAAE;QACV,mBAAmB,EAAE,MAAM,CAAC;QAC5B,wBAAwB,EAAE,MAAM,CAAC;QACjC,aAAa,EAAE,MAAM,CAAC;QACtB,aAAa,EAAE,MAAM,CAAC;QACtB,kBAAkB,EAAE,MAAM,CAAC;QAC3B,mBAAmB,EAAE,MAAM,CAAC;QAC5B,+BAA+B,EAAE,MAAM,CAAC;QACxC,iBAAiB,EAAE,MAAM,CAAC;QAC1B,qBAAqB,EAAE,MAAM,CAAC;KAC/B,CAAC;CACH,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG;IAC7B,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACvB,CAAC;AAEF,MAAM,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC"}
|
|
@@ -8,12 +8,12 @@ exports.registerFonts = registerFonts;
|
|
|
8
8
|
const path_1 = __importDefault(require("path"));
|
|
9
9
|
exports.FONTS = {
|
|
10
10
|
arial: {
|
|
11
|
-
normal: path_1.default.resolve(__dirname, "
|
|
12
|
-
semibold: path_1.default.resolve(__dirname, "
|
|
13
|
-
bold: path_1.default.resolve(__dirname, "
|
|
14
|
-
italic: path_1.default.resolve(__dirname, "
|
|
15
|
-
semiboldItalic: path_1.default.resolve(__dirname, "
|
|
16
|
-
boldItalic: path_1.default.resolve(__dirname, "
|
|
11
|
+
normal: path_1.default.resolve(__dirname, "../assets/fonts/arial/ARIAL.TTF"),
|
|
12
|
+
semibold: path_1.default.resolve(__dirname, "../assets/fonts/arial/ArialMdm.ttf"),
|
|
13
|
+
bold: path_1.default.resolve(__dirname, "../assets/fonts/arial/ARIALBD.TTF"),
|
|
14
|
+
italic: path_1.default.resolve(__dirname, "../assets/fonts/arial/ARIALI 1.TTF"),
|
|
15
|
+
semiboldItalic: path_1.default.resolve(__dirname, "../assets/fonts/arial/ArialMdmItl.ttf"),
|
|
16
|
+
boldItalic: path_1.default.resolve(__dirname, "../assets/fonts/arial/ARIALBI.TTF"),
|
|
17
17
|
},
|
|
18
18
|
};
|
|
19
19
|
function registerFonts(pdf) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"font-manager.js","sourceRoot":"","sources":["../../src/utils/font-manager.ts"],"names":[],"mappings":";;;;;;AAaA,sCAOC;AApBD,gDAAwB;AAEX,QAAA,KAAK,GAAG;IACnB,KAAK,EAAE;QACL,MAAM,EAAE,cAAI,CAAC,OAAO,CAAC,SAAS,EAAE,
|
|
1
|
+
{"version":3,"file":"font-manager.js","sourceRoot":"","sources":["../../src/utils/font-manager.ts"],"names":[],"mappings":";;;;;;AAaA,sCAOC;AApBD,gDAAwB;AAEX,QAAA,KAAK,GAAG;IACnB,KAAK,EAAE;QACL,MAAM,EAAE,cAAI,CAAC,OAAO,CAAC,SAAS,EAAE,iCAAiC,CAAC;QAClE,QAAQ,EAAE,cAAI,CAAC,OAAO,CAAC,SAAS,EAAE,oCAAoC,CAAC;QACvE,IAAI,EAAE,cAAI,CAAC,OAAO,CAAC,SAAS,EAAE,mCAAmC,CAAC;QAClE,MAAM,EAAE,cAAI,CAAC,OAAO,CAAC,SAAS,EAAE,oCAAoC,CAAC;QACrE,cAAc,EAAE,cAAI,CAAC,OAAO,CAAC,SAAS,EAAE,uCAAuC,CAAC;QAChF,UAAU,EAAE,cAAI,CAAC,OAAO,CAAC,SAAS,EAAE,mCAAmC,CAAC;KACzE;CACO,CAAC;AAEX,SAAgB,aAAa,CAAC,GAAuB;IACnD,GAAG,CAAC,YAAY,CAAC,OAAO,EAAE,aAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IAC9C,GAAG,CAAC,YAAY,CAAC,gBAAgB,EAAE,aAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;IACzD,GAAG,CAAC,YAAY,CAAC,YAAY,EAAE,aAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACjD,GAAG,CAAC,YAAY,CAAC,cAAc,EAAE,aAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IACrD,GAAG,CAAC,YAAY,CAAC,sBAAsB,EAAE,aAAK,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;IACrE,GAAG,CAAC,YAAY,CAAC,kBAAkB,EAAE,aAAK,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;AAC/D,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"image-helper.d.ts","sourceRoot":"","sources":["../../src/utils/image-helper.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAYlE"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.processImageBase64 = processImageBase64;
|
|
4
|
+
/**
|
|
5
|
+
* Converte base64 para Buffer ou retorna o Data URI diretamente
|
|
6
|
+
* O PDFKit aceita ambos os formatos
|
|
7
|
+
*/
|
|
8
|
+
function processImageBase64(base64) {
|
|
9
|
+
// Se já está no formato Data URI, retorna direto
|
|
10
|
+
if (base64.startsWith('data:image/')) {
|
|
11
|
+
return base64;
|
|
12
|
+
}
|
|
13
|
+
// Se é base64 puro, converte para Buffer
|
|
14
|
+
try {
|
|
15
|
+
return Buffer.from(base64, 'base64');
|
|
16
|
+
}
|
|
17
|
+
catch (error) {
|
|
18
|
+
throw new Error('Formato de imagem base64 inválido');
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
//# sourceMappingURL=image-helper.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"image-helper.js","sourceRoot":"","sources":["../../src/utils/image-helper.ts"],"names":[],"mappings":";;AAIA,gDAYC;AAhBD;;;GAGG;AACH,SAAgB,kBAAkB,CAAC,MAAc;IAC/C,iDAAiD;IACjD,IAAI,MAAM,CAAC,UAAU,CAAC,aAAa,CAAC,EAAE,CAAC;QACrC,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,yCAAyC;IACzC,IAAI,CAAC;QACH,OAAO,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IACvC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,IAAI,KAAK,CAAC,mCAAmC,CAAC,CAAC;IACvD,CAAC;AACH,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ninepay/nfse-pdf-generator",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.3",
|
|
4
4
|
"description": "Gerador de PDF para NFS-e Nacional (Nota Fiscal de Serviços Eletrônica) seguindo o padrão da Nota Fiscal Nacional",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
package/assets/logo-nfse.png
DELETED
|
Binary file
|