infodocviewdoc 2.0.3 → 3.0.0
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
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# MFE Document Viewer Integration Guide
|
|
2
2
|
|
|
3
|
-
`infodocviewdoc` es una librería Angular para previsualizar documentos en microfrontends
|
|
3
|
+
`infodocviewdoc` es una librería Angular para previsualizar documentos en microfrontends.
|
|
4
4
|
|
|
5
5
|
## 1) Instalacion del paquete (ultima version)
|
|
6
6
|
|
|
@@ -15,7 +15,7 @@ Si tu MFE ya existe (con Angular y dependencias base), **solo debes agregar esta
|
|
|
15
15
|
```json
|
|
16
16
|
{
|
|
17
17
|
"dependencies": {
|
|
18
|
-
"infodocviewdoc": "
|
|
18
|
+
"infodocviewdoc": "3.0.0",
|
|
19
19
|
"@handsontable/angular": "^16.2.0",
|
|
20
20
|
"handsontable": "^16.2.0",
|
|
21
21
|
"jspdf": "^4.1.0",
|
|
@@ -50,7 +50,7 @@ Si creas un microfront desde cero, ademas de Angular/base, tu bloque de `depende
|
|
|
50
50
|
"rxjs": "~7.8.0",
|
|
51
51
|
"tslib": "2.3.0",
|
|
52
52
|
"zone.js": "~0.15.0",
|
|
53
|
-
"infodocviewdoc": "
|
|
53
|
+
"infodocviewdoc": "^3.0.0",
|
|
54
54
|
"@handsontable/angular": "^16.2.0",
|
|
55
55
|
"handsontable": "^16.2.0",
|
|
56
56
|
"jspdf": "^4.1.0",
|
|
@@ -66,19 +66,61 @@ Despues de agregarlas:
|
|
|
66
66
|
npm install
|
|
67
67
|
```
|
|
68
68
|
|
|
69
|
-
## 3) Configuracion de assets PDF viewer (host)
|
|
69
|
+
## 3) Configuracion de assets PDF viewer en `angular.json` (host)
|
|
70
70
|
|
|
71
|
-
|
|
71
|
+
Los ficheros de PDF.js (`viewer-*.mjs`, workers, `cmaps`, etc.) viven en `node_modules/ngx-extended-pdf-viewer/assets`. El host debe **copiarlos al build** para poder servirlos bajo la ruta base de la aplicacion (normalmente `/assets/`).
|
|
72
|
+
|
|
73
|
+
### Donde colocarlo
|
|
74
|
+
|
|
75
|
+
En el proyecto del MFE, dentro del **target que realmente usa `ng build` / `ng serve`** (suele llamarse `esbuild`, `build` o `application`), en `architect.<target>.options.assets` (no solo en el target `test`).
|
|
76
|
+
|
|
77
|
+
Ejemplo con el builder moderno de aplicacion (`@angular-devkit/build-angular:application`):
|
|
72
78
|
|
|
73
79
|
```json
|
|
74
|
-
{
|
|
75
|
-
"
|
|
76
|
-
|
|
77
|
-
|
|
80
|
+
"architect": {
|
|
81
|
+
"esbuild": {
|
|
82
|
+
"builder": "@angular-devkit/build-angular:application",
|
|
83
|
+
"options": {
|
|
84
|
+
"assets": [
|
|
85
|
+
{
|
|
86
|
+
"glob": "**/*",
|
|
87
|
+
"input": "public"
|
|
88
|
+
},
|
|
89
|
+
{
|
|
90
|
+
"glob": "**/*",
|
|
91
|
+
"input": "node_modules/ngx-extended-pdf-viewer/assets",
|
|
92
|
+
"output": "/assets/"
|
|
93
|
+
}
|
|
94
|
+
]
|
|
95
|
+
}
|
|
96
|
+
}
|
|
78
97
|
}
|
|
79
98
|
```
|
|
80
99
|
|
|
81
|
-
|
|
100
|
+
- Ajusta el primer bloque (`public`, `src/assets`, etc.) segun tu proyecto; lo importante es **anadir** el segundo bloque con `ngx-extended-pdf-viewer/assets`.
|
|
101
|
+
- `output: "/assets/"` hace que los ficheros queden disponibles como `https://<tu-host>/assets/viewer-*.mjs` (y el resto de recursos en el mismo prefijo).
|
|
102
|
+
|
|
103
|
+
### Si no configuras estos assets
|
|
104
|
+
|
|
105
|
+
- La libreria puede cargar los mismos recursos desde un **CDN** (jsDelivr) alineado a la version de `ngx-extended-pdf-viewer`: en muchos entornos el PDF **funcionara igual** sin copiar assets.
|
|
106
|
+
- Conviene **mantener** la entrada en `angular.json` si necesitas: **sin acceso a internet**, **CSP** que bloquea dominios externos, o **politica** de no depender de CDN.
|
|
107
|
+
|
|
108
|
+
### Si sirves los assets locales pero con otra ruta
|
|
109
|
+
|
|
110
|
+
Puedes usar el input opcional `pdfAssetsBaseUrl` en el componente (por ejemplo la URL base donde el host publica los ficheros, sin barra final o normalizada).
|
|
111
|
+
|
|
112
|
+
```html
|
|
113
|
+
<sgdea-document-viewer
|
|
114
|
+
[pdfAssetsBaseUrl]="'https://mi-dominio.com/assets'"
|
|
115
|
+
...
|
|
116
|
+
></sgdea-document-viewer>
|
|
117
|
+
```
|
|
118
|
+
|
|
119
|
+
Si no se define `pdfAssetsBaseUrl` y el host **no** sirve `/assets/` con los ficheros del viewer, se usara el **fallback CDN** interno.
|
|
120
|
+
|
|
121
|
+
### Sintoma tipico si falta todo (host sin assets y sin CDN)
|
|
122
|
+
|
|
123
|
+
Error en red **404** sobre `http(s)://<host>/assets/viewer-*.mjs` y el PDF no se renderiza aunque la descarga del archivo sea **200**.
|
|
82
124
|
|
|
83
125
|
## 4) Como importar y usar el componente
|
|
84
126
|
|
|
@@ -98,30 +140,43 @@ export class PdfPreviewModalComponent {}
|
|
|
98
140
|
|
|
99
141
|
```html
|
|
100
142
|
<sgdea-document-viewer
|
|
143
|
+
[fileBlob]="blob"
|
|
144
|
+
[fileBlobName]="fileName"
|
|
101
145
|
[url]="apiUrl"
|
|
102
|
-
[
|
|
103
|
-
[
|
|
104
|
-
[nameSpaceBucket]="''"
|
|
105
|
-
[token]="token">
|
|
146
|
+
[token]="token"
|
|
147
|
+
[pdfAssetsBaseUrl]="'https://mi-dominio.com/assets'">
|
|
106
148
|
</sgdea-document-viewer>
|
|
107
149
|
```
|
|
108
150
|
|
|
109
151
|
## 5) Inputs del componente
|
|
110
152
|
|
|
111
|
-
- `
|
|
112
|
-
- `
|
|
113
|
-
- `
|
|
114
|
-
- `
|
|
115
|
-
- `
|
|
153
|
+
- `fileBlob`: `File | Blob` del documento ya resuelto por el microfront (requerido).
|
|
154
|
+
- `fileBlobName` (opcional): nombre del archivo para inferir la extensión (p. ej. `documento.pdf`).
|
|
155
|
+
- `url` (requerido solo para Office->PDF): base URL del microservicio de conversión (ej: `https://host-backend`).
|
|
156
|
+
- `token` (requerido solo para Office->PDF): JWT para `Authorization: Bearer <token>`.
|
|
157
|
+
- `pdfAssetsBaseUrl` (opcional): URL base donde el host publica los assets de `ngx-extended-pdf-viewer` (p. ej. `https://mi-app.com/assets`).
|
|
158
|
+
|
|
159
|
+
Notas:
|
|
160
|
+
- Para PDFs/imágenes/texto/Excel el visor renderiza el `fileBlob` directamente.
|
|
161
|
+
- Para Word/PowerPoint el visor llama al microservicio de conversión y requiere `url` y `token`.
|
|
162
|
+
|
|
163
|
+
## 6) Checklist de integración (microfront)
|
|
164
|
+
|
|
165
|
+
1. **Tu microfront descarga/prepara el archivo** y le pasa el contenido al componente con `[fileBlob]`.
|
|
166
|
+
2. **Opcional pero recomendado:** pasa `[fileBlobName]` para que el visor detecte la extensión con precisión (especialmente en blobs cuyo `type` es vacío o genérico).
|
|
167
|
+
3. Si el documento es **Office (doc/docx/ppt/pptx)**, el microfront debe pasar `[url]` y `[token]` para que el visor ejecute la conversión a PDF.
|
|
168
|
+
4. Verifica en red que el visor carga `viewer-*.mjs` y workers:
|
|
169
|
+
- recomendado: copiar `node_modules/ngx-extended-pdf-viewer/assets` al build vía `angular.json` (ver sección 3).
|
|
170
|
+
- alternativa: usar fallback CDN o definir `[pdfAssetsBaseUrl]`.
|
|
116
171
|
|
|
117
|
-
##
|
|
172
|
+
## 7) Consideraciones de integracion en MFE
|
|
118
173
|
|
|
119
|
-
- El componente
|
|
174
|
+
- El componente requiere `[fileBlob]` para renderizar.
|
|
120
175
|
- En modales, usa contenedor con `height` definido y `overflow` para Excel grandes.
|
|
121
176
|
- Para obtener token en host, puedes usar `localStorage` o tu servicio de autenticacion central.
|
|
122
|
-
- Mantener contrato estable:
|
|
177
|
+
- Mantener contrato estable: forma de datos enviados al visor via inputs (`[fileBlob]`, `[fileBlobName]`, y `[url]`/`[token]` solo para Office->PDF).
|
|
123
178
|
|
|
124
|
-
##
|
|
179
|
+
## 8) Formatos soportados por el visor
|
|
125
180
|
|
|
126
181
|
- Procesamiento de texto: `.docx`, `.doc`
|
|
127
182
|
- Hojas de calculo: `.xlsx`, `.xls`
|
|
@@ -130,7 +185,7 @@ export class PdfPreviewModalComponent {}
|
|
|
130
185
|
- Texto plano: `.txt`
|
|
131
186
|
- Imagenes: `.jpg`, `.png`, `.tiff`, `.gif`
|
|
132
187
|
|
|
133
|
-
##
|
|
188
|
+
## 9) Ejemplo rapido de instalacion local (desarrollo)
|
|
134
189
|
|
|
135
190
|
Desde el repositorio de la libreria:
|
|
136
191
|
|
|
@@ -146,7 +201,7 @@ En el MFE host:
|
|
|
146
201
|
npm install "C:/ruta/a/infodocviewdoc-<version>.tgz"
|
|
147
202
|
```
|
|
148
203
|
|
|
149
|
-
##
|
|
204
|
+
## 10) Public API exportada
|
|
150
205
|
|
|
151
206
|
`public-api.ts` exporta:
|
|
152
207
|
|
|
@@ -156,5 +211,5 @@ npm install "C:/ruta/a/infodocviewdoc-<version>.tgz"
|
|
|
156
211
|
|
|
157
212
|
Si integras este paquete en otro microfront, valida primero:
|
|
158
213
|
1. dependencias del host,
|
|
159
|
-
2. assets de `ngx-extended-pdf-viewer`,
|
|
160
|
-
3. envio correcto de `
|
|
214
|
+
2. assets de `ngx-extended-pdf-viewer` en `angular.json` del target de build (recomendado) o, si no, que el entorno permita el fallback CDN / `pdfAssetsBaseUrl`,
|
|
215
|
+
3. envio correcto de `fileBlob`/`fileBlobName`; y `url`/`token` **solo** si el archivo es Office (para conversión).
|