Test dans un environnement réel
Test en production sans filigrane.
Fonctionne partout où vous en avez besoin.
La génération de documents PDF dynamiques est une exigence typique pour de nombreuses applications dans le paysage actuel du développement web. La possibilité de générer et de travailler avec des PDFs côté serveur est essentielle pour produire des rapports, des factures et des guides d'utilisateur. Cet article discutera de l'intégration d'IronPDF, un outil stablePDF (EN ANGLAIS)package de création, avecHapi.js, un puissant framework Node.js. Nous examinerons également des méthodes viables pour assurer une connexion fluide entre Node.js, le serveur Hapi et .NET, car IronPDF est une bibliothèque .NET.
Un framework open-source appelé le plugin serveur Hapi peut être utilisé pour créer des applications en ligne Node.js évolutives et fiables, ainsi que des API et des services de base. Hapi.js, développé par Walmart Labs, est renommé pour son système de plugin robuste, son écosystème dynamique de frameworks et de plugins extensibles, ainsi qu'une multitude de possibilités configurables. C'est une excellente option pour créer des applications web contemporaines car elle simplifie la configuration du serveur, le traitement des requêtes, l'utilisation de la base de données et le routage.
Une communauté robuste de plugins pour Hapi.js étend sa fonctionnalité de base. En raison de sa modularité, le cadre fondamental ne devient pas surchargé lorsque les développeurs Hapi ajoutent des logiques métier pour des fonctionnalités telles que la validation des entrées, l'authentification et la mise en cache. Le système de plug-ins encourage une programmation gérable et réutilisable.
Un système de routage robuste et adaptable est offert par routingHapi.js. Il offre des options de configuration spécifiques aux routes, telles que la validation, l'authentification et le formatage des réponses, et prend en charge plusieurs protocoles HTTP. La polyvalence permet de créer facilement une logique de routage complexe.
Avec sa méthodologie orientée par la configuration, Hapi.js permet aux développeurs de spécifier le comportement du serveur à travers des objets de configuration. Les modifications du comportement du serveur pouvant être fréquemment mises en œuvre sans modifier le code de l'application ou la logique métier, cela entraîne moins de code, un code plus propre et une base de code plus facile à maintenir.
Joi est un langage de description de schéma de base de données efficace et un validateur de données qui interagit facilement avec Hapi.js. Une validation d'entrée robuste est rendue possible par cette intégration, garantissant que les données de la requête répondent à des normes prédéfinies avant d'être traitées. L'analyse du contenu pour une variété de types de données, tels que JSON et les données de formulaire, est également prise en charge par Hapi.js.
Avec le plugin hapi-auth, Hapi.js offre un mécanisme complet d'authentification et d'autorisation pour des applications web évolutives. Plusieurs techniques d'authentification, telles que Basic, JWT, OAuth et les schémas personnalisés, sont prises en charge par ce système d'autorisation intégré. L'accès sécurisé aux ressources et un cadre sécurisé avec un minimum de surcharge sont assurés par la capacité à gérer l'autorisation au niveau des routes. Hapi.js a été conçu pour fonctionner dans des environnements d'entreprise complexes. Hapi nous permet de créer diverses applications comme des sites web, des serveurs, des applications de proxy HTTP, etc.
Hapi.js offre une riche fonctionnalité de gestion des erreurs. Les développeurs peuvent définir des gestionnaires d'erreurs personnalisés pour traiter les problèmes soit de manière globale, soit au niveau du chemin d'accès de projets individuels. Cela garantit que les problèmes sont traités de manière cohérente et que les clients reçoivent des réponses d'erreur instructives.
Des installations de journalisation et de débogage puissantes sont incluses dans l'écosystème Hapi pour aider à corriger les bugs. Il peut être configuré pour enregistrer et journaliser de nombreux types d'événements, tels que l'activité du serveur, les échecs et les événements du cycle de vie des requêtes. Cette journalisation est très utile pour le dépannage et la surveillance des performances des applications.
Le design de Hapi.js est incroyablement extensible, par exemple. Les développeurs peuvent créer des plugins personnalisés pour modifier ou ajouter des fonctionnalités existantes. En raison de son extensibilité, Hapi.js peut être adapté pour répondre aux exigences uniques de tout projet.
En offrant un support intégré pour les procédures de sécurité largement utilisées, les applications évolutives et les frameworks, y compris la validation des entrées, les politiques de sécurité du contenu et la configuration des en-têtes HTTP, Hapi.js accorde une haute priorité à la sécurité. Les développeurs peuvent créer des applications et des frameworks résistants aux vulnérabilités typiques en mettant un fort accent sur la sécurité.
Établir et configurer un serveur Hapi.js nécessite plusieurs étapes. Voici un guide complet pour vous aider à installer des plugins, créer des routes et configurer un serveur Hapi.js de base. Vous serez guidé à travers le processus de création de routes, de configuration des serveurs, de mise en place des configurations initiales et d'utilisation de plugins.
Installez Hapi.js et toutes les autres dépendances nécessaires :
npm install @hapi/hapi
npm install @hapi/hapi
'INSTANT VB TODO TASK: The following line uses invalid syntax:
'npm install @hapi/hapi
Pour créer un serveur Hapi.js basique, créez un fichier appelé server.js et ajoutez-y le code suivant :
const Hapi = require('@hapi/hapi');
const init = async () => {
const server = Hapi.server({
port: 3000,
host: 'localhost'
});
server.route({
method: 'GET',
path: '/',
handler: (request, h) => {
return 'Hello world!';
}
});
// await server
await server.start();
console.log('Server running on %s', server.info.uri);
};
process.on('unhandledRejection', (err) => {
console.log(err);
process.exit(1);
});
init();
const Hapi = require('@hapi/hapi');
const init = async () => {
const server = Hapi.server({
port: 3000,
host: 'localhost'
});
server.route({
method: 'GET',
path: '/',
handler: (request, h) => {
return 'Hello world!';
}
});
// await server
await server.start();
console.log('Server running on %s', server.info.uri);
};
process.on('unhandledRejection', (err) => {
console.log(err);
process.exit(1);
});
init();
const Hapi = require( '@hapi/hapi');
'INSTANT VB TODO TASK: Lambda expressions and anonymous methods are not converted by Instant VB if local variables of the outer method are referenced within the anonymous method:
const init = async() =>
If True Then
const server = Hapi.server({ port:= 3000, host: 'localhost' });
server.route({ method: '@GET', path: "/"c, handler: (request, h) =>
If True Then
'INSTANT VB TODO TASK: The following line uses invalid syntax:
' Return 'Hello world!'; } }); await server.start(); console.log('Server running @on %s', server.info.uri); }; process.on('unhandledRejection', (err) => { console.log(err); process.@exit(1); }); init();
Des options de configuration plus sophistiquées pour les routes Hapi.js incluent les paramètres, les paramètres de requête, la validation de la charge utile, la mise en cache et les plugins adaptés pour le framework express et pour implémenter la route particulière.
const Hapi = require('@hapi/hapi');
const init = async () => {
const server = Hapi.server({
port: 3000,
host: 'localhost'
});
server.route({
method: 'GET',
path: '/user/{id}',
handler: (request, h) => {
const userId = request.params.id;
return `User ID: ${userId}`;
}
});
// await server
await server.start();
console.log('Server running on %s', server.info.uri);
};
process.on('unhandledRejection', (err) => {
console.log(err);
process.exit(1);
});
init();
const Hapi = require('@hapi/hapi');
const init = async () => {
const server = Hapi.server({
port: 3000,
host: 'localhost'
});
server.route({
method: 'GET',
path: '/user/{id}',
handler: (request, h) => {
const userId = request.params.id;
return `User ID: ${userId}`;
}
});
// await server
await server.start();
console.log('Server running on %s', server.info.uri);
};
process.on('unhandledRejection', (err) => {
console.log(err);
process.exit(1);
});
init();
Private const Hapi = require( '@hapi/hapi');
Private const init = async() =>
Private const server = Hapi.server({ port:= 3000, host: 'localhost' });
server.route({ method: '@GET', path: '/user/{id}', handler: (request, h) =>
If True Then
const userId = request.params.id
Return `User ID: $
If True Then
userId
End If
`
End If
)
' await server
Await server.start()
console.log( 'Server running @on %s', server.info.uri);
}
process.on( 'unhandledRejection', (err) =>
If True Then
console.log(err)
process.exit(1)
End If
)
init()
De plus, la gestion des paramètres de requête est simplifiée avec Hapi.js. Voici comment procéder :
const Hapi = require('@hapi/hapi');
const init = async () => {
const server = Hapi.server({
port: 3000,
host: 'localhost'
});
server.route({
method: 'GET',
path: '/search',
handler: (request, h) => {
const query = request.query.q;
return `Search query: ${query}`;
}
});
await server.start();
console.log('Server running on %s', server.info.uri);
};
process.on('unhandledRejection', (err) => {
console.log(err);
process.exit(1);
});
init();
const Hapi = require('@hapi/hapi');
const init = async () => {
const server = Hapi.server({
port: 3000,
host: 'localhost'
});
server.route({
method: 'GET',
path: '/search',
handler: (request, h) => {
const query = request.query.q;
return `Search query: ${query}`;
}
});
await server.start();
console.log('Server running on %s', server.info.uri);
};
process.on('unhandledRejection', (err) => {
console.log(err);
process.exit(1);
});
init();
Private const Hapi = require( '@hapi/hapi');
Private const init = async() =>
Private const server = Hapi.server({ port:= 3000, host: 'localhost' });
server.route({ method: '@GET', path: '/search', handler: (request, h) =>
If True Then
const query = request.query.q
Return `Search query: $
If True Then
query
End If
`
End If
)
Await server.start()
console.log( 'Server running @on %s', server.info.uri);
}
process.on( 'unhandledRejection', (err) =>
If True Then
console.log(err)
process.exit(1)
End If
)
init()
Une requête GET à /search?q=Hapi répondra par "Recherche : Hapi".
Exécutez la commande suivante pour démarrer votre serveur :
node server.js
node server.js
'INSTANT VB TODO TASK: The following line uses invalid syntax:
'node server.js
Dans votre terminal, vous devriez voir le message Serveur fonctionnant à http://localhost:3000. "Hello, Hapi!"s'affichera dans votre navigateur lorsque vous visiterez http://localhost:3000."
IronPDF for Node.js est assez facile à prendre en main! Les étapes impliquées sont décomposées ici.
IronPDFest une bibliothèque d'applications conçue pour faciliter la création, l'édition et la gestion des PDF. Cet outil permet aux développeurs d'extraire du texte et des images de documents HTML, de combiner plusieurs documents PDF, d'appliquer des en-têtes et des filigranes, et bien plus encore. Les développeurs peuvent facilement créer des documents PDF de haute qualité par programmation grâce à l'API conviviale d'IronPDF et à sa documentation complète, qui simplifie la gestion des PDFs. IronPDF possède toutes les fonctionnalités et capacités nécessaires pour améliorer les flux de travail des documents et offrir d'excellentes expériences utilisateurs dans divers environnements, que ce soit pour produire des factures, des rapports ou de la documentation.
Convertir HTML en PDF : Vous pouvez rapidement et simplement convertir du contenu HTML ou des fichiers statiques—including CSS et JavaScript—en fichiers PDF.
Fusion de PDF : Pour simplifier les tâches de gestion des documents, combinez plusieurs documents PDF en un seul fichier PDF.
Extraction de texte et d'image : Extrayez le texte et les images des fichiers PDF afin de pouvoir les traiter ou les analyser ultérieurement.
Filigrane : Pour des raisons de sécurité ou de marque, ajoutez des filigranes de texte ou d'image aux pages PDF.
Ajouter en-tête et pied de page : Dans les documents PDF, ajoutez des en-têtes et des pieds de page avec du texte personnalisé ou des numéros de page.
Pour activer la fonctionnalité d'IronPDF, installez les packages nécessaires de Node.js en utilisant le gestionnaire de paquets node.
npm install @ironsoftware/ironpdf
npm install @ironsoftware/ironpdf
'INSTANT VB TODO TASK: The following line uses invalid syntax:
'npm install @ironsoftware/ironpdf
Tout d'abord, configurez un serveur Hapi.js simple pour répondre aux requêtes entrantes sur le web. Ce serveur est prêt à recevoir des demandes pour produire des fichiers PDF.
const Hapi = require('@hapi/hapi');
const IronPdf = require("@ironsoftware/ironpdf");
const document=IronPdf.PdfDocument;
var config=IronPdf.IronPdfGlobalConfig
config.setConfig({licenseKey:''});
const init = async () => {
const server = Hapi.server({
port: 3000,
host: 'localhost'
});
server.route({
method: 'GET',
path: '/',
handler: async (request, h) => {
// Generate PDF here
console.log('Connected');
await generatePdf();
return h.file('demo.pdf');
}
});
await server.start();
console.log('Server running on %s', server.info.uri);
};
process.on('unhandledRejection', (err) => {
console.log(err);
process.exit(1);
});
const generatePdf = async () => {
const htmlContent = '<html><body><h1>Hello, IronPDF!</h1></body></html>';
(await document.fromHtml(htmlContent)).saveAs('demo.pdf');
};
init();
const Hapi = require('@hapi/hapi');
const IronPdf = require("@ironsoftware/ironpdf");
const document=IronPdf.PdfDocument;
var config=IronPdf.IronPdfGlobalConfig
config.setConfig({licenseKey:''});
const init = async () => {
const server = Hapi.server({
port: 3000,
host: 'localhost'
});
server.route({
method: 'GET',
path: '/',
handler: async (request, h) => {
// Generate PDF here
console.log('Connected');
await generatePdf();
return h.file('demo.pdf');
}
});
await server.start();
console.log('Server running on %s', server.info.uri);
};
process.on('unhandledRejection', (err) => {
console.log(err);
process.exit(1);
});
const generatePdf = async () => {
const htmlContent = '<html><body><h1>Hello, IronPDF!</h1></body></html>';
(await document.fromHtml(htmlContent)).saveAs('demo.pdf');
};
init();
const Hapi = require( '@hapi/hapi');
const IronPdf = require("@ironsoftware/ironpdf")
const document=IronPdf.PdfDocument
Dim config=IronPdf.IronPdfGlobalConfig config.setConfig({licenseKey: ''});
'INSTANT VB TODO TASK: Lambda expressions and anonymous methods are not converted by Instant VB if local variables of the outer method are referenced within the anonymous method:
const init = async() =>
If True Then
const server = Hapi.server({ port:= 3000, host: 'localhost' });
server.route({ method: '@GET', path: "/"c, handler: async(request, h) =>
If True Then
console.log( 'Connected');
Await generatePdf()
Return h.file( 'demo.pdf');
End If
End If
)
Await server.start()
console.log( 'Server running @on %s', server.info.uri);
}
process.on( 'unhandledRejection', (err) =>
If True Then
console.log(err)
process.exit(1)
End If
)
'INSTANT VB TODO TASK: Lambda expressions and anonymous methods are not converted by Instant VB if local variables of the outer method are referenced within the anonymous method:
const generatePdf = async() =>
If True Then
'INSTANT VB TODO TASK: The following line uses invalid syntax:
' const htmlContent = '<html><body><h1> Hello, IronPDF!</h1></body></html>'; (await document.fromHtml(htmlContent)).saveAs('demo.pdf'); }; init();
Nous configurons un serveur pour écouter les appels HTTP sur le port 3000 et importons Hapi.js. Pour gérer les requêtes HTTP GET vers le chemin racine /, une route est définie. Pour créer le Contenu PDFen utilisant IronPDF, nous appelons la fonction generatePdf dans le gestionnaire de route. Pour rendre le matériel HTML en tant que tampon PDF de manière asynchrone, importez IronPDF. Après la génération, le contenu PDF est renvoyé en tant que réponse avec le type de contenu approprié.(application/pdf). De plus, nous configurons l'en-tête Content-Disposition pour spécifier si le PDF doit être téléchargé en tant que pièce jointe ou affiché en ligne dans le navigateur.(facultatif).
En résumé, utiliser Hapi.js et IronPDF dans une application Node.js offre un moyen puissant de créer des documents PDF à la volée. Vous pouvez rapidement configurer un serveur Hapi.js pour traiter les requêtes HTTP et utiliser IronPDF pour créer des PDF à partir de contenu HTML ou effectuer d'autres opérations de création de PDF en suivant les instructions fournies dans cet article.
Pour créer des serveurs web dans Node.js, Hapi.js offre un cadre polyvalent et convivial avec une interface externe qui simplifie l'établissement de routes et la gestion des requêtes HTTP. Ce framework est optimisé par IronPDF, qui offre un ensemble de fonctionnalités étendu pour la création de PDF, notamment la combinaison de documents PDF, l'ajout d'en-têtes et de pieds de page, et la conversion de texte HTML en PDF.
Hapi.js et IronPDF sont des options fiables pour intégrer des fonctionnalités de création de PDF dans vos applications Node.js grâce à leur documentation détaillée et au soutien actif de la communauté des développeurs. Cette intégration offre une méthode simple pour ajouter des fonctionnalités de création de PDF à vos applications, quel que soit votre niveau d'expérience en développement.
Nous pouvons garantir des solutions logicielles haut de gamme riches en fonctionnalités pour les clients et les utilisateurs finaux en intégrant IronPDF et les produits Iron Software dans votre pile de développement. De plus, cela aidera à l'optimisation des projets et des processus. Prix pourIronSoftwareà partir de 749 $. Ces outils conviennent bien aux projets de développement logiciel contemporain en raison de leur documentation approfondie, de leur communauté dynamique de développeurs en ligne et de leurs mises à jour fréquentes.
9 produits de l'API .NET pour vos documents de bureau