Cómo reemplazar texto en un PDF

This article was translated from English: Does it need improvement?
Translated
View the article in English

IronPDF for Java ofrece a los desarrolladores control directo sobre el contenido existente de PDF a través del método replaceText. Ya sea que necesites corregir un error tipográfico en un lote de informes generados, intercambiar números de versión en documentos de plantilla o personalizar contratos con datos específicos del cliente, el método acepta una selección de página, una cadena de búsqueda y una cadena de reemplazo y maneja el resto. Esta guía cubre el reemplazo de una sola página, el direccionamiento a múltiples páginas, cada opción disponible de PageSelection y patrones prácticos para flujos de trabajo basados en plantillas.

Inicio rápido: Reemplazo de texto en un PDF

Añade la dependencia IronPDF, carga o renderiza un PDF, llama a replaceText y guarda el resultado:

 :title=Quickstart Replace Text
//:path=/static-assets/pdf/content-code-examples/how-to/find-replace-text/quickstart.java
import com.ironsoftware.ironpdf.*;
import com.ironsoftware.ironpdf.edit.PageSelection;
import java.io.IOException;

public class App {
    public static void main(String[] args) throws IOException {
        License.setLicenseKey("IRONPDF-MYLICENSE-KEY-1EF01");
        PdfDocument pdf = PdfDocument.renderHtmlAsPdf("<h1>.NET6</h1>");
        pdf.replaceText(PageSelection.firstPage(), ".NET6", ".NET7");
        pdf.saveAs("replaceText.pdf");
    }
}
 :title=Quickstart Replace Text
//:path=/static-assets/pdf/content-code-examples/how-to/find-replace-text/quickstart.java
import com.ironsoftware.ironpdf.*;
import com.ironsoftware.ironpdf.edit.PageSelection;
import java.io.IOException;

public class App {
    public static void main(String[] args) throws IOException {
        License.setLicenseKey("IRONPDF-MYLICENSE-KEY-1EF01");
        PdfDocument pdf = PdfDocument.renderHtmlAsPdf("<h1>.NET6</h1>");
        pdf.replaceText(PageSelection.firstPage(), ".NET6", ".NET7");
        pdf.saveAs("replaceText.pdf");
    }
}
JAVA

¿Cómo reemplazar texto en una sola página?

El método replaceText acepta tres argumentos: un PageSelection que dirige a una o más páginas, el texto exacto a encontrar y la cadena de reemplazo. Para dirigirse a la primera página, pasa PageSelection.firstPage(). Todas las instancias de la cadena de búsqueda en esa página se reemplazan en una sola llamada. Si el texto no puede encontrarse en las páginas seleccionadas, el método lanza una excepción en tiempo de ejecución. La captura de pantalla a continuación muestra cómo se ve esa excepción en la consola.

Salida de consola de IronPDF mostrando una Exception_RemoteException cuando no se puede encontrar el texto objetivo '.NET7' durante replaceText

¿Qué parámetros acepta replaceText?

La firma del método es replaceText(PageSelection pageSelection, String oldText, String newText). La coincidencia distingue mayúsculas de minúsculas por defecto: "net6" y "NET6" se tratan como cadenas diferentes. Verifica la exactitud de las mayúsculas y minúsculas en el PDF renderizado antes de llamar al método. Puedes confirmar el texto exacto extrayendo primero el contenido de texto del PDF. La dependencia Java de IronPDF se publica en Maven Central y requiere Java 8 o posterior.

 :title=Replace Text on First Page
//:path=/static-assets/pdf/content-code-examples/how-to/find-replace-text/replace-text-single-page.java
import com.ironsoftware.ironpdf.*;
import com.ironsoftware.ironpdf.edit.PageSelection;
import java.io.IOException;

public class App {

    public static void main(String[] args) throws IOException {

        // Set the IronPDF license key (required for production use)
        License.setLicenseKey("IRONPDF-MYLICENSE-KEY-1EF01");

        // Render HTML content into a PDF document
        PdfDocument pdf = PdfDocument.renderHtmlAsPdf("<h1>.NET6</h1>");

        // Define the search and replacement strings
        String oldText = ".NET6";
        String newText = ".NET7";

        // Replace all instances of oldText on the first page only
        // PageSelection.firstPage() targets page index 0
        pdf.replaceText(PageSelection.firstPage(), oldText, newText);

        // Save the modified PDF
        pdf.saveAs("replaceText.pdf");
    }
}
 :title=Replace Text on First Page
//:path=/static-assets/pdf/content-code-examples/how-to/find-replace-text/replace-text-single-page.java
import com.ironsoftware.ironpdf.*;
import com.ironsoftware.ironpdf.edit.PageSelection;
import java.io.IOException;

public class App {

    public static void main(String[] args) throws IOException {

        // Set the IronPDF license key (required for production use)
        License.setLicenseKey("IRONPDF-MYLICENSE-KEY-1EF01");

        // Render HTML content into a PDF document
        PdfDocument pdf = PdfDocument.renderHtmlAsPdf("<h1>.NET6</h1>");

        // Define the search and replacement strings
        String oldText = ".NET6";
        String newText = ".NET7";

        // Replace all instances of oldText on the first page only
        // PageSelection.firstPage() targets page index 0
        pdf.replaceText(PageSelection.firstPage(), oldText, newText);

        // Save the modified PDF
        pdf.saveAs("replaceText.pdf");
    }
}
JAVA

ConsejosCarga la clave de licencia una vez al inicio de la aplicación en lugar de antes de cada operación individual. Esto evita la sobrecarga de inicialización repetida al procesar múltiples documentos en la misma sesión JVM.

El método replaceText se integra naturalmente con el flujo de trabajo de conversión de HTML a PDF de IronPDF. Primero renderiza la plantilla HTML, luego aplica el reemplazo de texto para inyectar valores dinámicos. Esto mantiene tu HTML limpio mientras sigue produciendo un resultado personalizado. Para documentos cargados desde el disco, pasa la ruta del archivo a PdfDocument.fromFile en lugar de usar renderHtmlAsPdf.

¿Qué aspecto tiene el resultado?


¿Cómo reemplazo texto en múltiples páginas?

Para dirigirse a páginas específicas en lugar de solo la primera, pasa una lista de números de página indexados desde cero a PageSelection.pageRange(List<Integer>). El método reemplaza el texto de búsqueda en cada página de la lista y deja todas las demás páginas intactas. Este patrón se adapta a documentos con encabezados o pies de página consistentes en páginas conocidas, o informes generados en lotes donde una cadena de versión solo aparece en ciertas páginas.

¿Qué páginas se modifican al usar una lista de páginas?

En el ejemplo a continuación, se crea un PDF de tres páginas desde HTML. El reemplazo se ejecuta en las páginas 0 y 2 (la primera y tercera páginas). La página 1 (la segunda página) mantiene el texto original sin cambios. Los índices de página siempre comienzan en 0, consistente con las convenciones de arreglo basado en cero de Java.

 :title=Replace Text on Multiple Specific Pages
//:path=/static-assets/pdf/content-code-examples/how-to/find-replace-text/replace-text-multiple-pages.java
import com.ironsoftware.ironpdf.*;
import com.ironsoftware.ironpdf.edit.PageSelection;
import java.io.IOException;
import java.util.Arrays;
import java.util.List;

public class App {

    public static void main(String[] args) throws IOException {

        // Set the IronPDF license key
        License.setLicenseKey("IRONPDF-MYLICENSE-KEY-1EF01");

        // Build a 3-page PDF from HTML using CSS page breaks
        String html = "<p> .NET6 </p>" +
                      "<p> This is 1st Page </p>" +
                      "<div style='page-break-after: always;'></div>" +
                      "<p> This is 2nd Page</p>" +
                      "<div style='page-break-after: always;'></div>" +
                      "<p> .NET6 </p>" +
                      "<p> This is 3rd Page</p>";

        PdfDocument pdf = PdfDocument.renderHtmlAsPdf(html);

        String oldText = ".NET6";
        String newText = ".NET7";

        // Pages are zero-indexed: 0 = first page, 2 = third page
        // Page index 1 (second page) is intentionally excluded
        List<Integer> pages = Arrays.asList(0, 2);

        pdf.replaceText(PageSelection.pageRange(pages), oldText, newText);

        pdf.saveAs("replaceTextOnMultiplePages.pdf");
    }
}
 :title=Replace Text on Multiple Specific Pages
//:path=/static-assets/pdf/content-code-examples/how-to/find-replace-text/replace-text-multiple-pages.java
import com.ironsoftware.ironpdf.*;
import com.ironsoftware.ironpdf.edit.PageSelection;
import java.io.IOException;
import java.util.Arrays;
import java.util.List;

public class App {

    public static void main(String[] args) throws IOException {

        // Set the IronPDF license key
        License.setLicenseKey("IRONPDF-MYLICENSE-KEY-1EF01");

        // Build a 3-page PDF from HTML using CSS page breaks
        String html = "<p> .NET6 </p>" +
                      "<p> This is 1st Page </p>" +
                      "<div style='page-break-after: always;'></div>" +
                      "<p> This is 2nd Page</p>" +
                      "<div style='page-break-after: always;'></div>" +
                      "<p> .NET6 </p>" +
                      "<p> This is 3rd Page</p>";

        PdfDocument pdf = PdfDocument.renderHtmlAsPdf(html);

        String oldText = ".NET6";
        String newText = ".NET7";

        // Pages are zero-indexed: 0 = first page, 2 = third page
        // Page index 1 (second page) is intentionally excluded
        List<Integer> pages = Arrays.asList(0, 2);

        pdf.replaceText(PageSelection.pageRange(pages), oldText, newText);

        pdf.saveAs("replaceTextOnMultiplePages.pdf");
    }
}
JAVA

Por favor notaTodos los índices de página en IronPDF siguen un índice basado en cero. La página 0 es la primera página, la página 1 es la segunda, y así sucesivamente.]

Al crear PDFs de múltiples páginas desde HTML, utiliza la propiedad page-break-after de CSS para controlar dónde caen los límites de página. Configurar el tamaño de papel personalizado correcto y la orientación de la página antes de renderizar asegura que las posiciones del contenido coincidan con sus expectativas cuando se ejecuta el reemplazo de texto. Después de guardar, verifique el resultado abriendo el PDF y confirmando que solo las páginas objetivo cambiaron.

¿Qué aspecto tiene el resultado?


Icon Quote related to ¿Qué aspecto tiene el resultado?

Mi biblioteca favorita de este tipo es IronPDF. Permite una manipulación rápida y eficiente de archivos PDF. También tiene muchas funciones valiosas, como exportar al formato PDF/A y firmar documentos PDF digitalmente.

Milan Jovanovic related to ¿Qué aspecto tiene el resultado?

Milan Jovanovic

Microsoft MVP

Ver estudio de caso
Icon Quote related to ¿Qué aspecto tiene el resultado?

IronOCR significa que podemos ahorrar $40,000 anualmente en el procesamiento manual, mientras mejoramos la productividad y liberamos recursos para tareas de alto impacto. Lo recomendaría encarecidamente.

Brent Matzelle related to ¿Qué aspecto tiene el resultado?

Brent Matzelle

Director de Tecnología, OPYN

Ver estudio de caso
Icon Quote related to ¿Qué aspecto tiene el resultado?

El Iron Suite juega un papel crucial en nuestras operaciones. Estas son herramientas que aumentan la eficiencia en toda la empresa, incluyendo la creación de planos y la mejora en la gestión de inventario.

David Jones related to ¿Qué aspecto tiene el resultado?

David Jones

Ingeniero de Software Principal, Agorus Build

Ver estudio de caso

¿Qué opciones de selección de página hay disponibles?

La clase PageSelection proporciona métodos de fábrica estáticos que cubren todos los patrones comunes de direccionamiento. No se necesita creación de instancias; llame a los métodos directamente en la clase. Todos los índices son basados en cero.

¿Qué métodos apuntan a una sola página vs. múltiples páginas?

| Método | Descripción| |---|---| | `PageSelection.allPages()` |Selecciona cada página en el documento| | `PageSelection.firstPage()` |Selecciona la página en el índice `0`| | `PageSelection.lastPage()` |Selecciona la última página independientemente de la longitud del documento| | `PageSelection.singlePage(int pageIndex)` |Selecciona una página específica por índice basado en cero| | `PageSelection.pageRange(int startIndex, int endIndex)` |Selecciona un rango contiguo desde `startIndex` hasta `endIndex` inclusive| | `PageSelection.pageRange(List pageList)` |Selecciona páginas en cualquier conjunto arbitrario de índices (por ejemplo, `[0, 2]` selecciona las páginas 1 y 3)|
Métodos de fábrica PageSelection para la API replaceText

¿Cuándo debo utilizar cada método PageSelection?

allPages() es la opción más simple para una búsqueda y reemplazo global: cada instancia del texto objetivo a través de todo el documento se reemplaza en una sola llamada. Usa firstPage() o lastPage() para ediciones rápidas que cubran las páginas de portada o pies de página sin tocar el cuerpo. Elige pageRange(int, int) cuando el texto aparezca en un conjunto secuencial de páginas, como un capítulo o sección. Usa pageRange(List<Integer>) cuando las páginas objetivo sean no contiguas; por ejemplo, al reemplazar una cadena de versión que solo aparece en las páginas 1, 3 y 7.

Al trabajar con PDFs fusionados o documentos que incluyen marcadores y esquemas, identifique primero el rango de páginas para cada sección lógica, luego aplique reemplazos específicos para evitar modificar encabezados o pies de página compartidos de manera accidental. La referencia de API de IronPDF for Java lista todas las sobrecargas de PageSelection con documentación completa de parámetros.

ImportanteEnvuelve las llamadas replaceText en un bloque try-catch. El método lanza una excepción en tiempo de ejecución cuando el texto de búsqueda especificado no se encuentra en ninguna de las páginas objetivo. Un paso de validación (extracción de texto y confirmación de que la cadena está presente) previene fallos inesperados en producción.

¿Cómo reemplazo texto en todas las páginas de una vez?

PageSelection.allPages() realiza un reemplazo en todo el documento en una sola llamada, lo cual es el acercamiento más eficiente para la sustitución global de tokens. El siguiente ejemplo carga un PDF del disco y reemplaza cada ocurrencia de un token de marcador de posición en todo el documento:

 :title=Replace Text on All Pages
//:path=/static-assets/pdf/content-code-examples/how-to/find-replace-text/replace-text-all-pages.java
import com.ironsoftware.ironpdf.*;
import com.ironsoftware.ironpdf.edit.PageSelection;
import java.io.IOException;
import java.nio.file.Paths;

public class App {

    public static void main(String[] args) throws IOException {

        // Set the IronPDF license key
        License.setLicenseKey("IRONPDF-MYLICENSE-KEY-1EF01");

        // Load an existing PDF from disk
        PdfDocument pdf = PdfDocument.fromFile(Paths.get("contract-template.pdf"));

        // Replace the placeholder token on every page simultaneously
        // This is equivalent to calling replaceText for each page individually
        pdf.replaceText(PageSelection.allPages(), "{{VERSION}}", "2.0");

        // Save the updated document
        pdf.saveAs("contract-v2.pdf");
    }
}
 :title=Replace Text on All Pages
//:path=/static-assets/pdf/content-code-examples/how-to/find-replace-text/replace-text-all-pages.java
import com.ironsoftware.ironpdf.*;
import com.ironsoftware.ironpdf.edit.PageSelection;
import java.io.IOException;
import java.nio.file.Paths;

public class App {

    public static void main(String[] args) throws IOException {

        // Set the IronPDF license key
        License.setLicenseKey("IRONPDF-MYLICENSE-KEY-1EF01");

        // Load an existing PDF from disk
        PdfDocument pdf = PdfDocument.fromFile(Paths.get("contract-template.pdf"));

        // Replace the placeholder token on every page simultaneously
        // This is equivalent to calling replaceText for each page individually
        pdf.replaceText(PageSelection.allPages(), "{{VERSION}}", "2.0");

        // Save the updated document
        pdf.saveAs("contract-v2.pdf");
    }
}
JAVA

Este patrón combina naturalmente con flujos de trabajo basados en plantillas donde el mismo marcador de posición aparece en encabezados, pies de página o texto del cuerpo en muchas páginas. Para documentos de una sola página, allPages() y firstPage() producen resultados idénticos. Prefiere allPages() cuando el conteo de páginas pueda variar en tiempo de ejecución.


¿Cómo manejo escenarios comunes de reemplazo de texto?

El reemplazo de texto en aplicaciones Java cubre varios patrones que van más allá de una simple búsqueda y reemplazo. Comprender cómo se comporta el método en cada caso previene errores antes de que aparezcan en producción.

¿Cómo afecta el emparejamiento con distinción de mayúsculas y minúsculas los resultados?

replaceText realiza coincidencias exactas, sensibles a mayúsculas y minúsculas. Las cadenas "Version 1.0", "version 1.0", y "VERSION 1.0" se tratan como tres valores distintos. Antes de ejecutar un reemplazo en un documento cargado desde el disco, confirme el uso exacto de mayúsculas y minúsculas revisando la fuente original o extrayendo texto del PDF e inspeccionándolo programáticamente.

¿Cómo reemplazo texto en formularios PDF?

Los PDFs que contienen campos de formulario interactivos almacenan sus valores de texto por separado del flujo de contenido del documento, según lo definido en la especificación PDF. El método replaceText opera en el flujo de contenido y no modifica los valores de los campos de formulario. Para actualizar texto dentro de los campos de formulario, use la API dedicada para creación y edición de formularios de IronPDF. Combinar ambos enfoques en el mismo documento es seguro: las actualizaciones de campos de formulario y los reemplazos de flujo de contenido no interfieren entre sí.

¿Cómo actualizo texto en flujos de trabajo basados en plantillas?

Un patrón común es mantener una plantilla PDF con tokens de marcador de posición (por ejemplo {{CUSTOMER_NAME}} o [INVOICE_DATE]) y reemplazarlos en tiempo de ejecución con valores reales. Llama a replaceText una vez por marcador de posición, usando PageSelection.allPages() para que el reemplazo cubra cada ubicación donde aparece el token. Para documentos generados desde HTML, este flujo de trabajo funciona igualmente bien con renderHtmlAsPdf seguido de una serie de llamadas de reemplazo. Combínelo con marca de agua PDF o fondos y primeros planos para agregar branding o marcas de confidencialidad al resultado final.

¿Cuáles son los próximos pasos para el reemplazo de texto en PDF en Java?

Esta guía cubrió el reemplazo de una sola página con PageSelection.firstPage(), el reemplazo selectivo de múltiples páginas con PageSelection.pageRange(), el reemplazo a nivel de documento con PageSelection.allPages(), y el conjunto completo de métodos de la fábrica PageSelection. La misma API de replaceText funciona ya sea que el documento haya sido renderizado desde HTML, cargado desde el disco o ensamblado al fusionar múltiples fuentes.

Inicie una prueba gratuita de IronPDF for Java y ejecute los ejemplos de código anteriores con sus propios documentos. Cuando esté listo para desplegar en producción, revise las opciones de licencia. Las licencias son por desarrollador e incluyen un año de actualizaciones de producto.

¿Listo para ver qué más puede hacer IronPDF for Java? Explore las guías completas de cómo-hacer de IronPDF for Java para tutoriales sobre generación de PDFs, anotación, firmas digitales, compresión y más.

Preguntas Frecuentes

¿Cómo se sustituye el texto de un PDF con Java?

Usa el método replaceText de IronPDF. Llama a pdf.replaceText(PageSelection.firstPage(), "oldText", "newText") para reemplazar todas las instancias del texto antiguo en la página especificada. IronPDF encuentra y reemplaza cada ocurrencia mientras preserva el formato original.

¿Qué parámetros acepta el método replaceText?

El método acepta tres parámetros: un PageSelection para especificar qué páginas modificar, un String con el texto a encontrar, y un String con el texto de reemplazo. Por ejemplo, pdf.replaceText(PageSelection.firstPage(), ".NET6", ".NET7") reemplaza todas las instancias en la primera página.

¿Puedo sustituir texto sólo en determinadas páginas?

Sí. Usa PageSelection.firstPage() para la página 0, PageSelection.lastPage() para la última página, PageSelection.singlePage(n) para cualquier página por índice basado en cero, o PageSelection.pageRange() con una lista de enteros para páginas no contiguas.

¿Qué ocurre si no se encuentra el texto a reemplazar?

IronPDF lanza una excepción en tiempo de ejecución (Exception_RemoteException) cuando no se puede encontrar el texto objetivo en las páginas seleccionadas. Envuelve la llamada en un bloque try-catch y opcionalmente extrae el texto del PDF primero para verificar que la cadena exista antes de llamar a replaceText.

¿La coincidencia de texto distingue entre mayúsculas y minúsculas?

Sí. El método replaceText realiza una coincidencia exacta y distingue mayúsculas de minúsculas. Las cadenas "Version 1.0", "version 1.0", y "VERSION 1.0" se tratan como tres valores distintos. Verifica el caso exacto antes de llamar al método.

¿El replaceText modifica los valores de los campos de formulario?

No. El método replaceText opera en el flujo de contenido del PDF y no modifica los valores de campos de formulario interactivos. Para actualizar los campos de formulario, usa la API dedicada a la edición de formularios de IronPDF a través de los métodos de formulario de PdfDocument.

¿Cómo reemplazo un token en todas las páginas de una vez?

Usa PageSelection.allPages() como el primer argumento de replaceText. Esto reemplaza cada instancia del texto objetivo en todas las páginas en una sola llamada, lo que es el enfoque preferido para flujos de trabajo orientados por plantillas con marcadores de posición a nivel de documento.

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
¿Listo para empezar?
Versión: 2026.6 recién publicada
Still Scrolling Icon

¿Aún desplazándote?

¿Quieres una prueba rápida?
ejecutar una muestra Mira cómo tu HTML se convierte en PDF.