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:

  1. 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.
  2. 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.
  3. 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.
  4. 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.