Extrahovat ohraničení v souboru PDF

Zavedení

Při práci s PDF se může extrakce konkrétních prvků, jako jsou okraje nebo grafické cesty, zdát skličujícím úkolem. Ale s Aspose.PDF pro .NET můžete snadno extrahovat okraje nebo tvary ze souboru PDF a uložit je jako obrázek. V tomto tutoriálu se ponoříme do procesu extrahování ohraničení z PDF a jeho uložení jako obrázku PNG. Připravte se převzít kontrolu nad grafickým obsahem vašeho PDF!

Předpoklady

Než se ponoříme do kódu, ujistěte se, že máte vše nastaveno:

  1. Aspose.PDF pro .NET: Pokud jste ještě nenainstalovali knihovnu Aspose.PDF, můžetestáhněte si jej zde. Budete také muset použít licenci, buď prostřednictvím bezplatné zkušební verze, nebo zakoupené licence.
  2. Nastavení IDE: Nastavte projekt C# v sadě Visual Studio nebo v jakémkoli jiném .NET IDE. Ujistěte se, že jste přidali potřebné odkazy do knihovny Aspose.PDF.
  3. Vstupní soubor PDF: Připravte si soubor PDF, ze kterého vyjmete okraje. Tento tutoriál bude odkazovat na soubor s názveminput.pdf.

Import požadovaných balíčků

Začněme importem požadovaných jmenných prostorů. Tyto balíčky poskytují nástroje potřebné pro manipulaci s obsahem PDF.

using System.IO;
using System;
using System.Drawing.Drawing2D;
using System.Drawing.Imaging;
using System.Collections;
using Aspose.Pdf;
using Aspose.Pdf.Annotations;

Nyní, když jsme probrali základy, přejděme k podrobnému průvodci, kde rozebereme jednotlivé části kódu a podrobně je vysvětlíme.

Krok 1: Načtení dokumentu PDF

Prvním krokem je načtení dokumentu PDF, který obsahuje okraj, který chcete extrahovat. Představte si to jako otevření knihy, než začnete číst – potřebujete přístup k obsahu!

Začneme zadáním adresáře, kde je uložen váš soubor PDF, a načtením dokumentu pomocíAspose.Pdf.Document třída.

string dataDir = "YOUR DOCUMENT DIRECTORY";
Document doc = new Document(dataDir + "input.pdf");

Tento kód načteinput.pdf soubor z vašeho zadaného adresáře. Ujistěte se, že cesta k souboru je správná, jinak se může zobrazit chyba soubor nenalezen.

Krok 2: Nastavení grafiky a bitmapy

Než začneme vytahovat, musíme si vytvořit plátno, na které budeme kreslit. Ve světě .NET to znamená nastavení objektů Bitmap a Graphics. Bitmapa představuje obrázek a objekt Graphics nám umožní kreslit tvary, jako jsou okraje, extrahované z PDF.

System.Drawing.Bitmap bitmap = new System.Drawing.Bitmap((int)doc.Pages[1].PageInfo.Width, (int)doc.Pages[1].PageInfo.Height);
System.Drawing.Drawing2D.GraphicsPath graphicsPath = new System.Drawing.Drawing2D.GraphicsPath();
System.Drawing.Drawing2D.Matrix lastCTM = new System.Drawing.Drawing2D.Matrix(1, 0, 0, -1, 0, 0);
System.Drawing.Drawing2D.Matrix inversionMatrix = new System.Drawing.Drawing2D.Matrix(1, 0, 0, -1, 0, (float)doc.Pages[1].PageInfo.Height);
System.Drawing.PointF lastPoint = new System.Drawing.PointF(0, 0);
System.Drawing.Color fillColor = System.Drawing.Color.FromArgb(0, 0, 0);
System.Drawing.Color strokeColor = System.Drawing.Color.FromArgb(0, 0, 0);

Zde je rozpis:

  • Vytvoříme bitmapový obrázek o velikosti první stránky PDF.
  • GraphicsPath se používá k definování tvarů (v tomto případě ohraničení).
  • Matrix definuje, jak bude grafika transformována; potřebujeme inverzní matici, protože PDF a .NET mají různé souřadnicové systémy.

Krok 3: Zpracování obsahu PDF

Soubor PDF je řada kreslicích příkazů a každý z těchto příkazů potřebujeme zpracovat, abychom identifikovali a extrahovali informace o ohraničení.

foreach (Operator op in doc.Pages[1].Contents)
{
    // Zpracování příkazů, jako je uložení/obnovení stavu, kreslení čar, vyplňování tvarů atd.
}

Kód prochází každým operátorem výkresu v toku obsahu PDF. Každý operátor může představovat čáru, obdélník nebo jinou grafickou instrukci.

Krok 4: Práce s operátory PDF

Každý operátor v souboru PDF řídí akci. Chcete-li extrahovat ohraničení, potřebujeme identifikovat příkazy jako “přesunout do”, “čára do” a “nakreslit obdélník”. O tyto akce se starají následující operátoři:

  • MoveTo: Přesune kurzor na počáteční bod.
  • LineTo: Nakreslí čáru z aktuálního bodu do nového bodu.
  • Re: Nakreslí obdélník (může být součástí ohraničení).
Aspose.Pdf.Operators.MoveTo opMoveTo = op as Aspose.Pdf.Operators.MoveTo;
Aspose.Pdf.Operators.LineTo opLineTo = op as Aspose.Pdf.Operators.LineTo;
Aspose.Pdf.Operators.Re opRe = op as Aspose.Pdf.Operators.Re;

if (opMoveTo != null)
{
    lastPoint = new System.Drawing.PointF((float)opMoveTo.X, (float)opMoveTo.Y);
}
else if (opLineTo != null)
{
    System.Drawing.PointF linePoint = new System.Drawing.PointF((float)opLineTo.X, (float)opLineTo.Y);
    graphicsPath.AddLine(lastPoint, linePoint);
    lastPoint = linePoint;
}
else if (opRe != null)
{
    System.Drawing.RectangleF re = new System.Drawing.RectangleF((float)opRe.X, (float)opRe.Y, (float)opRe.Width, (float)opRe.Height);
    graphicsPath.AddRectangle(re);
}

V tomto kroku:

  • Zachycujeme body pro každou nakreslenou čáru nebo tvar.
  • Pro obdélníky (opRe ), přidáme je přímo dographicsPath, který později použijeme k nakreslení hranice.

Krok 5: Nakreslení hranice

Jakmile identifikujeme čáry a obdélníky, které tvoří hranici, musíme je skutečně nakreslit na objekt Bitmap. Zde přichází na řadu grafický objekt.

using (System.Drawing.Graphics gr = System.Drawing.Graphics.FromImage(bitmap))
{
    gr.SmoothingMode = SmoothingMode.HighQuality;
    gr.DrawPath(new System.Drawing.Pen(strokeColor), graphicsPath);
}
  • Na základě bitmapy vytvoříme objekt Graphics.
  • SmoothingMode.HighQuality zajišťuje, že získáme pěkně hladký obraz.
  • Nakonec použijeme DrawPath k nakreslení ohraničení.

Krok 6: Uložení extrahovaného okraje

Nyní, když jsme extrahovali ohraničení, je čas jej uložit jako soubor obrázku. Tím se ohraničení uloží jako PNG.

dataDir = dataDir + "ExtractBorder_out.png";
bitmap.Save(dataDir, ImageFormat.Png);
  • Bitmapa se uloží jako obrázek PNG.
  • Nyní můžete tento obrázek otevřít a zobrazit extrahovaný okraj.

Závěr

Extrahování hranic ze souboru PDF pomocí Aspose.PDF for .NET se může na první pohled zdát složité, ale jakmile to rozeberete, bude to jednoduché. Pochopením operátorů kreslení v PDF a využitím výkonných knihoven .NET můžete efektivně manipulovat a extrahovat grafický obsah. Tato příručka vám poskytuje robustní základ, abyste mohli začít s manipulací s PDF!

FAQ

Jak zpracuji více stránek v PDF?

Každou stránku v dokumentu můžete procházet opakovánímdoc.Pages místo pevného kódovánídoc.Pages[1].

Mohu pomocí stejného přístupu extrahovat další prvky, například text?

Ano, Aspose.PDF poskytuje bohaté rozhraní API pro extrahování textu, obrázků a dalšího obsahu ze souborů PDF.

Jak uplatním licenci, abych se vyhnul omezením?

Můžeteuplatnit licenci jeho načtením přesLicense třídy, kterou poskytuje Aspose.

Co když moje PDF nemá žádné okraje?

Pokud váš PDF neobsahuje žádné viditelné okraje, nemusí proces extrakce grafiky přinést žádný výsledek. Ujistěte se, že obsah PDF obsahuje vykreslitelné okraje.

Mohu uložit výstup v jiných formátech než PNG?

Ano, stačí změnitImageFormat.Png do jiného podporovaného formátu, napřImageFormat.Jpeg.