Képinformációk PDF fájlban
Bevezetés
A PDF-fájlok manapság mindenhol megtalálhatók – gyakorlatilag minden szakmai és személyes dokumentum egyszer csak ebbe a formátumba kerül. Legyen szó jelentésről, brosúráról vagy e-könyvről, az ezekkel a fájlokkal való programozási műveletek megértése számtalan lehetőséget kínál. Az egyik általános követelmény a képinformációk kinyerése a PDF-fájlokból. Ebben az útmutatóban bemutatjuk, hogyan használhatjuk az Aspose.PDF könyvtárat .NET-hez a PDF-dokumentumba ágyazott képek lényeges részleteinek kinyerésére.
Előfeltételek
Mielőtt belevágnánk a kódolás finomságába, meg kell felelnie néhány előfeltételnek:
- Fejlesztői környezet: Be kell állítania egy .NET fejlesztői környezetet. Ez lehet a Visual Studio vagy bármely más .NET-kompatibilis IDE.
- Aspose.PDF könyvtár: Győződjön meg arról, hogy rendelkezik hozzáféréssel az Aspose.PDF könyvtárhoz. Letöltheti aAspose honlapja.
- Alapvető C# ismeretek: A C# és az objektum-orientált programozási koncepciók ismerete segít az oktatóanyag zökkenőmentes követésében.
- PDF-dokumentum: Legyen kéznél egy PDF-minta, amely képeket tartalmaz a kód teszteléséhez.
Csomagok importálása
Az Aspose.PDF könyvtár használatának megkezdéséhez importálnia kell a szükséges névtereket a C# fájlba. Íme egy gyors összefoglaló:
using System.IO;
using Aspose.Pdf;
using System;
Ezek a névterek hozzáférést biztosítanak a szükséges osztályokhoz és módszerekhez a PDF-fájlok kezeléséhez és a képadatok kinyeréséhez.
Most, hogy mindent beállított, itt az ideje, hogy ezt kezelhető lépésekre bontsa. Írunk egy C# programot, amely betölt egy PDF dokumentumot, végigmegy az egyes oldalakon, és kivonja a dokumentumban lévő egyes képek méretét és felbontását.
1. lépés: Inicializálja a dokumentumot
Ebben a lépésben inicializáljuk a PDF-dokumentumot a PDF-fájl elérési útjával. Cserélnie kellene"YOUR DOCUMENT DIRECTORY"
a PDF-fájl tényleges elérési útjával.
// A dokumentumok könyvtárának elérési útja.
string dataDir = "YOUR DOCUMENT DIRECTORY";
// Töltse be a forrás PDF-fájlt
Document doc = new Document(dataDir + "ImageInformation.pdf");
Létrehozunk aDocument
objektum, amely betölti a PDF-et a megadott könyvtárból. Ez lehetővé teszi számunkra, hogy a fájl tartalmával dolgozzunk.
2. lépés: Állítsa be az alapértelmezett felbontást és inicializálja az adatstruktúrákat
Ezután beállítunk egy alapértelmezett felbontást a képekhez, ami hasznos a számításokhoz. Készítünk egy tömböt a képnevek tárolására, valamint egy veremet a grafikus állapotok kezelésére.
// Adja meg a kép alapértelmezett felbontását
int defaultResolution = 72;
System.Collections.Stack graphicsState = new System.Collections.Stack();
// Határozzon meg egy tömblista objektumot, amely a képneveket tartalmazza
System.Collections.ArrayList imageNames = new System.Collections.ArrayList(doc.Pages[1].Resources.Images.Names);
AdefaultResolution
változó segít a képek felbontásának helyes kiszámításában. AgraphicsState
verem a dokumentum aktuális grafikus állapotának tárolására szolgál, amikor transzformációs operátorokkal találkozunk.
3. lépés: Az oldalon lévő összes operátor feldolgozása
Most végighurkoljuk a dokumentum első oldalán található összes operátort. Itt történik a nehézemelés.
foreach (Operator op in doc.Pages[1].Contents)
{
// Folyamatkezelők...
}
A PDF-fájl minden operátora egy parancs, amely megmondja a megjelenítőnek, hogyan kezelje a grafikus elemeket, beleértve a képeket.
4. lépés: A GSave/GRestore operátorok kezelése
A cikluson belül grafikus mentési és visszaállítási parancsokat fogunk kezelni, hogy nyomon követhessük a grafikus állapot változásait.
if (opSaveState != null)
{
// Előző állapot mentése
graphicsState.Push(((Matrix)graphicsState.Peek()).Clone());
}
else if (opRestoreState != null)
{
// Az előző állapot visszaállítása
graphicsState.Pop();
}
GSave
elmenti az aktuális grafikus állapotot, miközbenGRestore
visszaállítja az utoljára mentett állapotot, lehetővé téve számunkra, hogy visszaállítsuk az átalakításokat a képek feldolgozása során.
5. lépés: Transzformációs mátrixok kezelése
Ezután kezeljük a transzformációs mátrixok összefűzését, amikor transzformációkat alkalmazunk a képekre.
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;
}
Transzformációs mátrix alkalmazásakor megszorozzuk a grafikus állapotban tárolt aktuális mátrixszal, így nyomon tudjuk követni a képre alkalmazott skálázást vagy fordítást.
6. lépés: A képinformációk kibontása
Végül feldolgozzuk a rajzoperátort a képekhez, és kinyerjük a szükséges információkat, például a méreteket és a felbontásokat.
else if (opDo != null)
{
// Handle Do operátor, amely objektumokat rajzol
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;
// Adja ki az információkat
Console.Out.WriteLine(string.Format(dataDir + "image {0} ({1:.##}:{2:.##}): res {3:.##} x {4:.##}",
opDo.Name, scaledWidth, scaledHeight, resHorizontal, resVertical));
}
}
Itt ellenőrizzük, hogy az operátor felelős-e a kép megrajzolásáért. Ha igen, megkapjuk a megfelelő XImage objektumot, kiszámítjuk a méretezett méreteit és felbontását, és kinyomtatjuk a szükséges információkat.
Következtetés
Gratulálok! Most készített egy működő példát arra, hogyan lehet képinformációkat kinyerni egy PDF-fájlból az Aspose.PDF for .NET használatával. Ez a képesség hihetetlenül hasznos lehet azoknak a fejlesztőknek, akiknek PDF-dokumentumokat kell elemezniük vagy kezelniük különféle alkalmazásokhoz, például jelentéskészítéshez, adatkinyeréshez vagy akár egyéni PDF-megtekintőkhöz.
GYIK
Mi az Aspose.PDF könyvtár?
Az Aspose.PDF könyvtár egy hatékony eszköz a PDF-fájlok létrehozásához, kezeléséhez és konvertálásához .NET-alkalmazásokban.
Ingyenesen használhatom a könyvtárat?
Igen, az Aspose ingyenes próbaverziót kínál. Letölthetiitt.
Milyen típusú képformátumok nyerhetők ki?
A könyvtár különféle képformátumokat támogat, beleértve a JPEG-et, PNG-t és TIFF-et, mindaddig, amíg ezek be vannak ágyazva a PDF-be.
Az Aspose-t kereskedelmi célokra használják?
Igen, az Aspose termékeket kereskedelmi forgalomban is használhatja. Az engedélyezéshez keresse fel avásárlási oldal.
Hogyan kaphatok támogatást az Aspose számára?
Hozzáférhet a támogatási fórumhozitt.