Hola
Tengo un código en el cual quiero que en un pdf existente insertar salto de pagina cada vez que me encuentra una condición.
El problema que tengo es que cada vez que encuentra ese salto inserta la pagina pero no se lleva consigo el texto que viene debajo.
Aspose puede hacer esa tarea.
@davidtvr,
¿Podría proporcionar más detalles sobre sus condiciones con el PDF de entrada de muestra y el archivo PDF de salida esperado? Lo investigaremos pronto.
Hola, gracias por contestar.
Tenemos un pdf que analiza presupuesto, cada presupuesto en el pdf tiene un titulo(PTE). Pues bien queremos que delante de cada titulo no haga un salto de linea para poder separar cada presupuesto en un PDF.
Por ahora estamos haciendo pruebas, este es mi código:
String entrada = “C:\T\pdf\pte.pdf”;
String salida = “C:\T\pdfGenerado.pdf\”;
String lineaInsercion = “PTE004”;
// int pageNumberToInsertAfter = 1;
try {
// Cargar el archivo PDF de origen
Document sourceDocument = new Document(entrada);
// Crear un nuevo documento PDF de destino
Document destinationDocument = new Document();
// Obtener la colección de páginas del PDF de origen
PageCollection sourcePages = sourceDocument.getPages();
// Copiar todas las páginas del PDF de origen al PDF de destino
for (int i = 1; i <= sourcePages.size(); i++) {
Page pageToCopy = sourcePages.get_Item(i);
destinationDocument.getPages().add(pageToCopy);
// Extraer el texto de la página actual
TextFragmentAbsorber textAbsorber = new TextFragmentAbsorber();
pageToCopy.accept(textAbsorber);
TextFragmentCollection textFragments = textAbsorber.getTextFragments();
StringBuilder pageText = new StringBuilder();
for (TextFragment textFragment : textFragments) {
pageText.append(textFragment.getText());
}
// Verificar si se encuentra la línea de inserción en la página actual
if (pageText.toString().contains(lineaInsercion)) {
// Obtener el índice de la línea siguiente al string de búsqueda
int nextLineIndex = pageText.indexOf(lineaInsercion) + lineaInsercion.length();
String nextPageText = pageText.substring(nextLineIndex).trim();
// Agregar un salto de página después de la línea de inserción
destinationDocument.getPages().insert(i + 1);
i++; // Incrementar el contador para evitar copiar la página insertada nuevamente
// Crear un nuevo fragmento de texto con el contenido de la siguiente línea
TextFragment nextLineFragment = new TextFragment(nextPageText);
// Establecer propiedades de formato en el nuevo fragmento de texto
nextLineFragment.getTextState().setFontSize(textFragments.get_Item(1).getTextState().getFontSize());
nextLineFragment.getTextState().setFontStyle(textFragments.get_Item(1).getTextState().getFontStyle());
nextLineFragment.getTextState().setForegroundColor(textFragments.get_Item(1).getTextState().getForegroundColor());
// Agregar el fragmento de texto a la nueva página
destinationDocument.getPages().get_Item(i + 0).getParagraphs().add(nextLineFragment);
// Salir del bucle principal después de copiar el texto
break;
}
}
// Guardar el documento de destino con el salto de página después de cada línea de inserción
destinationDocument.save(salida);
System.out.println("Se ha insertado un salto de página después de cada cadena de comparación en el PDF de destino.");
// Cerrar los documentos PDF
sourceDocument.dispose();
destinationDocument.dispose();
} catch (Exception e) {
e.printStackTrace();
}
Me hace el salto de pagina, se lleva el texto que esta debajo, pero en la pagina inicial no elimina el texto que se ha bajado a la pagina nueva.
Habría alguna forma de poder realizarlo?
Un saludo
Muchas gracias.
@davidtvr
Tenemos que investigar la viabilidad de este requisito suyo. ¿Puede compartir amablemente un PDF de origen de muestra junto con un documento PDF esperado? Registraremos un ticket de investigación y compartiremos la identificación con usted.
Hola
Si os voy a adjuntar el PSF origen. Y en el PDF de salida nos gustaría que por ejemplo recogiese toda la información que contiene(Tablas y parrafos de información) el PTE002.- ESTRUCTURA LIBROS CONTABILIDAD hasta por PTE003.- LIBRO REGISTRO DE EMPRESAS ASOCIADAS.PDF_EJEMPLO_PETICIONES.pdf (536.5 KB)
Espero les sirva.
Un saludo
@davidtvr
Hemos abierto los siguientes tickets nuevos en nuestro sistema interno de seguimiento de problemas y entregaremos sus correcciones de acuerdo con los términos mencionados en Free Support Policies.
ID(s) de problema: PDFNET-54914
Puede obtener Paid Support Services si necesita soporte de forma prioritaria, junto con el acceso directo a nuestro equipo de administración de soporte pagado.