Saltar al pie de página
AYUDA DE NODE

linkify-react (Cómo funciona: Una guía para desarrolladores)

En el amplio mundo del desarrollo web, crear enlaces clicables o etiquetas de anclaje dentro del texto es una tarea fundamental. Ya sea que estés construyendo un blog, una plataforma de redes sociales o un cliente de correo electrónico, la capacidad de detectar y convertir automáticamente URLs, direcciones de correo electrónico y otro texto en enlaces clicables es crucial para proporcionar una experiencia de usuario sin problemas. Conoce Linkify React, un poderoso paquete npm diseñado para simplificar este proceso en aplicaciones React. En este artículo, exploraremos cómo puedes usar Linkify para simplificar la creación de enlaces en tus proyectos React, acompañado de ejemplos de código para demostrar su uso.

Además, te presentaremos IronPDF, una biblioteca versátil que te permite generar documentos PDF de alta calidad a partir de tus páginas web. Te mostraremos que al usar IronPDF junto con Linkify, puedes crear fácilmente PDFs que preserven los enlaces clicables identificados y convertidos por Linkify, asegurando que tus documentos mantengan la misma interactividad que tu contenido web.

Cómo empezar con el componente Linkify React

Linkify React es un paquete npm ligero y fácil de usar que automatiza la conversión de texto plano que contiene URLs, direcciones de correo electrónico y otros enlaces encontrados dentro de cadenas secundarias en hipervínculos clicables como elementos anidados. Elimina la necesidad de analizar y formatear links manualmente, ahorrando a los desarrolladores tiempo y esfuerzo valiosos. Vamos a sumergirnos en cómo puedes integrar Linkify en tus aplicaciones React.

Instalación

Para comenzar con React Linkify, primero necesitas instalarlo como una dependencia en tu proyecto. Puedes hacerlo usando npm o yarn. Abre tu terminal y ejecuta el siguiente comando:

npm install react-linkify
# or
yarn add react-linkify
npm install react-linkify
# or
yarn add react-linkify
SHELL

Uso

Una vez que React Linkify esté instalado, puedes integrarlo fácilmente en tus componentes React. Aquí hay un ejemplo simple que demuestra cómo usar React Linkify para renderizar enlaces clicables dentro del contenido de texto:

import React from 'react';
import Linkify from 'react-linkify';

// A React component to display clickable links
const MyComponent = () => {
  return (
    <div>
      <h1>Clickable Links with React Linkify</h1>
      <Linkify>
        <p>
          Check out this cool website: https://example.com
          <br />
          You can also reach me at hello@example.com
        </p>
      </Linkify>
    </div>
  );
};

export default MyComponent;
import React from 'react';
import Linkify from 'react-linkify';

// A React component to display clickable links
const MyComponent = () => {
  return (
    <div>
      <h1>Clickable Links with React Linkify</h1>
      <Linkify>
        <p>
          Check out this cool website: https://example.com
          <br />
          You can also reach me at hello@example.com
        </p>
      </Linkify>
    </div>
  );
};

export default MyComponent;
JAVASCRIPT

En este ejemplo, importamos el componente Linkify del paquete react-linkify y envolvemos nuestro contenido de texto dentro de él. React Linkify detecta automáticamente URLs y direcciones de correo electrónico dentro del texto y las convierte en hipervínculos clicables.

Personalización

Linkify ofrece diversos props, atributos y opciones para personalizar el comportamiento y apariencia de los enlaces generados. Por ejemplo, puedes especificar atributos target para controlar cómo se abren los enlaces. Así es como puedes personalizar el comportamiento de React Linkify:

<Linkify properties={{ target: '_blank' }}>
  <p>
    Clickable links will open in a new tab: https://example.com
  </p>
</Linkify>
<Linkify properties={{ target: '_blank' }}>
  <p>
    Clickable links will open in a new tab: https://example.com
  </p>
</Linkify>
JAVASCRIPT

Presentando IronPDF

IronPDF es un poderoso paquete NPM diseñado para facilitar la generación de PDF en aplicaciones Node.js. Te permite crear documentos PDF a partir de contenido HTML, URLs o archivos PDF existentes. Ya sea que estés generando facturas, informes, o cualquier otro tipo de documento, IronPDF simplifica el proceso con su API intuitiva y su sólido conjunto de características.

linkify-react (Cómo Funciona: Una Guía para Desarrolladores): Figura 1 - IronPDF para Node.js: El Sitio Web de la Biblioteca PDF de Node.js

Las principales características de IronPDF incluyen

1. Conversión de HTML a PDF

Convierte elementos HTML en documentos PDF sin esfuerzo. Esta característica es particularmente útil para generar PDFs dinámicos a partir de contenido web.

2. Conversión de URL a PDF

Genera PDFs directamente a partir de URLs. Esto te permite capturar el contenido de páginas web y guardarlas como archivos PDF programáticamente.

3. Manipulación de PDF

Fusionar, dividir y manipular documentos PDF existentes con facilidad. IronPDF proporciona funcionalidades para manipular archivos PDF, como añadir páginas, dividir documentos, y más.

4. Seguridad PDF

Proteja sus documentos PDF encriptándolos con contraseñas o aplicando firmas digitales. IronPDF ofrece opciones para proteger sus documentos sensibles contra el acceso no autorizado.

5. Resultados de alta calidad

Producir documentos PDF de alta calidad con representación precisa de texto, imágenes y formato. IronPDF asegura que sus PDFs generados mantengan la fidelidad al contenido original.

6. Compatibilidad entre plataformas

IronPDF es compatible con varias plataformas, incluyendo Windows, Linux y macOS, lo que lo hace apto para una amplia gama de entornos de desarrollo.

7. Integración sencilla

Integre fácilmente IronPDF en sus aplicaciones de Node.js usando su paquete npm. La API está bien documentada, lo que hace que sea sencillo incorporar capacidades de generación de PDF en sus proyectos.

Ya sea que estés construyendo una aplicación web, un script del lado del servidor, o una herramienta de línea de comandos, IronPDF te permite crear documentos PDF de nivel profesional de manera eficiente y fiable.

Generar documentos PDF con IronPDF y Linkify React

Dependencias de instalación

Primero, crea un nuevo proyecto Next.js (si aún no lo has hecho) usando el siguiente comando:

npx create-next-app@latest linkify-ironpdf --use-npm --example "https://github.com/vercel/next-learn/tree/main/basics/learn-starter"
npx create-next-app@latest linkify-ironpdf --use-npm --example "https://github.com/vercel/next-learn/tree/main/basics/learn-starter"
SHELL

A continuación, navega al directorio de tu proyecto:

cd linkify-ironpdf
cd linkify-ironpdf
SHELL

Instale los paquetes requeridos:

yarn add @ironsoftware/ironpdf @ironsoftware/ironpdf-engine-windows-x64
yarn add react-linkify
yarn add @ironsoftware/ironpdf @ironsoftware/ironpdf-engine-windows-x64
yarn add react-linkify
SHELL

Crear un PDF

Ahora, vamos a crear un ejemplo simple de generación de un PDF usando IronPDF. En su componente de Next.js (por ejemplo, pages/index.tsx), agregue el siguiente código:

API de Generación de PDF: El primer paso es crear una API backend para generar el documento PDF. Dado que IronPDF solo se ejecuta del lado del servidor, necesitamos crear una API para llamar cuando un usuario quiera generar un PDF. Crea un archivo en la ruta pages/api/pdf.js y añade los contenidos a continuación.

IronPDF también requiere una clave de licencia, puedes obtenerla en la página de licencias y colocarla en el siguiente código:

// pages/api/pdf.js

import { IronPdfGlobalConfig, PdfDocument } from "@ironsoftware/ironpdf";

// Apply your IronPDF license key
IronPdfGlobalConfig.getConfig().licenseKey = "Your license key goes here";

export default async function handler(req, res) {
  try {
    const url = req.query.url;
    const pdf = await PdfDocument.fromUrl(url);
    const data = await pdf.saveAsBuffer();
    console.error('data PDF:', data);
    res.setHeader('Content-Type', 'application/pdf');
    res.setHeader('Content-Disposition', 'attachment; filename=awesomeIron.pdf');
    res.send(data);
  } catch (error) {
    console.error('Error generating PDF:', error);
    res.status(500).end();
  }
}
// pages/api/pdf.js

import { IronPdfGlobalConfig, PdfDocument } from "@ironsoftware/ironpdf";

// Apply your IronPDF license key
IronPdfGlobalConfig.getConfig().licenseKey = "Your license key goes here";

export default async function handler(req, res) {
  try {
    const url = req.query.url;
    const pdf = await PdfDocument.fromUrl(url);
    const data = await pdf.saveAsBuffer();
    console.error('data PDF:', data);
    res.setHeader('Content-Type', 'application/pdf');
    res.setHeader('Content-Disposition', 'attachment; filename=awesomeIron.pdf');
    res.send(data);
  } catch (error) {
    console.error('Error generating PDF:', error);
    res.status(500).end();
  }
}
JAVASCRIPT

A continuación el código de index.js que configura la página de generación de PDF para el usuario:

import Head from "next/head";
import styles from "../styles/Home.module.css";
import React, { useState } from "react";
import Linkify from 'react-linkify';

// Home component for link conversion and PDF generation
export default function Home() {
  const [text, setText] = useState("");

  // Function to generate PDF from entered URL
  const generatePdf = async () => {
    try {
      const response = await fetch("/api/pdf?url=" + text);
      const blob = await response.blob();
      const url = window.URL.createObjectURL(new Blob([blob]));
      const link = document.createElement("a");
      link.href = url;
      link.setAttribute("download", "awesomeIron.pdf");
      document.body.appendChild(link);
      link.click();
      link.parentNode.removeChild(link);
    } catch (error) {
      console.error("Error generating PDF:", error);
    }
  };

  // Handle changes in the input text field
  const handleChange = (event) => {
    setText(event.target.value);
  };

  return (
    <div className={styles.container}>
      <Head>
        <title>Generate PDF Using IronPDF</title>
        <link rel="icon" href="/favicon.ico" />
      </Head>
      <main>
        <h1>Demo Linkify and Generate PDF Using IronPDF</h1>
        <p>
          <span>Enter URL to Linkify and Convert to PDF:</span>{" "}
        </p>
        <input type="text" value={text} onChange={handleChange} />
        <Linkify properties={{ target: '_blank' }}>
          <p>
            Clickable links from input text: {text}
          </p>
        </Linkify>
        <button style={{ margin: 20, padding: 5 }} onClick={generatePdf}>
          Generate PDF From Link
        </button>
      </main>
      <style jsx>{`
        main {
          padding: 5rem 0;
          flex: 1;
          display: flex;
          flex-direction: column;
          justify-content: center;
          align-items: center;
        }
        footer {
          width: 100%;
          height: 100px;
          border-top: 1px solid #eaeaea;
          display: flex;
          justify-content: center;
          align-items: center;
        }
        footer img {
          margin-left: 0.5rem;
        }
        footer a {
          display: flex;
          justify-content: center;
          align-items: center;
          text-decoration: none;
          color: inherit;
        }
        code {
          background: #fafafa;
          border-radius: 5px;
          padding: 0.75rem;
          font-size: 1.1rem;
          font-family:
            Menlo,
            Monaco,
            Lucida Console,
            Liberation Mono,
            DejaVu Sans Mono,
            Bitstream Vera Sans Mono,
            Courier New,
            monospace;
        }
      `}</style>
      <style jsx global>{`
        html,
        body {
          padding: 0;
          margin: 0;
          font-family:
            -apple-system,
            BlinkMacSystemFont,
            Segoe UI,
            Roboto,
            Oxygen,
            Ubuntu,
            Cantarell,
            Fira Sans,
            Droid Sans,
            Helvetica Neue,
            sans-serif;
        }
        * {
          box-sizing: border-box;
        }
      `}</style>
    </div>
  );
}
import Head from "next/head";
import styles from "../styles/Home.module.css";
import React, { useState } from "react";
import Linkify from 'react-linkify';

// Home component for link conversion and PDF generation
export default function Home() {
  const [text, setText] = useState("");

  // Function to generate PDF from entered URL
  const generatePdf = async () => {
    try {
      const response = await fetch("/api/pdf?url=" + text);
      const blob = await response.blob();
      const url = window.URL.createObjectURL(new Blob([blob]));
      const link = document.createElement("a");
      link.href = url;
      link.setAttribute("download", "awesomeIron.pdf");
      document.body.appendChild(link);
      link.click();
      link.parentNode.removeChild(link);
    } catch (error) {
      console.error("Error generating PDF:", error);
    }
  };

  // Handle changes in the input text field
  const handleChange = (event) => {
    setText(event.target.value);
  };

  return (
    <div className={styles.container}>
      <Head>
        <title>Generate PDF Using IronPDF</title>
        <link rel="icon" href="/favicon.ico" />
      </Head>
      <main>
        <h1>Demo Linkify and Generate PDF Using IronPDF</h1>
        <p>
          <span>Enter URL to Linkify and Convert to PDF:</span>{" "}
        </p>
        <input type="text" value={text} onChange={handleChange} />
        <Linkify properties={{ target: '_blank' }}>
          <p>
            Clickable links from input text: {text}
          </p>
        </Linkify>
        <button style={{ margin: 20, padding: 5 }} onClick={generatePdf}>
          Generate PDF From Link
        </button>
      </main>
      <style jsx>{`
        main {
          padding: 5rem 0;
          flex: 1;
          display: flex;
          flex-direction: column;
          justify-content: center;
          align-items: center;
        }
        footer {
          width: 100%;
          height: 100px;
          border-top: 1px solid #eaeaea;
          display: flex;
          justify-content: center;
          align-items: center;
        }
        footer img {
          margin-left: 0.5rem;
        }
        footer a {
          display: flex;
          justify-content: center;
          align-items: center;
          text-decoration: none;
          color: inherit;
        }
        code {
          background: #fafafa;
          border-radius: 5px;
          padding: 0.75rem;
          font-size: 1.1rem;
          font-family:
            Menlo,
            Monaco,
            Lucida Console,
            Liberation Mono,
            DejaVu Sans Mono,
            Bitstream Vera Sans Mono,
            Courier New,
            monospace;
        }
      `}</style>
      <style jsx global>{`
        html,
        body {
          padding: 0;
          margin: 0;
          font-family:
            -apple-system,
            BlinkMacSystemFont,
            Segoe UI,
            Roboto,
            Oxygen,
            Ubuntu,
            Cantarell,
            Fira Sans,
            Droid Sans,
            Helvetica Neue,
            sans-serif;
        }
        * {
          box-sizing: border-box;
        }
      `}</style>
    </div>
  );
}
JAVASCRIPT

Explicación del código

  1. Integración de Linkify:

    • El componente Linkify rodea la etiqueta HTML que contiene el texto del link.
    • Convierte automáticamente cualquier URL o correo electrónico detectado en el texto en un enlace clicable.
  2. Generación de PDF:
    • Cuando se hace clic en el botón 'Generar PDF', la aplicación llama a la API del backend para generar un PDF desde la URL.
    • Esta API recupera la página web desde la URL y la convierte en un documento PDF descargable.

Página de generación de PDF

linkify-react (Cómo Funciona: Una Guía para Desarrolladores): Figura 2 - Página resultante para la generación de PDF

Resultado PDF

linkify-react (Cómo Funciona: Una Guía para Desarrolladores): Figura 3 - PDF generado al hacer clic en el botón 'Generar PDF'

Licencia de IronPDF

Coloca la Clave de Licencia aquí:

import { IronPdfGlobalConfig, PdfDocument } from "@ironsoftware/ironpdf";

// Apply your IronPDF license key
IronPdfGlobalConfig.getConfig().licenseKey = "Add Your license key here";
import { IronPdfGlobalConfig, PdfDocument } from "@ironsoftware/ironpdf";

// Apply your IronPDF license key
IronPdfGlobalConfig.getConfig().licenseKey = "Add Your license key here";
JAVASCRIPT

Conclusión

React Linkify simplifica el proceso de crear enlaces clicables dentro del contenido de texto en aplicaciones React. Al automatizar la detección y conversión de URLs, direcciones de correo electrónico y otros enlaces en hipervínculos clicables, Linkify agiliza el flujo de trabajo de desarrollo y mejora la experiencia del usuario. Con su fácil integración, opciones de personalización y funcionalidad robusta, React Linkify es una herramienta valiosa para los desarrolladores de React que buscan crear interfaces atractivas y fáciles de usar.

Además de eso, IronPDF ha demostrado ser una robusta biblioteca de Node.js hecha a medida para los desarrolladores que buscan integrar capacidades completas de generación, manipulación y edición de PDF en sus aplicaciones. Con soporte para convertir varios formatos a PDF, editar documentos PDF existentes y gestionar la seguridad de PDF, IronPDF proporciona un conjunto de herramientas versátiles para crear y personalizar archivos PDF programáticamente dentro del entorno de Node.js. Sus características atienden a una amplia gama de necesidades, desde la generación de documentos simples hasta tareas complejas de gestión de documentos, convirtiéndola en una herramienta valiosa para desarrolladores Node.js que trabajan con PDFs.

Darrius Serrant
Ingeniero de Software Full Stack (WebOps)

Darrius Serrant tiene una licenciatura en Ciencias de la Computación de la Universidad de Miami y trabaja como Ingeniero de Marketing WebOps Full Stack en Iron Software. Atraído por la programación desde joven, vio la computación como algo misterioso y accesible, convirtiéndolo en el ...

Leer más