Editar metadados de arquivos PDF usando Java

Os metadados de um documento contêm informações básicas sobre o documento na forma de propriedades como título, autor, assunto, palavras-chave, etc. A Extensible Metadata Platform (XMP) é um padrão baseado em XML para armazenar metadados de documentos como chave/valor par. Podemos adicionar, editar ou ler as informações do documento e metadados XMP de um documento PDF programaticamente. Neste artigo, aprenderemos como editar propriedades e metadados de PDF usando Java.

Os seguintes tópicos serão abordados neste artigo:

API Java para editar propriedades e metadados de PDF

Para editar PDF propriedades e informações de metadados, usaremos Aspose.PDF for Java API. Ele nos permite gerar, modificar, converter, renderizar, proteger e imprimir documentos suportados sem usar o Adobe Acrobat. Faça o download do JAR da API ou adicione a seguinte configuração pom.xml em um aplicativo Java baseado em Maven.

<repository>
    <id>AsposeJavaAPI</id>
    <name>Aspose Java API</name>
    <url>https://repository.aspose.com/repo/</url>
</repository>
<dependency>
    <groupId>com.aspose</groupId>
    <artifactId>aspose-pdf</artifactId>
    <version>22.3</version>
</dependency>

Editar propriedades de PDF usando Java

Podemos editar as informações do documento PDF usando a classe PdfFileInfo que representa a meta-informação de um documento PDF. Podemos definir várias propriedades predefinidas seguindo as etapas abaixo:

  1. Primeiramente, carregue um documento PDF usando a classe PdfFileInfo.
  2. Defina várias propriedades, como Autor, Criador, Palavras-chave, Assunto, Título, etc.
  3. Por fim, salve o arquivo PDF usando o método saveNewInfo() com o caminho do arquivo de saída como argumento.

O exemplo de código a seguir mostra como editar propriedades meta de um arquivo PDF usando Java.

// Este exemplo de código demonstra como definir as informações básicas de um documento PDF.
// Documento de código aberto
PdfFileInfo fileInfo = new PdfFileInfo("D:\\Files\\PDF\\sample.pdf");

// Definir informações do PDF
fileInfo.setAuthor("Aspose");
fileInfo.setTitle("Editing Metadata");
fileInfo.setKeywords("Aspose.Pdf, DOM, API");
fileInfo.setSubject("PDF Information");
fileInfo.setCreator("Aspose");

// Salvar arquivo atualizado
fileInfo.saveNewInfo("D:\\Files\\PDF\\Updated_Info_output.pdf");
Edite as propriedades Meta de um arquivo PDF em Java.

Edite as propriedades Meta de um arquivo PDF em Java.

Ler propriedades de PDF usando Java

Podemos ler as informações básicas de um documento PDF seguindo os passos abaixo:

  1. Primeiramente, carregue um documento PDF usando a classe PdfFileInfo.
  2. Por fim, mostre as informações do documento lendo os valores das metapropriedades.

O exemplo de código a seguir mostra como obter propriedades meta de um arquivo PDF usando Java.

// Este exemplo de código demonstra como obter as informações básicas de um documento PDF.
// Abrir documento
PdfFileInfo fileInfo = new PdfFileInfo("D:\\Files\\PDF\\Updated_Info_output.pdf");

// Obter informações em PDF
System.out.println("Subject :" + fileInfo.getSubject());
System.out.println("Title :" + fileInfo.getTitle());
System.out.println("Keywords :" + fileInfo.getKeywords());
System.out.println("Creator :" + fileInfo.getCreator());
System.out.println("Creation Date :" + fileInfo.getCreationDate());
System.out.println("Modification Date :" + fileInfo.getModDate());

// Descubra se é um PDF válido e também criptografado
System.out.println("Is Valid PDF :" + fileInfo.isPdfFile());
// caso o arquivo esteja criptografado, você precisa fornecer a senha de abertura do arquivo
// como segundo argumento para o construtor PdfFileInfo
System.out.println("Is Encrypted :" + fileInfo.isEncrypted());
Subject :PDF Information
Title :Editing Metadata
Keywords :Aspose.Pdf, DOM, API
Creator :Aspose
Creation Date :D:20170612160123-04'00'
Modification Date :D:20220405214422+05'00'
Is Valid PDF :true
Is Encrypted :false

Obter metadados XMP de um arquivo PDF em Java

Podemos ler os metadados XMP de um documento PDF seguindo as etapas abaixo:

  1. Primeiramente, carregue um documento PDF usando a classe Document.
  2. Por fim, leia os metadados usando o método getItem() da classe Metadata e extraia as informações.

O exemplo de código a seguir mostra como obter metadados XMP de um arquivo PDF usando Java.

// Este exemplo de código demonstra como obter os metadados XMP de um documento PDF.
// Abrir documento
Document pdfDocument = new Document("D:\\Files\\PDF\\SetXMPMetadata.pdf");

// Obter propriedades
System.out.println("xmp:CreateDate: " + pdfDocument.getMetadata().get_Item("xmp:CreateDate"));
System.out.println("xmp:Nickname: " + pdfDocument.getMetadata().get_Item("xmp:Nickname"));
System.out.println("xmp:CustomProperty: " + pdfDocument.getMetadata().get_Item("xmp:CustomProperty"));
xmp:CreateDate : 2022-04-05T10:05:24.4
xmp:Nickname : Nickname
xmp:CustomProperty : Custom Value

Definir metadados XMP em um arquivo PDF em Java

Podemos definir os metadados XMP em um arquivo PDF seguindo as etapas abaixo:

  1. Primeiramente, carregue um documento PDF usando a classe Document.
  2. Em seguida, defina os valores de metadados usando o método setItem() da classe Metadata.
  3. Por fim, salve o arquivo PDF usando o método Document.save() com o caminho do arquivo de saída como argumento.

O exemplo de código a seguir mostra como definir metadados XMP de um arquivo PDF usando Java.

// Este exemplo de código demonstra como definir os metadados XMP de um documento PDF.
// Abrir documento
Document pdfDocument = new Document("D:\\Files\\PDF\\sample.pdf");

// Definir propriedades
pdfDocument.getMetadata().set_Item("xmp:CreateDate", new XmpValue(new java.util.Date()));
pdfDocument.getMetadata().set_Item("xmp:Nickname", new XmpValue("Nickname"));
pdfDocument.getMetadata().set_Item("xmp:CustomProperty", new XmpValue("Custom Value"));

// Salvar documento
pdfDocument.save("D:\\Files\\PDF\\SetXMPMetadata.pdf");

Personalizar namespace de metadados XMP em um arquivo PDF

Podemos definir o URI do namespace personalizado em vez das especificações XMP definidas em um arquivo PDF. Para isso, a API fornece o método registerNamespaceUri na classe Metadata. Podemos criar um novo namespace de metadados com um prefixo seguindo as etapas abaixo:

  1. Primeiramente, carregue um documento PDF usando a classe Document.
  2. Em seguida, chame o método registerNamespaceUri() com um prefixo e URI de namespace como argumentos.
  3. Em seguida, defina os valores de metadados usando o método setItem().
  4. Por fim, salve o arquivo PDF usando o método Document.Save() com o caminho do arquivo de saída como argumento.

O exemplo de código a seguir mostra como definir o namespace de metadados personalizado em um arquivo PDF usando Java.

// Este exemplo de código demonstra como definir os metadados XMP personalizados de um documento PDF.
// Abrir documento
Document pdfDocument = new Document("D:\\Files\\PDF\\sample.pdf");

// Definir propriedades personalizadas
pdfDocument.getMetadata().registerNamespaceUri("myown", "http:// myown.xyz.com/xap/1.0/");
pdfDocument.getMetadata().set_Item("myown:ModifyDate", new XmpValue(new java.util.Date()));
pdfDocument.getMetadata().set_Item("myown:CreateDate", new XmpValue(new java.util.Date()));
pdfDocument.getMetadata().set_Item("myown:DeveloperName", new XmpValue("Developer Name"));
pdfDocument.getMetadata().set_Item("myown:MyProperty", new XmpValue("My Custom Value"));

// Salvar documento
pdfDocument.save("D:\\Files\\PDF\\CustomizedXMPMetadata.pdf");

Podemos ler as propriedades de metadados XMP personalizadas seguindo as etapas mencionadas anteriormente.

NamespaceUri: http:// myown.xyz.com/xap/1.0/
myown:ModifyDate: 2022-04-05T10:18:45.9
myown:CreateDate: 2022-04-05T10:18:45.9
myown:DeveloperName: Developer Name
myown:MyProperty: My Custom Value

Obtenha uma licença de API gratuita

Você pode experimentar a API sem limitações de avaliação solicitando uma licença temporária gratuita.

Conclusão

Neste artigo, aprendemos como:

  • adicionar/editar as informações básicas de um documento PDF usando Java;
  • defina/ obtenha os metadados XMP em um arquivo PDF usando Java;
  • defina o URI de namespace de metadados personalizado com um prefixo.

Além disso, você pode aprender mais sobre Aspose.PDF para API Java usando a documentação. Em caso de qualquer ambiguidade, não hesite em contactar-nos no fórum.

Veja também