Informace o obrázku v souboru PDF
Zavedení
Soubory PDF jsou v dnešní době všude – prakticky každý profesionální a osobní dokument si v určitém okamžiku najde cestu do tohoto formátu. Ať už se jedná o zprávu, brožuru nebo e-knihu, pochopení toho, jak s těmito soubory programově pracovat, nabízí nespočet možností. Jedním z běžných požadavků je extrahovat obrazové informace ze souborů PDF. V této příručce se ponoříme do toho, jak používat knihovnu Aspose.PDF pro .NET k extrahování důležitých podrobností o obrázcích vložených do dokumentu PDF.
Předpoklady
Než se pustíme do hrubky kódování, musíte mít splněno několik předpokladů:
- Vývojové prostředí: Budete potřebovat nastavit vývojové prostředí .NET. Může to být Visual Studio nebo jakékoli jiné IDE kompatibilní s .NET.
- Knihovna Aspose.PDF: Ujistěte se, že máte přístup ke knihovně Aspose.PDF. Můžete si jej stáhnout z Aspose webové stránky .
- Základní znalost C#: Znalost jazyka C# a objektově orientovaného programování vám pomůže bez námahy sledovat výukový program.
- Dokument PDF: Mějte po ruce vzorový dokument PDF, který obsahuje obrázky pro testování kódu.
Import balíčků
Abyste mohli začít používat knihovnu Aspose.PDF, budete muset do souboru C# importovat potřebné jmenné prostory. Zde je rychlý přehled:
using System.IO;
using Aspose.Pdf;
using System;
Tyto jmenné prostory vám poskytnou přístup k požadovaným třídám a metodám pro manipulaci se soubory PDF a extrahování obrazových dat.
Nyní, když máte vše nastaveno, je čas to rozdělit do zvládnutelných kroků. Napíšeme C# program, který načte PDF dokument, projde každou stránku a extrahuje rozměry a rozlišení každého obrázku v dokumentu.
Krok 1: Inicializujte dokument
V tomto kroku inicializujeme dokument PDF pomocí cesty k vašemu souboru PDF. Měli byste vyměnit"YOUR DOCUMENT DIRECTORY"
se skutečnou cestou, kde se nachází váš soubor PDF.
// Cesta k adresáři dokumentů.
string dataDir = "YOUR DOCUMENT DIRECTORY";
// Načtěte zdrojový soubor PDF
Document doc = new Document(dataDir + "ImageInformation.pdf");
Vytváříme aDocument
objekt, který načte PDF ze zadaného adresáře. To nám umožní pracovat s obsahem souboru.
Krok 2: Nastavte výchozí rozlišení a inicializujte datové struktury
Dále nastavíme výchozí rozlišení obrázků, což je užitečné pro výpočty. Připravíme také pole pro názvy obrázků a zásobník pro správu grafických stavů.
// Definujte výchozí rozlišení obrázku
int defaultResolution = 72;
System.Collections.Stack graphicsState = new System.Collections.Stack();
// Definujte objekt seznamu polí, který bude obsahovat názvy obrázků
System.Collections.ArrayList imageNames = new System.Collections.ArrayList(doc.Pages[1].Resources.Images.Names);
ThedefaultResolution
proměnná nám pomáhá správně vypočítat rozlišení obrázků. ThegraphicsState
zásobník slouží jako prostředek k uložení aktuálního grafického stavu dokumentu, když narazíme na transformační operátory.
Krok 3: Zpracujte každého operátora na stránce
Nyní projdeme všechny operátory na první stránce dokumentu. Zde dochází k těžkému zvedání.
foreach (Operator op in doc.Pages[1].Contents)
{
// Operátoři procesu...
}
Každý operátor v souboru PDF je příkaz, který říká rendereru, jak spravovat grafické prvky, včetně obrázků.
Krok 4: Obsluha operátorů GSave/GRestore
Uvnitř smyčky budeme zpracovávat příkazy pro ukládání a obnovu grafiky, abychom mohli sledovat změny provedené v grafickém stavu.
if (opSaveState != null)
{
// Uložit předchozí stav
graphicsState.Push(((Matrix)graphicsState.Peek()).Clone());
}
else if (opRestoreState != null)
{
// Obnovit předchozí stav
graphicsState.Pop();
}
GSave
uloží aktuální grafický stav, zatímcoGRestore
obnovuje poslední uložený stav, což nám umožňuje vrátit jakékoli transformace při zpracování obrázků.
Krok 5: Správa transformačních matic
Dále se zabýváme zřetězením transformačních matic při aplikaci transformací na obrázky.
else if (opCtm != null)
{
Matrix cm = new 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);
((Matrix)graphicsState.Peek()).Multiply(cm);
continue;
}
Když je použita transformační matice, vynásobíme ji aktuální maticí uloženou v grafickém stavu, abychom mohli sledovat jakékoli změny měřítka nebo translace aplikované na obrázek.
Krok 6: Extrahujte informace o obrázku
Nakonec zpracujeme operátora výkresu pro obrázky a extrahujeme potřebné informace, jako jsou rozměry a rozlišení.
else if (opDo != null)
{
// Operátor Handle Do, který kreslí objekty
if (imageNames.Contains(opDo.Name))
{
Matrix lastCTM = (Matrix)graphicsState.Peek();
XImage image = doc.Pages[1].Resources.Images[opDo.Name];
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));
double originalWidth = image.Width;
double originalHeight = image.Height;
double resHorizontal = originalWidth * defaultResolution / scaledWidth;
double resVertical = originalHeight * defaultResolution / scaledHeight;
// Vypište informace
Console.Out.WriteLine(string.Format(dataDir + "image {0} ({1:.##}:{2:.##}): res {3:.##} x {4:.##}",
opDo.Name, scaledWidth, scaledHeight, resHorizontal, resVertical));
}
}
Zde zkontrolujeme, zda je za kreslení obrázku odpovědný operátor. Pokud ano, získáme odpovídající objekt XImage, vypočítáme jeho zmenšené rozměry a rozlišení a vytiskneme potřebné informace.
Závěr
Gratuluji! Právě jste vytvořili funkční příklad, jak extrahovat informace o obrázku ze souboru PDF pomocí Aspose.PDF for .NET. Tato schopnost může být neuvěřitelně užitečná pro vývojáře, kteří potřebují analyzovat nebo manipulovat s dokumenty PDF pro různé aplikace, jako je vytváření sestav, extrakce dat nebo dokonce vlastní prohlížeče PDF.
FAQ
Co je to knihovna Aspose.PDF?
Knihovna Aspose.PDF je výkonný nástroj pro vytváření, manipulaci a konverzi souborů PDF v aplikacích .NET.
Mohu používat knihovnu zdarma?
Ano, Aspose nabízí bezplatnou zkušební verzi. Můžete si jej stáhnout zde .
Jaké typy obrazových formátů lze extrahovat?
Knihovna podporuje různé formáty obrázků, včetně JPEG, PNG a TIFF, pokud jsou vložené do PDF.
Používá se Aspose pro komerční účely?
Ano, produkty Aspose můžete používat komerčně. Pro licencování navštivte nákupní stránku .
Jak získám podporu pro Aspose?
Můžete vstoupit do fóra podpory zde .