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 SGDEA.
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": "latest",
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": "latest",
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
- En `angular.json` del MFE host agrega los assets de `ngx-extended-pdf-viewer`:
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
- "glob": "**/*",
76
- "input": "node_modules/ngx-extended-pdf-viewer/assets",
77
- "output": "/assets/"
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
- Sin esta configuracion puede aparecer el error 404 de `viewer-*.mjs`.
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
- [nameFile]="objectName"
103
- [nameBucket]="bucketName"
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
- - `url`: base URL del microservicio de archivos (ej: `https://host-backend`)
112
- - `nameFile`: ruta/nombre del archivo en bucket (`objectName`)
113
- - `nameBucket`: nombre del bucket (ej: `attachments`)
114
- - `nameSpaceBucket`: namespace (si aplica; puede ir vacio)
115
- - `token`: JWT para `Authorization: Bearer <token>`
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
- ## 6) Consideraciones de integracion en MFE
172
+ ## 7) Consideraciones de integracion en MFE
118
173
 
119
- - El componente prioriza `@Input()`; si no llegan valores por inputs, usa `queryParams` como fallback.
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: ruta y forma de datos enviados al visor via inputs.
177
+ - Mantener contrato estable: forma de datos enviados al visor via inputs (`[fileBlob]`, `[fileBlobName]`, y `[url]`/`[token]` solo para Office->PDF).
123
178
 
124
- ## 7) Formatos soportados por el visor
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
- ## 8) Ejemplo rapido de instalacion local (desarrollo)
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
- ## 9) Public API exportada
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 `url`, `nameFile`, `nameBucket` y `token`.
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).