{"_id":"@bnsights/bbsf-utilities-doc","_rev":"5-7ffd012b1e919375ad1401758de87ca7","name":"@bnsights/bbsf-utilities-doc","dist-tags":{"latest":"1.2.1"},"versions":{"1.0.0":{"name":"@bnsights/bbsf-utilities-doc","version":"1.0.0","keywords":["angular","document","word","docx","document-generation","bbsf"],"_id":"@bnsights/bbsf-utilities-doc@1.0.0","maintainers":[{"name":"cherrie_yahia","email":"cherrie.yahia@bnsights.com"},{"name":"anan_ali","email":"anan.ali@bnsights.com"},{"name":"michael_louis","email":"michael_louis@bnsights.com"},{"name":"ammar.mohamed","email":"ammar.mohamed@bnsights.com"},{"name":"mohamed.ahmed","email":"mohamed.ahmed@bnsights.com"},{"name":"ahmedghanem96","email":"ahmed.ghanem@bnsights.com"},{"name":"amahmoud23","email":"ahmed.mahmoud@bnsights.com"},{"name":"ahmedsewify","email":"ahmed.sewify@bnsights.com"}],"dist":{"shasum":"f6888b051ea6d05abedf8a68b7fc23a6de2e6316","tarball":"https://registry.npmjs.org/@bnsights/bbsf-utilities-doc/-/bbsf-utilities-doc-1.0.0.tgz","fileCount":74,"integrity":"sha512-HqXdHzYzj8unW9okdFZBoLHhNJm274JUTLlvzAB4YX+x9mfKybwmiy60pRzAUF1PiM1GxIq6TDZkr9aaXSgH1w==","signatures":[{"sig":"MEUCIDAL5vhBlPQcy/ozwTBsez+IwJGysfCfkAFbyWEmhhdrAiEAwDlPH+Qs5K8yrN/Qtd2NiMXX/gqsRy01bw3oZhIcJ8g=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1012728},"module":"fesm2022/bnsights-bbsf-utilities-doc.mjs","exports":{".":{"esm":"./esm2022/bnsights-bbsf-utilities-doc.mjs","types":"./index.d.ts","default":"./fesm2022/bnsights-bbsf-utilities-doc.mjs","esm2022":"./esm2022/bnsights-bbsf-utilities-doc.mjs"},"./package.json":{"default":"./package.json"}},"gitHead":"363499ca5d32c136171ed4a09fe975089488d759","typings":"index.d.ts","_npmUser":{"name":"ahmedsewify","email":"ahmed.sewify@bnsights.com"},"_npmVersion":"10.8.2","description":"Document generation utilities for BBSF - Word, PDF, and other document formats","directories":{},"sideEffects":false,"_nodeVersion":"20.17.0","dependencies":{"jszip":"^3.10.1","tslib":"^2.3.0","color-name":"^2.0.0","image-size":"^1.0.2","mime-types":"^2.1.35","escape-html":"^1.0.3","virtual-dom":"^2.1.1","xmlbuilder2":"3.1.1","html-to-vdom":"^0.7.0","image-to-base64":"^2.2.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"peerDependencies":{"@angular/core":"^17.0.0","@angular/common":"^17.0.0"},"_npmOperationalInternal":{"tmp":"tmp/bbsf-utilities-doc_1.0.0_1761587518052_0.41781988713033247","host":"s3://npm-registry-packages-npm-production"}},"1.0.0-beta.19-1":{"name":"@bnsights/bbsf-utilities-doc","version":"1.0.0-beta.19-1","keywords":["angular","document","word","docx","document-generation","bbsf"],"_id":"@bnsights/bbsf-utilities-doc@1.0.0-beta.19-1","maintainers":[{"name":"cherrie_yahia","email":"cherrie.yahia@bnsights.com"},{"name":"anan_ali","email":"anan.ali@bnsights.com"},{"name":"michael_louis","email":"michael_louis@bnsights.com"},{"name":"ammar.mohamed","email":"ammar.mohamed@bnsights.com"},{"name":"mohamed.ahmed","email":"mohamed.ahmed@bnsights.com"},{"name":"ahmedghanem96","email":"ahmed.ghanem@bnsights.com"},{"name":"amahmoud23","email":"ahmed.mahmoud@bnsights.com"},{"name":"ahmedsewify","email":"ahmed.sewify@bnsights.com"}],"dist":{"shasum":"850301b47632a278b81f416bd81e2980a352d257","tarball":"https://registry.npmjs.org/@bnsights/bbsf-utilities-doc/-/bbsf-utilities-doc-1.0.0-beta.19-1.tgz","fileCount":39,"integrity":"sha512-4MSoVEWWTgwWun/YdZDATPTrAJqHiT3lQayB4AIE8x1kAHRDWC4z/TMPXnBU1tT+MtxVeWud26AsFWK0SAMRkw==","signatures":[{"sig":"MEQCIHM/AalNkQRRQC6ye1z/CIK7OFZD960kwUXlJJrC4nEaAiAqV4a2Yg9XKxMjaMdImn0gBQr68kQnAVmOnAAoTzDPSA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":458349},"module":"fesm2022/bnsights-bbsf-utilities-doc.mjs","exports":{".":{"types":"./index.d.ts","default":"./fesm2022/bnsights-bbsf-utilities-doc.mjs"},"./package.json":{"default":"./package.json"}},"gitHead":"9720535bb926e33e4fcebd19ea701950ffbdc5f0","typings":"index.d.ts","_npmUser":{"name":"ahmedsewify","email":"ahmed.sewify@bnsights.com"},"_npmVersion":"10.8.2","description":"Document generation utilities for BBSF - Word, PDF, and other document formats","directories":{},"sideEffects":false,"_nodeVersion":"20.17.0","dependencies":{"jszip":"^3.10.1","tslib":"^2.3.0","color-name":"^2.0.0","image-size":"^1.0.2","mime-types":"^2.1.35","escape-html":"^1.0.3","virtual-dom":"^2.1.1","xmlbuilder2":"3.1.1","html-to-vdom":"^0.7.0","image-to-base64":"^2.2.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"peerDependencies":{"@angular/core":"^19.2.14","@angular/common":"^19.2.14"},"_npmOperationalInternal":{"tmp":"tmp/bbsf-utilities-doc_1.0.0-beta.19-1_1761806698737_0.37773419556774934","host":"s3://npm-registry-packages-npm-production"}},"1.2.0":{"name":"@bnsights/bbsf-utilities-doc","version":"1.2.0","keywords":["angular","document","word","docx","document-generation","bbsf"],"_id":"@bnsights/bbsf-utilities-doc@1.2.0","maintainers":[{"name":"cherrie_yahia","email":"cherrie.yahia@bnsights.com"},{"name":"anan_ali","email":"anan.ali@bnsights.com"},{"name":"michael_louis","email":"michael_louis@bnsights.com"},{"name":"ammar.mohamed","email":"ammar.mohamed@bnsights.com"},{"name":"mohamed.ahmed","email":"mohamed.ahmed@bnsights.com"},{"name":"ahmedghanem96","email":"ahmed.ghanem@bnsights.com"},{"name":"amahmoud23","email":"ahmed.mahmoud@bnsights.com"},{"name":"ahmedsewify","email":"ahmed.sewify@bnsights.com"}],"dist":{"shasum":"ebbe0f0a055f69892f5c934e71cf3d5aa9c4a556","tarball":"https://registry.npmjs.org/@bnsights/bbsf-utilities-doc/-/bbsf-utilities-doc-1.2.0.tgz","fileCount":39,"integrity":"sha512-J7mVrVdzVE4q9mIQt+kqhkIPGIpdAB3scIAnUc92fx7zasighZGGMSQT/xh3gIR/NxIJzb3tjcT4nD4Y3LR4Xw==","signatures":[{"sig":"MEQCIHVndwnI3eH6izclAymTrgVqujXYc8/j+9z1ePDlakiGAiBSgOVknan0RuDb4PvjJ1ErVi1535Tz98mU9GNfoaTBZg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":458339},"module":"fesm2022/bnsights-bbsf-utilities-doc.mjs","exports":{".":{"types":"./index.d.ts","default":"./fesm2022/bnsights-bbsf-utilities-doc.mjs"},"./package.json":{"default":"./package.json"}},"gitHead":"6eaaab3c32d0268e6476d223222d2a35c433b127","typings":"index.d.ts","_npmUser":{"name":"ahmedsewify","email":"ahmed.sewify@bnsights.com"},"_npmVersion":"10.8.2","description":"Document generation utilities for BBSF - Word, PDF, and other document formats","directories":{},"sideEffects":false,"_nodeVersion":"20.17.0","dependencies":{"jszip":"^3.10.1","tslib":"^2.3.0","color-name":"^2.0.0","image-size":"^1.0.2","mime-types":"^2.1.35","escape-html":"^1.0.3","virtual-dom":"^2.1.1","xmlbuilder2":"3.1.1","html-to-vdom":"^0.7.0","image-to-base64":"^2.2.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"peerDependencies":{"@angular/core":"^19.2.14","@angular/common":"^19.2.14"},"_npmOperationalInternal":{"tmp":"tmp/bbsf-utilities-doc_1.2.0_1763897381501_0.4183008653592677","host":"s3://npm-registry-packages-npm-production"}},"1.2.1":{"name":"@bnsights/bbsf-utilities-doc","version":"1.2.1","keywords":["angular","document","word","docx","document-generation","bbsf"],"_id":"@bnsights/bbsf-utilities-doc@1.2.1","maintainers":[{"name":"cherrie_yahia","email":"cherrie.yahia@bnsights.com"},{"name":"anan_ali","email":"anan.ali@bnsights.com"},{"name":"michael_louis","email":"michael_louis@bnsights.com"},{"name":"ammar.mohamed","email":"ammar.mohamed@bnsights.com"},{"name":"mohamed.ahmed","email":"mohamed.ahmed@bnsights.com"},{"name":"ahmedghanem96","email":"ahmed.ghanem@bnsights.com"},{"name":"amahmoud23","email":"ahmed.mahmoud@bnsights.com"},{"name":"ahmedsewify","email":"ahmed.sewify@bnsights.com"}],"dist":{"shasum":"275a6682d76f9bf7a512618ac077f95e2fff3c79","tarball":"https://registry.npmjs.org/@bnsights/bbsf-utilities-doc/-/bbsf-utilities-doc-1.2.1.tgz","fileCount":39,"integrity":"sha512-r+fScPdFJ6VoCBYtmdBn2gU6aJeM6Q+ME1WEXEAfge/UjIlJ7T7WDqIJSx017r8R8nXZhJnbcnqxrnjL6kG/hA==","signatures":[{"sig":"MEUCIQCsXLD2kW7fU2q8i/uSE7Nj9M131ud6gC4j7wJCo0KtwAIgWcVRvEzPGx/4If1Ds3ypYkVGe79wWlKZ8h+eGK+ePHA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":458330},"module":"fesm2022/bnsights-bbsf-utilities-doc.mjs","exports":{".":{"types":"./index.d.ts","default":"./fesm2022/bnsights-bbsf-utilities-doc.mjs"},"./package.json":{"default":"./package.json"}},"gitHead":"b50855d172983899ee9a48ae1241e2f517e91104","typings":"index.d.ts","_npmUser":{"name":"ahmedsewify","email":"ahmed.sewify@bnsights.com"},"_npmVersion":"10.8.2","description":"Document generation utilities for BBSF - Word, PDF, and other document formats","directories":{},"sideEffects":false,"_nodeVersion":"20.17.0","dependencies":{"jszip":"3.10.1","tslib":"2.3.0","color-name":"2.0.0","image-size":"1.0.2","mime-types":"2.1.35","escape-html":"1.0.3","virtual-dom":"2.1.1","xmlbuilder2":"3.1.1","html-to-vdom":"0.7.0","image-to-base64":"2.2.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"peerDependencies":{"@angular/core":"^19.2.14","@angular/common":"^19.2.14"},"_npmOperationalInternal":{"tmp":"tmp/bbsf-utilities-doc_1.2.1_1764450566331_0.4491392467118447","host":"s3://npm-registry-packages-npm-production"}}},"time":{"created":"2025-10-27T17:51:57.958Z","modified":"2026-07-05T10:08:27.796Z","1.0.0":"2025-10-27T17:51:58.284Z","1.0.0-beta.19-1":"2025-10-30T06:44:58.928Z","1.2.0":"2025-11-23T11:29:41.752Z","1.2.1":"2025-11-29T21:09:26.521Z"},"keywords":["angular","document","word","docx","document-generation","bbsf"],"description":"Document generation utilities for BBSF - Word, PDF, and other document formats","maintainers":[{"email":"cherrie.yahia@bnsights.com","name":"cherrie_yahia"},{"email":"anan.ali@bnsights.com","name":"anan_ali"},{"email":"michael_louis@bnsights.com","name":"michael_louis"},{"email":"ammar.mohamed@bnsights.com","name":"ammar.mohamed"},{"email":"mohamed.ahmed@bnsights.com","name":"mohamed.ahmed"},{"email":"ahmed.mahmoud@bnsights.com","name":"amahmoud23"},{"email":"ahmed.sewify@bnsights.com","name":"ahmedsewify"}],"readme":"# @bnsights/bbsf-utilities-doc\r\n\r\nDocument generation utilities for BBSF applications. Generate Word (.docx) documents from HTML content.\r\n\r\n## 📦 Installation\r\n\r\n```bash\r\nnpm install @bnsights/bbsf-utilities-doc\r\n```\r\n\r\n## 🚀 Quick Start\r\n\r\n```typescript\r\nimport { WordDocumentService, WordDocumentModel } from '@bnsights/bbsf-utilities-doc';\r\n\r\nexport class MyComponent {\r\n  constructor(private wordService: WordDocumentService) {}\r\n\r\n  async generateDocument() {\r\n    const model = new WordDocumentModel();\r\n    model.body = '<h1>Hello World</h1><p>Generated from HTML!</p>';\r\n    model.header = 'My Document Header';\r\n    model.footer = 'Page Footer';\r\n    \r\n    model.options.pageWidth = 8.5;\r\n    model.options.pageHeight = 11;\r\n    model.options.isLandscape = false;\r\n    model.options.showPaging = true;\r\n    model.options.top = 0.5;\r\n    model.options.bottom = 0.5;\r\n    model.options.left = 0.75;\r\n    model.options.right = 0.75;\r\n\r\n    const buffer = await this.wordService.generateWordByteFile(model);\r\n    \r\n    // Save as file\r\n    const blob = new Blob([buffer], { \r\n      type: 'application/vnd.openxmlformats-officedocument.wordprocessingml.document' \r\n    });\r\n    const url = window.URL.createObjectURL(blob);\r\n    const a = document.createElement('a');\r\n    a.href = url;\r\n    a.download = 'document.docx';\r\n    a.click();\r\n  }\r\n}\r\n```\r\n\r\n## 📚 Features\r\n\r\n### Supported HTML Elements\r\n- ✅ Headings (h1-h6)\r\n- ✅ Paragraphs\r\n- ✅ Tables (with styling)\r\n- ✅ Lists (ordered & unordered)\r\n- ✅ Images (base64 or URL)\r\n- ✅ Text formatting (bold, italic, underline)\r\n- ✅ Colors & fonts\r\n- ✅ Hyperlinks\r\n\r\n### Document Options\r\n- Page size (custom width/height)\r\n- Orientation (portrait/landscape)\r\n- Margins (top, bottom, left, right)\r\n- Headers & footers\r\n- Page numbering\r\n- Table row break prevention\r\n\r\n## 🎨 API Reference\r\n\r\n### WordDocumentService\r\n\r\n#### `generateWordByteFile(model: WordDocumentModel): Promise<ArrayBuffer>`\r\n\r\nGenerates a .docx file from the provided model.\r\n\r\n**Returns**: `Promise<ArrayBuffer>` - The document as a byte array\r\n\r\n### WordDocumentModel\r\n\r\n| Property | Type | Description |\r\n|----------|------|-------------|\r\n| `body` | string | HTML content for document body |\r\n| `header` | string | HTML content for header |\r\n| `footer` | string | HTML content for footer |\r\n| `options` | DocumentOptionsModel | Page and formatting options |\r\n\r\n### DocumentOptionsModel\r\n\r\n| Property | Type | Default | Description |\r\n|----------|------|---------|-------------|\r\n| `pageWidth` | number | 8.5 | Page width in inches |\r\n| `pageHeight` | number | 11 | Page height in inches |\r\n| `top` | number | 1 | Top margin in inches |\r\n| `bottom` | number | 1 | Bottom margin in inches |\r\n| `left` | number | 1 | Left margin in inches |\r\n| `right` | number | 1 | Right margin in inches |\r\n| `isLandscape` | boolean | false | Landscape orientation |\r\n| `showPaging` | boolean | true | Show page numbers |\r\n\r\n## 📖 Examples\r\n\r\n### Basic Document\r\n\r\n```typescript\r\nconst model = new WordDocumentModel();\r\nmodel.body = '<h1>Title</h1><p>Content here</p>';\r\nconst buffer = await this.wordService.generateWordByteFile(model);\r\n```\r\n\r\n### Table Example\r\n\r\n```typescript\r\nmodel.body = `\r\n  <table border=\"1\">\r\n    <thead>\r\n      <tr>\r\n        <th>Name</th>\r\n        <th>Value</th>\r\n      </tr>\r\n    </thead>\r\n    <tbody>\r\n      <tr>\r\n        <td>Item 1</td>\r\n        <td>100</td>\r\n      </tr>\r\n      <tr>\r\n        <td>Item 2</td>\r\n        <td>200</td>\r\n      </tr>\r\n    </tbody>\r\n  </table>\r\n`;\r\n```\r\n\r\n### Styled Content\r\n\r\n```typescript\r\nmodel.body = `\r\n  <h1 style=\"color: blue;\">Blue Heading</h1>\r\n  <p style=\"font-size: 16px; font-family: Arial;\">\r\n    This is <strong>bold</strong> and this is <em>italic</em>.\r\n  </p>\r\n  <p style=\"text-align: center;\">Centered text</p>\r\n`;\r\n```\r\n\r\n### Image Embedding\r\n\r\n```typescript\r\nmodel.body = `\r\n  <img src=\"data:image/png;base64,iVBORw0KG...\" alt=\"Logo\" />\r\n  <img src=\"https://example.com/image.jpg\" alt=\"Online Image\" />\r\n`;\r\n```\r\n\r\n### Custom Page Size (A4)\r\n\r\n```typescript\r\nmodel.options.pageWidth = 8.27;  // 210mm = 8.27 inches\r\nmodel.options.pageHeight = 11.69; // 297mm = 11.69 inches\r\nmodel.options.top = 0.79;         // 20mm = 0.79 inches\r\nmodel.options.bottom = 0.79;\r\nmodel.options.left = 0.79;\r\nmodel.options.right = 0.79;\r\n```\r\n\r\n### Landscape Document\r\n\r\n```typescript\r\nmodel.options.isLandscape = true;\r\nmodel.options.pageWidth = 11;\r\nmodel.options.pageHeight = 8.5;\r\n```\r\n\r\n## 🔧 Dependencies\r\n\r\nThis package includes all necessary dependencies:\r\n- `xmlbuilder2` - XML generation\r\n- `jszip` - ZIP file creation\r\n- `html-to-vdom` - HTML parsing\r\n- `virtual-dom` - Virtual DOM handling\r\n- `image-size` - Image dimension detection\r\n- `image-to-base64` - Image encoding\r\n- `color-name` - Color conversion\r\n- `escape-html` - HTML escaping\r\n- `mime-types` - MIME type detection\r\n\r\n## 📦 Bundle Size\r\n\r\n- **Package size**: ~8 MB (uncompressed)\r\n- **Minified**: ~2 MB\r\n- **Gzipped**: ~500 KB\r\n\r\n**Note**: This is why document generation is now a separate package - apps that don't need it won't bundle these dependencies.\r\n\r\n## 🔄 Migration from bbsf-utilities\r\n\r\nIf you were using `WordDocumentService` from `@bnsights/bbsf-utilities`, see [MIGRATION_GUIDE.md](./MIGRATION_GUIDE.md) for easy migration steps.\r\n\r\n**TL;DR**:\r\n```typescript\r\n// Before\r\nimport { WordDocumentService } from '@bnsights/bbsf-utilities';\r\n\r\n// After\r\nimport { WordDocumentService } from '@bnsights/bbsf-utilities-doc';\r\n```\r\n\r\n## 🐛 Troubleshooting\r\n\r\n### Issue: \"Module not found\"\r\n```bash\r\nnpm install @bnsights/bbsf-utilities-doc\r\n```\r\n\r\n### Issue: Images not showing\r\n- Ensure images are base64 encoded or accessible URLs\r\n- Check image size isn't too large (> 10MB)\r\n\r\n### Issue: Table formatting issues\r\n- Use inline styles for table cells\r\n- Set explicit widths when needed\r\n- Avoid complex nested tables\r\n\r\n### Issue: Build errors\r\n```bash\r\n# Clear cache\r\nrm -rf node_modules/.cache\r\nnpm install\r\nng build\r\n```\r\n\r\n## 📝 Future Features\r\n\r\n- [ ] PDF generation\r\n- [ ] Excel export (.xlsx)\r\n- [ ] Markdown conversion\r\n- [ ] Document templates\r\n- [ ] Mail merge support\r\n- [ ] Digital signatures\r\n\r\n## 🤝 Contributing\r\n\r\nThis package is part of the BBSF 3 framework. For contributions or issues, please refer to the main BBSF repository.\r\n\r\n## 📄 License\r\n\r\nPart of BBSF 3 - See main repository for license information.\r\n\r\n## 🔗 Related Packages\r\n\r\n- `@bnsights/bbsf-utilities` - Core utilities\r\n- `@bnsights/bbsf-admin-portal` - Admin portal components\r\n- `@bnsights/bbsf-controls` - UI controls\r\n\r\n---\r\n\r\n**Version**: 1.0.0  \r\n**Last Updated**: October 27, 2025  \r\n**Maintainers**: BBSF Team\r\n","readmeFilename":"README.md"}