Runtimes Node.js para relatórios migrados do Crystal Reports.
Monorepo com pacotes npm sob @crystal-node/*. Documentação HTML (GitHub Pages): pasta docs/.
Apoie o projeto: GitHub Sponsors · SPONSORS.md
| Pacote | Descrição |
|---|---|
@crystal-node/core |
Helpers Crystal + chrome/suppress PDF |
@crystal-node/controller |
buildReportModel comercial / dotnetrequest |
@crystal-node/engine-puppeteer |
PDF via Puppeteer |
@crystal-node/engine-wkhtmltopdf |
PDF via wkhtmltopdf |
@crystal-node/engine-weasyprint |
PDF via WeasyPrint |
@crystal-node/engine-devbox |
PDF via res.pdf + crystal-controller |
@crystal-node/routes |
Rotas Express a partir de pastas *Report |
@crystal-node/runtime |
Meta-pacote — reexporta tudo (API 1.0) |
npm install @crystal-node/runtime
# + peers do engine escolhido, ex.:
npm install puppeteer vash# Puppeteer
npm install @crystal-node/engine-puppeteer @crystal-node/controller puppeteer vash
# Devbox
npm install @crystal-node/engine-devbox
# wkhtmltopdf
npm install @crystal-node/engine-wkhtmltopdf @crystal-node/controller vash
# WeasyPrint
npm install @crystal-node/engine-weasyprint @crystal-node/controller vash pdf-lib
# Só rotas
npm install @crystal-node/routes expressDependências @crystal-node/* internas (ex.: core) são instaladas automaticamente.
Peers externos (puppeteer, vash, express, pdf-lib) você instala conforme o uso.
const { reportControllerDotnetrequest } = require('@crystal-node/controller');
const { crystalFunctionsRuntime } = require('@crystal-node/core');
const reportEngine = require('@crystal-node/engine-puppeteer');
module.exports = async function (req, res) {
const model = reportControllerDotnetrequest.buildReportModel(
req,
__dirname,
crystalFunctionsRuntime
);
await reportEngine.renderReportPdf(model, res, {
reportDir: __dirname,
pdf: { marginTop: 28, marginBottom: 14 }
});
};Compatível via meta-pacote:
const {
reportControllerDotnetrequest,
crystalFunctionsRuntime,
reportEnginePuppeteer
} = require('@crystal-node/runtime');npm install
npm test
npm run pack:dryCom login/2FA ok:
npm run publish:allOu veja a página docs/publicacao.html.
Settings → Pages → branch main → folder /docs.
- Site HTML:
docs/index.html - Engines (markdown):
docs/engines-pdf.md - Rotas:
docs/rotas-report.md - Migração manual:
docs/migracao-manual.md