Extrair Imagens usando PdfExtractor
Extrair Imagens do PDF Inteiro para Arquivos (Facades)
A classe PdfExtractor permite que você extraia imagens de um arquivo PDF.
Primeiro, você precisa criar um objeto da classe [PdfExtractor](https://reference.aspose.com/pdf/net/aspose.pdf.facades/pdfextractor) e vincular o arquivo PDF de entrada usando o método [BindPdf](https://reference.aspose.com/pdf/net/aspose.pdf.facades/facade/methods/bindpdf/index). Após isso, chame o método [ExtractImage](https://reference.aspose.com/pdf/net/aspose.pdf.facades/pdfextractor/methods/extractimage) para extrair todas as imagens para a memória. Uma vez que as imagens são extraídas, você pode obtê-las com a ajuda dos métodos [HasNextImage](https://reference.aspose.com/pdf/net/aspose.pdf.facades/pdfextractor/methods/hasnextimage) e [GetNextImage](https://reference.aspose.com/pdf/net/aspose.pdf.facades.pdfextractor/getnextimage/methods/1). Você precisa percorrer todas as imagens extraídas usando um loop while. Para salvar as imagens no disco, você pode chamar a sobrecarga do método [GetNextImage](https://reference.aspose.com/pdf/net/aspose.pdf.facades.pdfextractor/getnextimage/methods/1) que leva o caminho do arquivo como argumento. O seguinte trecho de código mostra como extrair imagens do PDF inteiro para arquivos.
```csharp
public static void ExtractImagesWholePDF()
{
// Open input PDF
PdfExtractor pdfExtractor = new PdfExtractor();
pdfExtractor.BindPdf(_dataDir + "sample_cats_dogs.pdf");
// Extract all the images
pdfExtractor.ExtractImage();
// Get all the extracted images
while (pdfExtractor.HasNextImage())
pdfExtractor.GetNextImage(_dataDir + DateTime.Now.Ticks.ToString() + "_out.jpg");
}
Extrair Imagens do PDF Completo para Fluxos (Facades)
A classe PdfExtractor permite que você extraia imagens de um arquivo PDF para fluxos. Primeiro, você precisa criar um objeto da classe PdfExtractor e vincular o arquivo PDF de entrada usando o método BindPdf.
```csharp
public static void ExtractImagesWholePDFStreams()
{
// Abrir PDF de entrada
PdfExtractor pdfExtractor = new PdfExtractor();
pdfExtractor.BindPdf(_dataDir + "sample_cats_dogs.pdf");
// Extrair imagens
pdfExtractor.ExtractImage();
// Obter todas as imagens extraídas
while (pdfExtractor.HasNextImage())
{
// Ler imagem na memória
MemoryStream memoryStream = new MemoryStream();
pdfExtractor.GetNextImage(memoryStream);
// Escrever no disco, se desejar, ou usar de outra forma.
FileStream fileStream = new
FileStream(_dataDir + DateTime.Now.Ticks.ToString() + "_out.jpg", FileMode.Create);
memoryStream.WriteTo(fileStream);
fileStream.Close();
}
}
Extrair Imagens de uma Página Específica de um PDF (Facades)
Você pode extrair imagens de uma página específica de um arquivo PDF. In order to do that, you need to set StartPage e EndPage propriedades para a página específica da qual você deseja extrair imagens. First of all, you need to create an object of PdfExtractor class and bind input PDF file using BindPdf method.
Antes de tudo, você precisa criar um objeto da classe PdfExtractor e vincular o arquivo PDF de entrada usando o método BindPdf. Secondly, you have to set StartPage * e EndPage propriedades. Depois disso, chame o método ExtractImage para extrair todas as imagens para a memória. Uma vez que as imagens são extraídas, você pode obtê-las com a ajuda dos métodos HasNextImage e GetNextImage. Você precisa percorrer todas as imagens extraídas usando um loop while. Você pode salvar as imagens no disco ou em um stream. Você só precisa chamar a sobrecarga apropriada do método GetNextImage. O trecho de código a seguir mostra como extrair imagens de uma página específica do PDF para streams.
public static void ExtractImagesParticularPage()
{
// Abra o PDF de entrada
PdfExtractor pdfExtractor = new PdfExtractor();
pdfExtractor.BindPdf(_dataDir + "sample_cats_dogs.pdf");
// Defina as propriedades StartPage e EndPage para o número da página da qual
// você deseja extrair imagens
pdfExtractor.StartPage = 2;
pdfExtractor.EndPage = 2;
// Extraia as imagens
pdfExtractor.ExtractImage();
// Obtenha as imagens extraídas
while (pdfExtractor.HasNextImage())
{
// Leia a imagem no stream de memória
MemoryStream memoryStream = new MemoryStream();
pdfExtractor.GetNextImage(memoryStream);
// Escreva no disco, se desejar, ou utilize de outra forma.
FileStream fileStream = new
FileStream(_dataDir + DateTime.Now.Ticks.ToString() + "_out.jpg", FileMode.Create);
memoryStream.WriteTo(fileStream);
fileStream.Close();
}
}
Extract Images from a Range of Pages of a PDF (Facades)
Você pode extrair imagens de um intervalo de páginas de um arquivo PDF. Para fazer isso, você precisa definir as propriedades StartPage e EndPage para o intervalo de páginas do qual deseja extrair imagens. First of all, you need to create an object of PdfExtractor class and bind input PDF file using BindPdf method.
Antes de tudo, você precisa criar um objeto da classe PdfExtractor e vincular o arquivo PDF de entrada usando o método BindPdf. Secondly, you have to set StartPage e EndPage propriedades. Depois disso, chame o método ExtractImage para extrair todas as imagens na memória. Uma vez que as imagens são extraídas, você pode obtê-las com a ajuda dos métodos HasNextImage e GetNextImage. Você precisa percorrer todas as imagens extraídas usando um loop while. Você pode salvar as imagens no disco ou em stream. Você só precisa chamar a sobrecarga apropriada do método GetNextImage. O trecho de código a seguir mostra como extrair imagens de um intervalo de páginas de um PDF para streams.
public static void ExtractImagesRangePages()
{
// Abrir PDF de entrada
PdfExtractor pdfExtractor = new PdfExtractor();
pdfExtractor.BindPdf(_dataDir + "sample_cats_dogs.pdf");
// Definir propriedades StartPage e EndPage para o número da página
// De onde você deseja extrair imagens
pdfExtractor.StartPage = 2;
pdfExtractor.EndPage = 2;
// Extrair imagens
pdfExtractor.ExtractImage();
// Obter imagens extraídas
while (pdfExtractor.HasNextImage())
{
// Ler imagem na memória
MemoryStream memoryStream = new MemoryStream();
pdfExtractor.GetNextImage(memoryStream);
// Escrever no disco, se desejar, ou usar de outra forma.
FileStream fileStream = new
FileStream(_dataDir + DateTime.Now.Ticks.ToString() + "_out.jpg", FileMode.Create);
memoryStream.WriteTo(fileStream);
fileStream.Close();
}
}
Extrair Imagens usando o Modo de Extração de Imagens (Fachadas)
A classe PdfExtractor permite que você extraia imagens de um arquivo PDF. Aspose.PDF suporta dois modos de extração; o primeiro é ActuallyUsedImage, que extrai as imagens realmente usadas no documento PDF. Second mode is DefinedInResources que extrai as imagens definidas nos recursos do documento PDF (modo de extração padrão). First, you need to create an object of PdfExtractor class and bind input PDF file using BindPdf method.
Primeiro, você precisa criar um objeto da classe PdfExtractor e vincular o arquivo PDF de entrada usando o método BindPdf. Após isso, especifique o modo de extração de imagem usando a propriedade PdfExtractor.ExtractImageMode. Em seguida, chame o método ExtractImage para extrair todas as imagens na memória, dependendo do modo que você especificou. Uma vez que as imagens são extraídas, você pode obtê-las com a ajuda dos métodos HasNextImage e GetNextImage. Você precisa percorrer todas as imagens extraídas usando um loop while. Para salvar as imagens no disco, você pode chamar a sobrecarga do método GetNextImage que leva o caminho do arquivo como argumento.
O seguinte trecho de código mostra como extrair imagens de um arquivo PDF usando a opção ExtractImageMode.
public static void ExtractImagesImageExtractionMode()
{
// Abrir PDF de entrada
PdfExtractor extractor = new PdfExtractor();
extractor.BindPdf(_dataDir + "sample_cats_dogs.pdf");
// Especificar o Modo de Extração de Imagem
//extractor.ExtractImageMode = ExtractImageMode.ActuallyUsed;
extractor.ExtractImageMode = ExtractImageMode.DefinedInResources;
// Extrair Imagens com base no Modo de Extração de Imagem
extractor.ExtractImage();
// Obter todas as imagens extraídas
while (extractor.HasNextImage())
{
extractor.GetNextImage(_dataDir + DateTime.Now.Ticks.ToString() + "_out.png", System.Drawing.Imaging.ImageFormat.Png);
}
}
Para verificar se o PDF contém Texto ou Imagens use o próximo trecho de código:
public static void CheckIfPdfContainsTextOrImages()
{
// Instanciar um objeto memoryStream para armazenar o texto extraído do Documento
MemoryStream ms = new MemoryStream();
// Instanciar objeto PdfExtractor
PdfExtractor extractor = new PdfExtractor();
// Vincular o documento PDF de entrada ao extrator
extractor.BindPdf(_dataDir + "FilledForm.pdf");
// Extrair texto do documento PDF de entrada
extractor.ExtractText();
// Salvar o texto extraído em um arquivo de texto
extractor.GetText(ms);
// Verificar se o comprimento do MemoryStream é maior ou igual a 1
bool containsText = ms.Length >= 1;
// Extrair imagens do documento PDF de entrada
extractor.ExtractImage();
// Chamando o método HasNextImage no loop while. Quando as imagens terminarem, o loop será encerrado
bool containsImage = extractor.HasNextImage();
// Agora descubra se este PDF é apenas texto ou apenas imagem
if (containsText && !containsImage)
Console.WriteLine("PDF contém apenas texto");
else if (!containsText && containsImage)
Console.WriteLine("PDF contém apenas imagem");
else if (containsText && containsImage)
Console.WriteLine("PDF contém tanto texto quanto imagem");
else if (!containsText && !containsImage)
Console.WriteLine("PDF não contém nem texto nem imagem");
}
}