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 zAspose 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áhnoutzde.
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štivtenákupní stránku.
Jak získám podporu pro Aspose?
Můžete vstoupit do fóra podporyzde.