Extrair e Salvar um Anexo
Obter Anexos de um Documento PDF
Com o Aspose.PDF, é possível obter todos os anexos de um documento PDF. Isso é útil tanto quando você deseja salvar os documentos separadamente do PDF, quanto se precisar remover anexos de um PDF.
Os seguintes trechos de código mostram como obter todos os anexos de um documento PDF.
public static void GetAttachmentsFromPDFDocument() {
// Abrir documento
Document pdfDocument = new Document(_dataDir+"input.pdf");
// Obter arquivo incorporado específico
FileSpecification fileSpecification = pdfDocument.getEmbeddedFiles().get_Item(1);
// Obter as propriedades do arquivo
System.out.printf("Nome: - " + fileSpecification.getName());
System.out.printf("\nDescrição: - " + fileSpecification.getDescription());
System.out.printf("\nTipo Mime: - " + fileSpecification.getMIMEType());
// Obter anexo do arquivo PDF
try {
InputStream input = fileSpecification.getContents();
File file = new File(fileSpecification.getName());
// Criar caminho para o arquivo a partir do pdf
file.getParentFile().mkdirs();
// Criar e extrair arquivo do pdf
java.io.FileOutputStream output = new java.io.FileOutputStream(fileSpecification.getName(), true);
byte[] buffer = new byte[4096];
int n = 0;
while (-1 != (n = input.read(buffer)))
output.write(buffer, 0, n);
// Fechar objeto InputStream
input.close();
output.close();
} catch (IOException e) {
e.printStackTrace();
}
// Fechar objeto Document
pdfDocument.dispose();
}
Obter Informações do Anexo
Conforme mencionado em Obter Anexos de um Documento PDF, as informações do anexo são mantidas no objeto FileSpecification, reunidas com outros anexos na coleção EmbeddedFiles do objeto Document.
O objeto FileSpecification fornece métodos que obtêm informações sobre o anexo, por exemplo:
- getName() – obtém o nome do arquivo.
- getDescription() – obtém a descrição do arquivo.
- getMIMEType() – obtém o tipo MIME do arquivo.
- getParams() – informações sobre os parâmetros do arquivo, por exemplo CheckSum, CreationDate, ModDate e Size.
Para obter esses parâmetros, primeiro certifique-se de que o método getParams() não retorne nulo.
Você pode percorrer todos os anexos na coleção EmbeddedFiles usando um loop for, ou obter um anexo individual especificando seu valor de índice. O seguinte trecho de código mostra como obter informações sobre um anexo específico.
public static void GetAttachmentInformation() {
// Abrir documento
Document pdfDocument = new Document(_dataDir+"input.pdf");
// Obter arquivo incorporado específico
FileSpecification fileSpecification = pdfDocument.getEmbeddedFiles().get_Item(1);
// Obter as propriedades do arquivo
System.out.println("Nome:-" + fileSpecification.getName());
System.out.println("Descrição:- " + fileSpecification.getDescription());
System.out.println("Tipo Mime:-" + fileSpecification.getMIMEType());
// Verificar se o objeto de parâmetro contém os parâmetros
if (fileSpecification.getParams() != null) {
System.out.println("CheckSum:- " + fileSpecification.getParams().getCheckSum());
System.out.println("Data de Criação:- " + fileSpecification.getParams().getCreationDate());
System.out.println("Data de Modificação:- " + fileSpecification.getParams().getModDate());
System.out.println("Tamanho:- " + fileSpecification.getParams().getSize());
}