Wyodrębnianie obrazów z dokumentów i filtrowanie zasobów przy użyciu GroupDocs.Parser Java

Wyodrębnianie obrazów z dokumentów jest powszechnym wymaganiem przy budowaniu potoków przetwarzania dokumentów. W tym samouczku odkryjesz jak wyodrębnić obrazy z dokumentów przy użyciu GroupDocs.Parser dla Javy oraz dowiesz się jak filtrować zasoby, aby załadowane zostały tylko potrzebne pliki. Przejdziemy przez konfigurację biblioteki, tworzenie własnego ExternalResourceHandler oraz zastosowanie logiki filtrowania, aby Twoja aplikacja była szybka i bezpieczna.

Szybkie odpowiedzi

  • Co robi GroupDocs.Parser? Parsuje szeroką gamę formatów dokumentów i zapewnia dostęp do tekstu, obrazów oraz innych osadzonych zasobów.
  • Czy mogę pominąć niechciane obrazy? Tak — poprzez implementację własnego ExternalResourceHandler możesz zdecydować, które zasoby załadować.
  • Jaką wersję GroupDocs.Parser Java wymaga się? Użyj GroupDocs.Parser Java 25.5 lub nowszej.
  • Czy potrzebna jest licencja? Bezpłatna wersja próbna działa w celach oceny; stała licencja jest wymagana w środowisku produkcyjnym.
  • Czy to podejście jest bezpieczne wątkowo? Obiekty parsujące nie są współdzielone między wątkami; utwórz nową instancję Parser dla każdego wątku.

Co oznacza „wyodrębnić obrazy z dokumentów”?

Gdy dokument zawiera osadzone obrazy, wykresy lub inne media, „wyodrębnić obrazy z dokumentów” oznacza programowe pobranie tych plików binarnych, aby można je było przechowywać, wyświetlać lub dalej przetwarzać poza oryginalnym plikiem.

Dlaczego filtrować zasoby podczas wyodrębniania obrazów?

Filtrowanie zasobów pomaga:

  • Zmniejszyć zużycie pamięci, ignorując duże lub nieistotne pliki.
  • Poprawić bezpieczeństwo, zapobiegając ładowaniu potencjalnie niebezpiecznej zawartości.
  • Przyspieszyć przetwarzanie, szczególnie przy ogromnych dokumentach zawierających wiele osadzonych obiektów.

Wymagania wstępne

  • Java Development Kit (JDK) – wersja 8 lub wyższa.
  • Maven – do zarządzania zależnościami.
  • Podowa znajomość Java I/O oraz obsługi wyjątków.

Konfiguracja GroupDocs.Parser dla Java

Dodaj repozytorium GroupDocs oraz zależność parsera do swojego pom.xml:

<repositories>
   <repository>
      <id>repository.groupdocs.com</id>
      <name>GroupDocs Repository</name>
      <url>https://releases.groupdocs.com/parser/java/</url>
   </repository>
</repositories>

<dependencies>
   <dependency>
      <groupId>com.groupdocs</groupId>
      <artifactId>groupdocs-parser</artifactId>
      <version>25.5</version>
   </dependency>
</dependencies>

Alternatywnie, pobierz najnowszą wersję z GroupDocs.Parser for Java releases.

Uzyskanie licencji

  • Free Trial – przetestuj podstawowe funkcje bez kosztów.
  • Temporary License – odblokuj pełną funkcjonalność podczas oceny.
  • Purchased License – wymagana przy wdrożeniu komercyjnym.

Jak filtrować zasoby podczas wyodrębniania obrazów

Krok 1: Utwórz własny handler

Zdefiniuj klasę, która rozszerza ExternalResourceHandler. W metodzie onLoading decydujesz, które zasoby zachować.

import com.groupdocs.parser.options.ExternalResourceHandler;
import com.groupdocs.parser.data.ExternalResourceLoadingArgs;

class Handler extends ExternalResourceHandler {
    @Override
    public void onLoading(ExternalResourceLoadingArgs args) {
        if (!args.getUri().endsWith("installation.png")) {
            args.setSkipped(true);
        }
        super.onLoading(args);
    }
}

Krok 2: Skonfiguruj ParserSettings z handlerem

Przekaż swoją instancję Handler do ParserSettings i użyj jej przy otwieraniu dokumentu.

import com.groupdocs.parser.Parser;
import com.groupdocs.parser.data.PageImageArea;
import com.groupdocs.parser.exceptions.IOException;
import com.groupdocs.parser.options.ParserSettings;

public class LoadExternalResources {
    public static void run() throws IOException {
        ParserSettings settings = new ParserSettings(new Handler());
        
        try (Parser parser = new Parser("YOUR_DOCUMENT_DIRECTORY", settings)) {
            Iterable<PageImageArea> images = parser.getImages();
            
            for (PageImageArea image : images) {
                System.out.println(image.getFileType());
            }
        }
    }
}

Krok 3: Dostosuj logikę filtrowania

Jeśli potrzebujesz bardziej zaawansowanych reguł — np. filtrowania według rozmiaru obrazu, formatu lub wzorca URI — rozszerz metodę onLoading odpowiednio:

@Override
public void onLoading(ExternalResourceLoadingArgs args) {
    if (!args.getUri().endsWith("installation.png")) {
        args.setSkipped(true);
    }
}

Praktyczne zastosowania

  1. Document Management Systems – Pobieraj tylko niezbędne obrazy ze skanowanych umów, aby generować miniatury.
  2. Data Extraction Services – Pomijaj ozdobne grafiki i koncentruj się na wykresach zawierających cenne dane.
  3. Web Scraping Tools – Filtruj piksele śledzące podczas pobierania istotnych mediów z dokumentów opartych na HTML.

Rozważania dotyczące wydajności

  • Filtruj wcześnie: Zastosuj własny handler przed iteracją po zasobach, aby uniknąć ładowania niepotrzebnych danych do pamięci.
  • Zwalniaj szybko: Używaj try‑with‑resources (try (Parser parser = …)) aby zwolnić zasoby natywne.
  • Przetwarzanie asynchroniczne: Przy dużych partiach przetwarzaj dokumenty w strumieniach równoległych, utrzymując każdą instancję Parser w jednym wątku.

Typowe problemy i rozwiązania

ProblemDlaczego się pojawiaRozwiązanie
Brak zwróconych obrazówHandler pomija wszystkie zasoby nieświadomieSprawdź warunek if i upewnij się, że args.setSkipped(true) jest wywoływane tylko dla niechcianych URI.
IOException on large filesNiewystarczająca pamięć heapZwiększ pamięć heap JVM (-Xmx2g) lub przetwarzaj strony w mniejszych fragmentach.
Licencja nie rozpoznanaUżywanie trial DLL w kodzie produkcyjnymUstaw poprawną ścieżkę do pliku licencji za pomocą License.setLicense("path/to/license").

Najczęściej zadawane pytania

Q: Jaki jest główny cel używania własnego ExternalResourceHandler?
A: Pozwala kontrolować, które zasoby zewnętrzne są ładowane, zwiększając bezpieczeństwo i wydajność poprzez filtrowanie niepotrzebnych plików.

Q: Czy mogę używać GroupDocs.Parser dla Java bez licencji?
A: Tak, dostępna jest wersja próbna, ale niektóre zaawansowane funkcje mogą być ograniczone, dopóki nie uzyskasz licencji tymczasowej lub zakupionej.

Q: Jak obsługiwać wyjątki podczas parsowania przy użyciu GroupDocs.Parser?
A: Otaczaj wywołania parsowania blokami try‑catch dla IOException i innych konkretnych wyjątków, aby elegancko obsłużyć błędy.

Q: Jakie są typowe pułapki przy filtrowaniu zasobów?
A: Nieprawidłowe sprawdzanie URI może pominąć potrzebne pliki; używaj logowania lub breakpointów, aby zweryfikować warunki.

Q: Czy można parsować dokumenty nie‑HTML przy użyciu GroupDocs.Parser dla Java?
A: Oczywiście — GroupDocs.Parser obsługuje PDF‑y, Word, Excel, PowerPoint i wiele innych formatów.

Kolejne kroki

Zanurz się głębiej w bibliotekę, przeglądając API Reference lub eksperymentując z dodatkowymi ustawieniami, takimi jak ParserSettings.setDetectTables(true) do wyodrębniania tabel.


Ostatnia aktualizacja: 2025-12-29
Testowano z: GroupDocs.Parser 25.5 for Java
Autor: GroupDocs

Zasoby