Bildinformation i PDF-fil

Den här guiden tar dig steg för steg hur du extraherar information om bilder i PDF-fil med Aspose.PDF för .NET. Se till att du redan har konfigurerat din miljö och följ stegen nedan:

Steg 1: Definiera dokumentkatalogen

Se till att ställa in rätt dokumentkatalog. Byta ut"YOUR DOCUMENT DIRECTORY" i koden med sökvägen till katalogen där ditt PDF-dokument finns.

string dataDir = "YOUR DOCUMENT DIRECTORY";

Steg 2: Ladda käll-PDF-filen

I det här steget kommer vi att ladda käll-PDF-filen med hjälp avDocument klass av Aspose.PDF. AnvändDocument konstruktor och skicka sökvägen till PDF-dokumentet.

Document doc = new Document(dataDir + "ImageInformation.pdf");

Steg 3: Ställ in standardupplösning

I det här steget kommer vi att ställa in standardupplösningen för bilder. I exemplet är standardupplösningen inställd på 72.

int defaultResolution = 72;

Steg 4: Initiera objekt och räknare

I det här steget kommer vi att initiera de objekt och räknare som behövs för att hämta bildinformationen.

System.Collections.Stack graphicsState = new System.Collections.Stack();
System.Collections.ArrayList imageNames = new System.Collections.ArrayList(doc.Pages[1].Resources.Images.Names);

Steg 5: Bläddra genom operatorerna på dokumentets första sida

I det här steget går vi igenom operatörerna på dokumentets första sida för att identifiera bildrelaterade operationer.

foreach(Operator op in doc.Pages[1].Contents)
{

Steg 6: Hantera operatörer och extrahera bildinformation

I det här steget kommer vi att hantera de olika typerna av operatörer och extrahera informationen om bilderna.

Aspose.Pdf.Operators.GSave opSaveState = op as Aspose.Pdf.Operators.GSave;
Aspose.Pdf.Operators.GRestore opRestoreState = op as Aspose.Pdf.Operators.GRestore;
Aspose.Pdf.Operators.ConcatenateMatrix opCtm = op as Aspose.Pdf.Operators.ConcatenateMatrix;
Aspose.Pdf.Operators.Do opDo = op as Aspose.Pdf.Operators.Do;

//Hantera GSave- och GRRestore-operationer för transformationer
if (opSaveState != null)
{
     graphicsState.Push(((System.Drawing.Drawing2D.Matrix)graphicsState.Peek()).Clone());
}
else if (opRestoreState != null)
{
     graphicsState. Pop();
}
// Hantera ConcatenateMatrix-operationen för transformationer
else if (opCtm != null)
{
     // Tillämpa transformationsmatrisen
     System.Drawing.Drawing2D.Matrix cm = new System.Drawing.Drawing2D.Matrix(
        (float)opCtm.Matrix.A,
        (float)opCtm.Matrix.B,
        (float)opCtm.Matrix.C,
        (float)opCtm.Matrix.D,
        (float)opCtm.Matrix.E,
        (float)opCtm.Matrix.F);


     ((System.Drawing.Drawing2D.Matrix)graphicsState.Peek()).Multiply(cm);
     keep on going;
}
// Hantera Gör-operationen för bilder
else if (opDo != null)
{
     if (imageNames.Contains(opDo.Name))
     {
         // Hämta bilden
         XImage image = doc.Pages[1].Resources.Images[opDo.Name];
         // Hämta bildens mått
         double scaledWidth = Math.Sqrt(Math.Pow(lastCTM.Elements[0], 2) + Math.Pow(lastCTM.Elements[1], 2));
         double scaledHeight = Math.Sqrt(Math.Pow(lastCTM.Elements[2], 2) + Math.Pow(lastCTM.Elements[3], 2));
         // Beräkna upplösningen baserat på informationen ovan
         double resHorizontal = originalWidth * defaultResolution / scaledWidth;
         double resVertical = originalHeight * defaultResolution / scaledHeight;
         // Visa bildinformation
         Console.Out.WriteLine(
                 string.Format(dataDir + "image {0} ({1:.##}:{2:.##}): res {3:.##} x {4:.##}",
								 opDo.Name, scaledWidth, scaledHeight, resHorizontal,
								 resVertical));
     }
}

Exempel på källkod för bildinformation med Aspose.PDF för .NET

// Sökvägen till dokumentkatalogen.
string dataDir = "YOUR DOCUMENT DIRECTORY";
// Ladda käll-PDF-filen
Document doc = new Document(dataDir+ "ImageInformation.pdf");
// Definiera standardupplösningen för bilden
int defaultResolution = 72;
System.Collections.Stack graphicsState = new System.Collections.Stack();
// Definiera arraylistobjekt som kommer att innehålla bildnamn
System.Collections.ArrayList imageNames = new System.Collections.ArrayList(doc.Pages[1].Resources.Images.Names);
// Infoga ett objekt att stapla
graphicsState.Push(new System.Drawing.Drawing2D.Matrix(1, 0, 0, 1, 0, 0));
// Få alla operatörer på första sidan av dokumentet
foreach (Operator op in doc.Pages[1].Contents)
{
	// Använd GSave/GRestore-operatorer för att återställa transformationerna till tidigare inställda
	Aspose.Pdf.Operators.GSave opSaveState = op as Aspose.Pdf.Operators.GSave;
	Aspose.Pdf.Operators.GRestore opRestoreState = op as Aspose.Pdf.Operators.GRestore;
	// Instantiera ConcatenateMatrix-objekt som det definierar aktuell transformationsmatris.
	Aspose.Pdf.Operators.ConcatenateMatrix opCtm = op as Aspose.Pdf.Operators.ConcatenateMatrix;
	// Skapa Gör-operator som drar objekt från resurser. Den ritar formulärobjekt och bildobjekt
	Aspose.Pdf.Operators.Do opDo = op as Aspose.Pdf.Operators.Do;
	if (opSaveState != null)
	{
		//Spara föregående tillstånd och tryck aktuellt tillstånd till toppen av stacken
		graphicsState.Push(((System.Drawing.Drawing2D.Matrix)graphicsState.Peek()).Clone());
	}
	else if (opRestoreState != null)
	{
		// Kasta bort nuvarande tillstånd och återställ föregående
		graphicsState.Pop();
	}
	else if (opCtm != null)
	{
		System.Drawing.Drawing2D.Matrix cm = new System.Drawing.Drawing2D.Matrix(
		   (float)opCtm.Matrix.A,
		   (float)opCtm.Matrix.B,
		   (float)opCtm.Matrix.C,
		   (float)opCtm.Matrix.D,
		   (float)opCtm.Matrix.E,
		   (float)opCtm.Matrix.F);
		// Multiplicera nuvarande matris med tillståndsmatrisen
		((System.Drawing.Drawing2D.Matrix)graphicsState.Peek()).Multiply(cm);
		continue;
	}
	else if (opDo != null)
	{
		// Om detta är en bildritningsoperator
		if (imageNames.Contains(opDo.Name))
		{
			System.Drawing.Drawing2D.Matrix lastCTM = (System.Drawing.Drawing2D.Matrix)graphicsState.Peek();
			// Skapa XImage-objekt för att hålla bilder av första pdf-sidan
			XImage image = doc.Pages[1].Resources.Images[opDo.Name];
			// Få bildmått
			double scaledWidth = Math.Sqrt(Math.Pow(lastCTM.Elements[0], 2) + Math.Pow(lastCTM.Elements[1], 2));
			double scaledHeight = Math.Sqrt(Math.Pow(lastCTM.Elements[2], 2) + Math.Pow(lastCTM.Elements[3], 2));
			// Få information om höjd och bredd på bilden
			double originalWidth = image.Width;
			double originalHeight = image.Height;
			// Beräkna upplösning baserad på ovanstående information
			double resHorizontal = originalWidth * defaultResolution / scaledWidth;
			double resVertical = originalHeight * defaultResolution / scaledHeight;
			// Visa information om dimension och upplösning för varje bild
			Console.Out.WriteLine(
					string.Format(dataDir + "image {0} ({1:.##}:{2:.##}): res {3:.##} x {4:.##}",
								 opDo.Name, scaledWidth, scaledHeight, resHorizontal,
								 resVertical));
		}
	}
}

Slutsats

Grattis! Du har nu lärt dig hur du extraherar bildinformation i en PDF-fil med Aspose.PDF för .NET. Du kan använda denna information för olika bildbehandlingsuppgifter i dina applikationer.

Vanliga frågor för bildinformation i PDF-fil

F: Vad är syftet med att extrahera bildinformation från ett PDF-dokument med Aspose.PDF för .NET?

S: Att extrahera bildinformation från ett PDF-dokument ger insikter om dimensioner, upplösning och andra attribut för bilder i dokumentet. Denna information kan användas för bildbehandling, analys eller optimeringsuppgifter.

F: Hur hjälper Aspose.PDF för .NET att extrahera bildinformation från ett PDF-dokument?

S: Aspose.PDF för .NET tillhandahåller verktyg för att komma åt och analysera innehållet i ett PDF-dokument, inklusive dess bilder. Den medföljande koden visar hur man extraherar och visar bildinformation med olika operatörer.

F: Vilken typ av bildinformation kan extraheras med den här metoden?

S: Med den här metoden kan du extrahera och visa information som skalade mått, upplösning och bildnamn för bilder i ett PDF-dokument.

F: Hur identifierar och bearbetar koden bildrelaterade operatörer i ett PDF-dokument?

S: Koden itererar genom operatorerna på en angiven sida i PDF-dokumentet. Den identifierar och bearbetar operatörer relaterade till bildoperationer, transformationer och rendering.

F: Vad är betydelsen av standardupplösning och hur används den i koden?

S: Standardupplösningen används som referenspunkt för att beräkna den faktiska upplösningen för bilder. Koden beräknar upplösningen för varje bild baserat på dess mått och standardupplösningsinställningen.

F: Hur kan den extraherade bildinformationen användas i verkliga scenarier?

S: Den extraherade bildinformationen kan användas för uppgifter som bildkvalitetsbedömning, bildoptimering, generering av bildminiatyrer och underlättande av bildrelaterade beslutsprocesser.

F: Kan jag ändra koden för att extrahera ytterligare bildrelaterade attribut?

S: Ja, du kan anpassa koden för att extrahera ytterligare attribut för bilder, såsom färgrymd, pixeldjup eller bildtyp.

F: Är processen för utvinning av bildinformation resurskrävande eller tidskrävande?

S: Processen för att extrahera bildinformation är effektiv och optimerad för prestanda, vilket säkerställer minimal påverkan på resursanvändning och bearbetningstid.

F: Hur kan utvecklare dra nytta av att identifiera och extrahera bildinformation från PDF-dokument?

S: Utvecklare kan få insikter om egenskaperna hos bilder i PDF-dokument, vilket gör det möjligt för dem att fatta välgrundade beslut angående bildmanipulation, bearbetning och optimering.

F: Kan den här metoden användas för batchbearbetning av PDF-dokument som innehåller bilder?

S: Ja, den här metoden kan utökas för batchbearbetning genom att iterera genom flera sidor eller dokument, extrahera bildinformation och utföra bildrelaterade uppgifter.