Test dans un environnement réel
Test en production sans filigrane.
Fonctionne partout où vous en avez besoin.
IronPDF et Faye jouent des rôles différents dans le développement web, mais leurs compétences fonctionnent bien ensemble. En utilisant WebSocket ou d'autres transports compatibles, les serveurs et les clients web peuvent communiquer en temps réel grâce au paquet NPM Faye. Il s'agit d'une méthode simple mais efficace de publication/souscriptionmessagerie node js est un système qui permet des applications web évolutives et instantanées de partage de données. 1.4.0 est la dernière version de Faye publiée il y a 4 ans. À l'inverse, un autre package npm appelé IronPDF permet aux développeurs de créer, modifier et convertir de manière programmatique des documents PDF dans des environnements Node.js.
Les développeurs peuvent améliorer les applications web avec des fonctionnalités de production de PDF en temps réel en intégrant Faye à IronPDF. Les applications nécessitant la génération instantanée de rapports PDF, la génération dynamique de documents en fonction des entrées de l'utilisateur ou des changements de données en temps réel, et les scénarios d'édition collaborative de documents peuvent trouver cette connexion très utile. Avec l'aide des outils de création de PDF d'IronPDF et des fonctionnalités de messagerie simple publication-abonnement en temps réel de Faye, les développeurs peuvent concevoir des applications web axées sur les données, interactives et adaptables qui répondent à une variété d'objectifs des utilisateurs et des entreprises.
Un plugin Node.js appeléFaye le protocole WebSocket facilite la communication en temps réel entre les clients et les serveurs à l'aide de WebSocket ou d'un autre moyen de transport compatible et du protocole WebSocket. Il offre un mécanisme de messagerie pub/sub qui rend la communication des applications web évolutive et efficace. En gérant en douceur les connexions et l'acheminement des messages entre les clients et les serveurs, Faye entend rendre moins compliqué le déploiement de fonctionnalités en temps réel, telles que les mises à jour en direct, les notifications et les interactions collaboratives. Faye est fréquemment intégré par les développeurs pour améliorer leurs applications avec des fonctionnalités collaboratives, interactives et réactives qui nécessitent une transmission de données en temps réel entre les utilisateurs et les serveurs.
Le module NPM Faye est un outil utile pour intégrer la messagerie événementielle en temps réel dans les applications web, car il offre plusieurs fonctionnalités importantes :
Prise en charge de WebSocket et des protocoles de transport: Grâce à la prise en charge de WebSocket et des méthodes de repli vers des protocoles de transport alternatifs, tels que HTTP long-polling, Faye peut maintenir des canaux de communication en temps réel avec différents navigateurs et configurations de réseau.
**Avec l'aide du modèle de messagerie publish/subscribe de Faye, les utilisateurs peuvent s'abonner à des canaux particuliers(thèmes) et recevoir des mises à jour ou des messages dès qu'ils sont publiés.
**Il peut gérer efficacement un grand nombre de connexions et de messages simultanés grâce à son architecture évolutive, ce qui le rend approprié pour les applications qui exigent de grandes performances et une grande réactivité.
Intégration côté client et côté serveur: Faye facilite la communication entre les clients et les serveurs en intégrant à la fois le côté client et le côté serveur(navigateur) et côté serveur(Node.js).
**Pour réguler l'accès aux canaux et aux messages, il intègre des techniques de protection des connexions WebSocket ainsi que des procédures d'authentification et d'autorisation.
Facilité d'utilisation: Les développeurs peuvent créer des fonctionnalités telles que des mises à jour en direct, des notifications, des systèmes de chat, et plus encore avec peu de configuration en utilisant l'API simple de Faye pour la mise en place et la gestion des communications en temps réel.
**Faye maintient des canaux de communication robustes qui résistent aux pannes de réseau en gérant les reconnexions et en garantissant la fiabilité de la livraison des messages.
Personnalisation et extensibilité: Grâce à l'utilisation de plugins, d'extensions et d'adaptateurs uniques, les développeurs peuvent augmenter les capacités de Faye et fournir des solutions spécialisées pour répondre à certains besoins d'application.
L'intégration côté client et l'instance Faye côté serveur doivent être mises en place pour construire et configurer Faye à l'aide de NPM dans un environnement Node.js. Voici un manuel pratique pour vous aider à démarrer :
Installer Faye
Installez d'abord le paquet Faye :
npm install faye
npm install faye
'INSTANT VB TODO TASK: The following line uses invalid syntax:
'npm install faye
Assurez-vous que le serveur Faye est configuré en créant un fichier server.js dans Node.js :
// server.js
const http = require('http');
const faye = require('faye');
// Create an HTTP server
const server = http.createServer();
// Mount the Faye server at '/faye'
const bayeux = new faye.NodeAdapter({ mount: '/faye', timeout: 45 });
// Attach Faye to the HTTP server
bayeux.attach(server);
// Start the HTTP server
const PORT = 8000;
server.listen(PORT, () => {
console.log(`Faye server listening on port ${PORT}`);
});
// server.js
const http = require('http');
const faye = require('faye');
// Create an HTTP server
const server = http.createServer();
// Mount the Faye server at '/faye'
const bayeux = new faye.NodeAdapter({ mount: '/faye', timeout: 45 });
// Attach Faye to the HTTP server
bayeux.attach(server);
// Start the HTTP server
const PORT = 8000;
server.listen(PORT, () => {
console.log(`Faye server listening on port ${PORT}`);
});
' server.js
const http = require( 'http');
const faye = require( 'faye');
' Create an HTTP server
const server = http.createServer()
' Mount the Faye server at '/faye'
const bayeux = New faye.NodeAdapter({ mount: '/faye', timeout: 45 });
' Attach Faye to the HTTP server
bayeux.attach(server)
' Start the HTTP server
const PORT = 8000
server.listen(PORT, Sub()
console.log(`Faye server listening on port ${PORT}`)
End Sub)
Dans cet exemple, un serveur HTTP écoutant sur le port 8000 a le serveur Faye monté sur /faye. Adaptez le portage et la route de montage aux besoins de la version de votre application.
Ajoutez la bibliothèque client Faye à votre page HTML ou utilisez un bundler de modules tel que Webpack ou Browserify pour le faire :
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<title>Faye Client Example</title>
</head>
<script
type="text/javascript"
src="http://localhost:8000/faye/client.js"
></script>
<body>
<!-- Your HTML content -->
Enter the Message :
<script>
// Initialize Faye client
const client = new Faye.Client('http://localhost:8000/faye');
// Subscribe to a channel
client.subscribe('/channel', function(message) {
console.log('Received message:', message);
// Handle received messages
});
// Publish a message
function publishMessage(message) {
client.publish('/channel', { text: message });
}
</script>
</body>
</html>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<title>Faye Client Example</title>
</head>
<script
type="text/javascript"
src="http://localhost:8000/faye/client.js"
></script>
<body>
<!-- Your HTML content -->
Enter the Message :
<script>
// Initialize Faye client
const client = new Faye.Client('http://localhost:8000/faye');
// Subscribe to a channel
client.subscribe('/channel', function(message) {
console.log('Received message:', message);
// Handle received messages
});
// Publish a message
function publishMessage(message) {
client.publish('/channel', { text: message });
}
</script>
</body>
</html>
'INSTANT VB TODO TASK: The following line uses invalid syntax:
'<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8" /> <title> Faye Client Example</title> </head> <script type="text/javascript" src="http://localhost:8000/faye/client.js" ></script> <body> <!-- Your HTML content -- > Enter the Message : <script> const client = New Faye.Client('http: client.subscribe('/channel', @function(message) { console.log('Received message:', message); }); @function publishMessage(message) { client.publish('/channel', { text: message }); } </script> </body> </html>
Adapter l'URL du serveur Faye(http://localhost:8000/faye
) et le code source et l'URL du script client Faye(browser.js) à votre configuration.
Vous pouvez ajouter efficacement des fonctions de messagerie en temps réel dans votre application web Node.js en configurant le paquet Faye en suivant ces instructions. Modifiez les exemples en fonction de l'architecture et des besoins de votre application.
Vous devrez configurer un serveur Node.js pour gérer les connexions et les requêtes de génération de PDF avant de pouvoir utiliser IronPDF pour la génération dynamique de PDF et Faye pour les communications en temps réel. Voici un mode d'emploi détaillé :
IronPDF est un programme Node.js robuste conçu pour convertir des données HTML en fichiers PDF d'une incroyable qualité. Il accélère le processus de conversion des fichiers HTML, CSS et autres JavaScript en PDF correctement formatés sans compromettre le contenu en ligne original. C'est un outil très utile pour les applications web qui doivent produire des documents dynamiques et imprimables, tels que des factures, des certifications et des rapports.
IronPDF dispose de plusieurs fonctionnalités, notamment des paramètres de page personnalisables, des en-têtes, des pieds de page et la possibilité d'ajouter des polices et des images. Il peut gérer des styles et des mises en page complexes pour garantir que chaque sortie de test PDF répond aux spécifications. De plus, IronPDF contrôle l'exécution de JavaScript au sein de HTML, ce qui permet un rendu dynamique et interactif précis du contenu.
Convertissez HTML, CSS et JavaScript en PDF. Prend en charge deux normes web modernes : les requêtes multimédias et le responsive design. Pratique pour utiliser HTML et CSS afin de décorer dynamiquement des documents PDF, des factures et des rapports.
Il est possible d'ajouter du texte, des images et d'autres éléments à des PDF déjà existants. Extraction de texte et d'images à partir de fichiers PDF. Fusionnez de nombreux fichiers PDF en un seul fichier. Divisez les fichiers PDF en plusieurs documents distincts. Ajouter des en-têtes, des pieds de page, des annotations et des filigranes.
Dans les contextes industriels, les performances élevées et la fiabilité sont des attributs souhaitables de la conception. Gère facilement de grands ensembles de documents.
Pour obtenir les outils nécessaires pour travailler avec des PDF dans des projets Node.js, installez le package IronPDF. Ajoutez la ligne de code suivante à la ligne de commande.
npm install @ironsoftware/ironpdf
npm install @ironsoftware/ironpdf
'INSTANT VB TODO TASK: The following line uses invalid syntax:
'npm install @ironsoftware/ironpdf
Créer un serveur Node.js rudimentaire qui combine IronPDF pour la production de PDF avec Faye pour la messagerie en temps réel :
// server.js
const http = require('http');
const faye = require('faye');
const IronPdf = require('@ironsoftware/ironpdf');
var config = IronPdf.IronPdfGlobalConfig;
config.setConfig({
licenseKey:
"",
});
// Create an HTTP server
const server = http.createServer();
// Create a Faye server
const bayeux = new faye.NodeAdapter({ mount: '/faye', timeout: 45 });
// Attach the Faye server to the HTTP server
bayeux.attach(server);
// Handle Faye client connections
bayeux.on('handshake', function(clientId) {
console.log(`Client connected: ${clientId}`);
});
// Handle incoming messages for PDF generation
bayeux.on('publish', async function (clientId, channel, data) {
if (channel === '/generate_pdf') {
console.log(`Received PDF generation request from client ${clientId}: ${data.htmlContent}`);
// Generate PDF using IronPDF
let pdfData=await generatePdf(data.htmlContent)
var base64String = btoa(String.fromCharCode.apply(null, new Uint8Array(pdfData)));
bayeux.getClient().publish(`/pdf_result/${clientId}`, { pdfData: base64String });
}
});
// Function to generate PDF using IronPDF
const generatePdf = async (htmlContent) => {
const pdfDocument = IronPdf.PdfDocument;
let result = (await pdfDocument.fromHtml(htmlContent));
const pdfBuffer = await result.saveAsBuffer();
return pdfBuffer;
};
// Start the HTTP server
const PORT = 3000;
server.listen(PORT, function() {
console.log(`Server listening on port ${PORT}`);
});
// server.js
const http = require('http');
const faye = require('faye');
const IronPdf = require('@ironsoftware/ironpdf');
var config = IronPdf.IronPdfGlobalConfig;
config.setConfig({
licenseKey:
"",
});
// Create an HTTP server
const server = http.createServer();
// Create a Faye server
const bayeux = new faye.NodeAdapter({ mount: '/faye', timeout: 45 });
// Attach the Faye server to the HTTP server
bayeux.attach(server);
// Handle Faye client connections
bayeux.on('handshake', function(clientId) {
console.log(`Client connected: ${clientId}`);
});
// Handle incoming messages for PDF generation
bayeux.on('publish', async function (clientId, channel, data) {
if (channel === '/generate_pdf') {
console.log(`Received PDF generation request from client ${clientId}: ${data.htmlContent}`);
// Generate PDF using IronPDF
let pdfData=await generatePdf(data.htmlContent)
var base64String = btoa(String.fromCharCode.apply(null, new Uint8Array(pdfData)));
bayeux.getClient().publish(`/pdf_result/${clientId}`, { pdfData: base64String });
}
});
// Function to generate PDF using IronPDF
const generatePdf = async (htmlContent) => {
const pdfDocument = IronPdf.PdfDocument;
let result = (await pdfDocument.fromHtml(htmlContent));
const pdfBuffer = await result.saveAsBuffer();
return pdfBuffer;
};
// Start the HTTP server
const PORT = 3000;
server.listen(PORT, function() {
console.log(`Server listening on port ${PORT}`);
});
' server.js
const http = require( 'http');
const faye = require( 'faye');
const IronPdf = require( '@ironsoftware/ironpdf');
Dim config = IronPdf.IronPdfGlobalConfig
config.setConfig({ licenseKey:= ""})
' Create an HTTP server
const server = http.createServer()
' Create a Faye server
const bayeux = New faye.NodeAdapter({ mount: '/faye', timeout: 45 });
' Attach the Faye server to the HTTP server
bayeux.attach(server)
' Handle Faye client connections
bayeux.on( 'handshake', @function(clientId) { console.log(`Client connected: ${clientId}`); });
' Handle incoming messages for PDF generation
bayeux.on( 'publish', async @function(clientId, channel, data) { if(channel === '/generate_pdf') { console.log(`Received PDF generation request from client ${clientId}: ${data.htmlContent}`); let pdfData=await generatePdf(data.htmlContent) var base64String = btoa(String.fromCharCode.apply(Nothing, New Uint8Array(pdfData))); bayeux.getClient().publish(`/pdf_result/${clientId}`, { pdfData: base64String }); } });
' Function to generate PDF using IronPDF
const generatePdf = Async Function(htmlContent)
const pdfDocument = IronPdf.PdfDocument
Dim result As let = (Await pdfDocument.fromHtml(htmlContent))
const pdfBuffer = Await result.saveAsBuffer()
Return pdfBuffer
End Function
' Start the HTTP server
const PORT = 3000
server.listen(PORT, [function]() { console.log(`Server listening on port ${PORT}`); })
Configurez Faye côté client pour interagir avec le serveur et soumettre des demandes de création de PDF :
<!-- index.html -->
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Faye + IronPDF Example</title>
</head>
<body>
<button onclick="generatePdf()">Generate PDF</button>
<script src="https://cdn.jsdelivr.net/npm/faye/browser/faye-browser.min.js"></script>
<script>
const client = new Faye.Client('http://localhost:3000/faye');
//simple publish subscribe messaging
client.subscribe('/pdf_result/*', function(message) {
console.log('PDF received:', message);
displayPdf(message.pdfData);
});
function generatePdf() {
// Example: HTML content to generate PDF
const htmlContent = '<html><body><h1>Hello IronPDF!</h1></body></html>';
// Send HTML content to server for PDF generation
client.publish('/generate_pdf', { htmlContent: htmlContent });
}
function displayPdf(pdfData) {
// Example: Display or download PDF data received from server
const pdfBlob = new Blob([Uint8Array.from(atob(pdfData), c => c.charCodeAt(0))], { type: 'application/pdf' });
const pdfUrl = URL.createObjectURL(pdfBlob);
window.open(pdfUrl, '_blank');
}
</script>
</body>
</html>
<!-- index.html -->
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Faye + IronPDF Example</title>
</head>
<body>
<button onclick="generatePdf()">Generate PDF</button>
<script src="https://cdn.jsdelivr.net/npm/faye/browser/faye-browser.min.js"></script>
<script>
const client = new Faye.Client('http://localhost:3000/faye');
//simple publish subscribe messaging
client.subscribe('/pdf_result/*', function(message) {
console.log('PDF received:', message);
displayPdf(message.pdfData);
});
function generatePdf() {
// Example: HTML content to generate PDF
const htmlContent = '<html><body><h1>Hello IronPDF!</h1></body></html>';
// Send HTML content to server for PDF generation
client.publish('/generate_pdf', { htmlContent: htmlContent });
}
function displayPdf(pdfData) {
// Example: Display or download PDF data received from server
const pdfBlob = new Blob([Uint8Array.from(atob(pdfData), c => c.charCodeAt(0))], { type: 'application/pdf' });
const pdfUrl = URL.createObjectURL(pdfBlob);
window.open(pdfUrl, '_blank');
}
</script>
</body>
</html>
index.html -= 1
'INSTANT VB WARNING: An assignment within expression was extracted from the following statement:
'ORIGINAL LINE: <!-- index.html -- > <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title> Faye + IronPDF Example</title> </head> <body> <button onclick="generatePdf()"> Generate PDF</button> <script src="https://cdn.jsdelivr.net/npm/faye/browser/faye-browser.min.js"></script> <script> const client = new Faye.Client(
"https://cdn.jsdelivr.net/npm/faye/browser/faye-browser.min.js"></script> (Of script) const client = New Faye.Client( 'http: client.subscribe('/pdf_result '', function(message) {
'INSTANT VB WARNING: An assignment within expression was extracted from the following statement:
'ORIGINAL LINE: <! index.html > <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title> Faye + IronPDF Example</title> </head> <body> <button onclick="generatePdf()"> Generate PDF</button> <script src="https://cdn.jsdelivr.net/npm/faye/browser/faye-browser.min.js"></script> <script> const client
"generatePdf()"> Generate PDF</button> <script src="https://cdn.jsdelivr.net/npm/faye/browser/faye-browser.min.js"></script> (Of script) const client
'INSTANT VB WARNING: An assignment within expression was extracted from the following statement:
'ORIGINAL LINE: <! index.html > <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title> Faye + IronPDF Example</title> </head> <body> <button onclick="generatePdf()"> Generate PDF</button> <script src
"UTF-8"> (Of title) Faye + IronPDF Example</title> </head> (Of body) <button onclick="generatePdf()"> Generate PDF</button> <script src
'INSTANT VB WARNING: An assignment within expression was extracted from the following statement:
'ORIGINAL LINE: <! index.html > <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title> Faye + IronPDF Example</title> </head> <body> <button onclick
"en"> (Of head) <meta charset="UTF-8"> (Of title) Faye + IronPDF Example</title> </head> (Of body) <button onclick
<(Not index.html) > <(Not DOCTYPE) html> <html lang="en"> (Of head) <meta charset
index.html -= 1
' console.log('PDF received:', message);
' displayPdf(message.pdfData);
' });
' function generatePdf() {
' // Example: HTML content to generate PDF
' const htmlContent = '<html><body><h1>Hello IronPDF!</h1></body></html>';
' // Send HTML content to server for PDF generation
' client.publish('/generate_pdf', { htmlContent: htmlContent });
' }
' function displayPdf(pdfData) {
' // Example: Display or download PDF data received from server
' const pdfBlob = new Blob([Uint8Array.from(atob(pdfData), c => c.charCodeAt(0))], { type: 'application/pdf' });
' const pdfUrl = URL.createObjectURL(pdfBlob);
' window.open(pdfUrl, '_blank');
' }
' </script>
'</body>
'</html>
Côté serveur: Un serveur Faye(bayeux) est intégré par le serveur Node.js, qui configure également un serveur HTTP. Sur le canal /generate_pdf, il surveille les messages entrants et les connexions des clients. À la réception d'une demande deGénération PDFl'outil de traduction est un outil de gestion de contenu, il convertit les informations HTML fournies en PDF à l'aide d'IronPDF et renvoie les données PDF complétées, un message facile à utiliser pour le client.
Côté client: Pour obtenir les données PDF générées, le client du navigateur crée une connexion Faye(client) l'utilisateur se connecte au serveur et s'abonne au canal /pdf_result/*. Le bouton "Generate PDF" permet à l'utilisateur d'envoyer une requête de contenu HTML au serveur, que le serveur utilise ensuite pour générer un PDF à l'aide d'un client.release('/generate_pdf',{ htmlContent : htmlContent}). Il affiche ou télécharge le PDF après avoir reçu les données du PDF.
L'intégration de Faye à IronPDF permet de proposer une solution fiable pour les applications web contemporaines en combinant les avantages de la création dynamique de PDF et de la messagerie en temps réel. La communication instantanée client-serveur est rendue possible par le système de messagerie pub/sub de Faye, qui prend en charge les applications nécessitant des mises à jour en temps réel, telles que le suivi des bogues, les notifications et les capacités de travail en équipe. À l'inverse, IronPDF permet la création, la modification et la conversion programmatiques de documents PDF, ce qui permet la génération dynamique de rapports, de factures et d'autres documents en réponse à des entrées utilisateur ou à des données en temps réel.
Ces technologies peuvent être intégrées pour fournir du matériel créé dynamiquement et un retour d'information instantané, ce qui peut améliorer l'expérience de l'utilisateur. Par exemple, les consommateurs n'ont pas besoin d'attendre un traitement par lots ou d'actualiser le site web pour recevoir une demande de rapport PDF qui est traitée instantanément. Les applications web deviennent plus réactives et plus efficaces grâce à cette interaction fluide, ce qui accroît leur interactivité et leur convivialité.
En intégrant IronPDF etIronSoftwareavec les outils de développement d'applications Node.js, nous pouvons ajouter la ROC, la lecture de codes-barres, la sortie PDF, l'interaction avec Excel et bien d'autres fonctionnalités à votre boîte à outils de développement d'applications Node.js, ce qui en accroît l'utilité. La vaste bibliothèque de plugins soutenus par la communauté et les technologies hautement configurables d'IronSoftware permettent aux développeurs de créer des fonctionnalités et des applications web plus rapidement.
Avant de décider d'acheter, les développeurs peuvent profiter des nombreuses fonctionnalités d'IronPDF avec une licence d'essai gratuite et une variété d'échantillons de code source de l'entreprise. Consultez la page de licence pour obtenir des détails supplémentaires concernant la licence perpétuelle d'IronPDF. Rendez-vous sur la page de documentation du projet pour plus de détails sur la façon de commencer à utiliser IronPDF.
9 produits de l'API .NET pour vos documents de bureau