Los metadatos dentro de los archivos PDF incluyen detalles críticos sobre el documento, incluido el título, el autor, las fechas de creación y modificación, las palabras clave y otros datos pertinentes. La extracción de estos metadatos puede ofrecer ventajas significativas para una variedad de aplicaciones, desde sistemas de gestión de documentos hasta análisis de datos y tareas de automatización. Este artículo explorará el proceso de cómo leer metadatos de PDF usando Java. Aquí hay un desglose paso a paso del procedimiento, acompañado de un código de ejemplo para ilustrar cómo leer metadatos de PDF usando Java.
Pasos para leer metadatos de PDF usando Java
- Configure su IDE para utilizar GroupDocs.Metadata for Java para extraer metadatos de archivos PDF
- Crear una instancia de un objeto Metadata utilizando la ruta del archivo PDF como argumento para su constructor
- Establecer reglas para verificar la información de metadatos recopilados
- Proporcionar una condición para emplear el método Metadata.findProperties
- Iterar a través de cada propiedad individualmente
La extracción de metadatos de archivos PDF utilizando Java brinda a los desarrolladores información valiosa sobre las propiedades del documento, como título, autoría, fechas de creación y modificación, y palabras clave. Estos datos desempeñan un papel fundamental en los sistemas de gestión de documentos, el análisis de datos y los flujos de trabajo automatizados. Puede seguir las instrucciones proporcionadas en Windows, macOS o Linux, siempre que Java esté instalado. No se requieren instalaciones de software adicionales para extraer metadatos de PDF en Java. Después de configurar la biblioteca recomendada y ajustar las rutas de los archivos según sea necesario, integrar el siguiente código en sus proyectos debería ser sencillo y sin complicaciones ni dificultades.
Código para leer metadatos de PDF usando Java
import com.groupdocs.metadata.Metadata; | |
import com.groupdocs.metadata.core.FileFormat; | |
import com.groupdocs.metadata.core.IReadOnlyList; | |
import com.groupdocs.metadata.core.MetadataProperty; | |
import com.groupdocs.metadata.core.MetadataPropertyType; | |
import com.groupdocs.metadata.licensing.License; | |
import com.groupdocs.metadata.search.FallsIntoCategorySpecification; | |
import com.groupdocs.metadata.search.OfTypeSpecification; | |
import com.groupdocs.metadata.search.Specification; | |
import com.groupdocs.metadata.tagging.Tags; | |
import java.util.Calendar; | |
import java.util.Date; | |
import java.util.regex.Matcher; | |
import java.util.regex.Pattern; | |
public class ReadMetadataFromPDFUsingJava { | |
public static void main(String[] args) { | |
// Set License to avoid the limitations of Metadata library | |
License license = new License(); | |
license.setLicense("GroupDocs.Metadata.lic"); | |
Metadata metadata = new Metadata("input.pdf"); | |
if (metadata.getFileFormat() != FileFormat.Unknown && !metadata.getDocumentInfo().isEncrypted()) { | |
System.out.println(); | |
// Fetch all metadata properties that fall into a particular category | |
IReadOnlyList<MetadataProperty> properties = metadata.findProperties(new FallsIntoCategorySpecification(Tags.getContent())); | |
System.out.println("The metadata properties describing some characteristics of the file content: title, keywords, language, etc."); | |
for (MetadataProperty property : properties) { | |
System.out.println(String.format("Property name: %s, Property value: %s", property.getName(), property.getValue())); | |
} | |
// Fetch all properties having a specific type and value | |
int year = Calendar.getInstance().get(Calendar.YEAR); | |
properties = metadata.findProperties(new OfTypeSpecification(MetadataPropertyType.DateTime).and(new ReadMetadataFromPDFUsingJava().new YearMatchSpecification(year))); | |
System.out.println("All datetime properties with the year value equal to the current year"); | |
for (MetadataProperty property : properties) { | |
System.out.println(String.format("Property name: %s, Property value: %s", property.getName(), property.getValue())); | |
} | |
// Fetch all properties whose names match the specified regex | |
Pattern pattern = Pattern.compile("^author|company|(.+date.*)$", Pattern.CASE_INSENSITIVE); | |
properties = metadata.findProperties(new ReadMetadataFromPDFUsingJava().new RegexSpecification(pattern)); | |
System.out.println(String.format("All properties whose names match the following regex: %s", pattern.pattern())); | |
for (MetadataProperty property : properties) { | |
System.out.println(String.format("Property name: %s, Property value: %s", property.getName(), property.getValue())); | |
} | |
} | |
} | |
// Define your own specifications to filter metadata properties | |
public class YearMatchSpecification extends Specification { | |
public YearMatchSpecification(int year) { | |
setValue(year); | |
} | |
public final int getValue() { | |
return auto_Value; | |
} | |
private void setValue(int value) { | |
auto_Value = value; | |
} | |
private int auto_Value; | |
public boolean isSatisfiedBy(MetadataProperty candidate) { | |
Date date = candidate.getValue().toClass(Date.class); | |
if (date != null) { | |
Calendar calendar = Calendar.getInstance(); | |
calendar.setTime(date); | |
return getValue() == calendar.get(Calendar.YEAR); | |
} | |
return false; | |
} | |
} | |
public class RegexSpecification extends Specification { | |
private Pattern pattern; | |
public RegexSpecification(Pattern pattern) { | |
this.pattern = pattern; | |
} | |
@Override | |
public boolean isSatisfiedBy(MetadataProperty metadataProperty) { | |
Matcher matcher = pattern.matcher(metadataProperty.getName()); | |
return matcher.find(); | |
} | |
} | |
} |
En resumen, este artículo ofrece una guía detallada sobre cómo obtener metadatos de PDF en Java. Con la biblioteca de metadatos, los desarrolladores pueden recuperar de manera efectiva información crucial como títulos de documentos, detalles del autor, fechas de creación y modificación y palabras clave de documentos PDF. Dominar las técnicas de extracción de metadatos en Java permite a los desarrolladores crear aplicaciones sólidas para la gestión de documentos, el análisis de datos y la automatización. Le recomendamos que experimente con varios archivos PDF y explore propiedades de metadatos adicionales para mejorar aún más las capacidades de extracción de metadatos en aplicaciones Java.
En una conversación anterior, presentamos un tutorial detallado sobre cómo extraer metadatos de archivos PPTX usando Java. Para una comprensión más profunda de este tema, sugerimos consultar nuestra guía completa sobre cómo leer metadatos de PPTX usando Java.