Wyodrębnianie obrazów z DOCX – Zaawansowane użycie edytowalnych dokumentów

Jeśli jesteś programistą .NET, który chce wyodrębnić obrazy z DOCX i zwiększyć możliwości edycji dokumentów, GroupDocs.Editor for .NET oferuje potężny zestaw narzędzi. Ten kompleksowy przewodnik przeprowadzi Cię przez zaawansowane użycie edytowalnych dokumentów przy użyciu GroupDocs.Editor, szczegółowo opisując każdy krok, abyś mógł w pełni wykorzystać jego potencjał.

Szybkie odpowiedzi

  • Jak mogę wyodrębnić obrazy z pliku DOCX? Użyj EditableDocument.Images po załadowaniu dokumentu przy pomocy Editor.
  • Czy mogę konwertować DOCX do HTML z osadzonymi zasobami? Tak — wywołaj EditableDocument.GetEmbeddedHtml() lub GetContent() aby uzyskać znacznik HTML.
  • Jaką metodą zapisać edytowany dokument jako HTML? EditableDocument.Save(htmlFilePath) tworzy plik HTML z folderem zasobów.
  • Czy można wyodrębnić czcionki z dokumentu Word? Użyj EditableDocument.Fonts, aby pobrać wszystkie zasoby czcionek.
  • Czy potrzebna jest licencja do użytku produkcyjnego? Wymagana jest ważna licencja GroupDocs.Editor; dostępna jest darmowa wersja próbna.

Czym jest extract images from docx?

Wyodrębnianie obrazów z pliku DOCX oznacza programowe pobieranie każdego obrazu osadzonego w dokumencie Word, aby móc go ponownie używać, modyfikować lub przechowywać osobno. GroupDocs.Editor udostępnia kolekcję Images w instancji EditableDocument, co upraszcza to zadanie.

Dlaczego warto używać GroupDocs.Editor w tym przepływie pracy?

  • Pełna kontrola nad zasobami dokumentu (obrazy, czcionki, CSS) bez ręcznego obsługiwania ZIP.
  • Bezproblemowa konwersja z DOCX do HTML przy zachowaniu układu i stylizacji.
  • Łatwe wyodrębnianie zasobów dla niestandardowej obsługi obrazów, osadzania czcionek lub dostarczania przez CDN.
  • Solidny wzorzec zwalniania zapewnia brak wycieków pamięci w długotrwale działających usługach.

Wymagania wstępne

Importowanie przestrzeni nazw

Aby rozpocząć, upewnij się, że importujesz niezbędne przestrzenie nazw w swoim projekcie .NET:

using System;
using System.Collections.Generic;
using System.IO;
using GroupDocs.Editor.HtmlCss.Resources;
using GroupDocs.Editor.HtmlCss.Resources.Fonts;
using GroupDocs.Editor.HtmlCss.Resources.Images;
using GroupDocs.Editor.HtmlCss.Resources.Textual;
using GroupDocs.Editor.Options;

Krok 1: Tworzenie instancji EditableDocument

Najpierw musisz utworzyć instancję EditableDocument, ładując i edytując dokument wejściowy w obsługiwanym formacie.

string inputFilePath = "YourSampleDocument.docx";
Editor editor = new Editor(inputFilePath, delegate { return new WordProcessingLoadOptions(); });
EditableDocument beforeEdit = editor.Edit(new WordProcessingEditOptions());

W tym kroku ładujemy dokument wejściowy i przygotowujemy go do edycji.

Jak wyodrębnić obrazy z DOCX?

Poniżej zagłębiamy się w możliwości wyodrębniania zasobów, zaczynając od najczęstszej potrzeby — pobrania wszystkich obrazów z pliku Word.

Krok 2: Wyodrębnianie zasobów dokumentu

EditableDocument zawiera różne zasoby, które można wyodrębnić i manipulować nimi. Rozbijmy je na części:

Krok 2.1: Wyodrębnienie całego dokumentu jako HTML

Możesz wygenerować pojedynczy ciąg znaków zawierający cały dokument ze wszystkimi zasobami osadzonymi jako HTML.

string allAsHtmlInsideOneString = beforeEdit.GetEmbeddedHtml();

Ten ciąg będzie dość duży, ponieważ zawiera arkusze stylów, obrazy i czcionki zakodowane w base64.

Krok 2.2: Wyodrębnienie wszystkich obrazów (główne słowo kluczowe w akcji)

Wyodrębnij wszystkie obrazy z dokumentu — jest to sedno extract images from docx.

List<IImageResource> allImages = beforeEdit.Images;

Krok 2.3: Wyodrębnienie wszystkich czcionek (drugorzędne słowo kluczowe)

Jeśli potrzebujesz także wyodrębnić czcionki z word, użyj następującego wywołania:

List<FontResourceBase> allFonts = beforeEdit.Fonts;

Krok 2.4: Wyodrębnienie wszystkich arkuszy stylów

Wyodrębnij wszystkie arkusze stylów w formacie tekstowym.

List<CssText> allStylesheets = beforeEdit.Css;

Krok 2.5: Zgromadzenie wszystkich zasobów

Zgromadź wszystkie zasoby w jednym wywołaniu.

List<IHtmlResource> allResources = beforeEdit.AllResources;

To obejmuje obrazy, czcionki i arkusze stylów.

Krok 2.6: Uzyskanie znacznika HTML

Uzyskaj znacznik HTML dokumentu bez osadzonych zasobów.

string htmlMarkup = beforeEdit.GetContent();

Jak konwertować docx do html z niestandardową obsługą?

Czasami trzeba dostosować zewnętrzne linki, aby wskazywały na własne obsługujące je zasoby.

Krok 3: Dostosowywanie zewnętrznych linków

Krok 3.1: Przygotowanie niestandardowych prefiksów

Przygotuj prefiksy, które będą poprzedzać oryginalne zewnętrzne linki.

string customImagesRequesthandlerUri = "http://example.com/ImagesHandler/id=";
string customCssRequesthandlerUri = "http://example.com/CssHandler/id=";
string customFontsRequesthandlerUri = "http://example.com/FontsHandler/id=";

Krok 3.2: Generowanie znacznika HTML z prefiksami

Wygeneruj znacznik HTML z dostosowanymi linkami.

string prefixedHtmlMarkup = beforeEdit.GetContent(customImagesRequesthandlerUri, customCssRequesthandlerUri);

Krok 3.3: Uzyskanie treści HTML tylko z ciałem

Niektóre edytory WYSIWYG obsługują wyłącznie czysty znacznik HTML bez nagłówków.

string onlyBodyContent = beforeEdit.GetBodyContent();

Krok 3.4: Treść tylko z ciałem z prefiksami

Wygeneruj treść tylko z ciałem z niestandardowymi prefiksami obrazów.

string prefixedBodyContent = beforeEdit.GetBodyContent(customImagesRequesthandlerUri);

Krok 3.5: Wyodrębnienie arkuszy stylów

Wyodrębnij arkusze stylów użyte w dokumencie.

List<string> stylesheets = beforeEdit.GetCssContent();

Krok 3.6: Arkusze stylów z prefiksami

Wyodrębnij arkusze stylów z niestandardowymi prefiksami.

List<string> prefixedStylesheets = beforeEdit.GetCssContent(customImagesRequesthandlerUri, customFontsRequesthandlerUri);

Jak zapisać dokument jako html poprawnie?

Krok 4: Zapisz dokument jako HTML

Zapisz edytowany dokument jako plik HTML, wraz z jego zasobami.

string htmlFilePath = Path.Combine("output", Path.GetFileNameWithoutExtension(inputFilePath) + ".html");
beforeEdit.Save(htmlFilePath);

Ta metoda tworzy osobny katalog dla zasobów, takich jak arkusze stylów, obrazy i czcionki.

Krok 5: Zwalnianie EditableDocument

EditableDocument implementuje IDisposable i umożliwia sprawdzenie, czy instancja została zwolniona.

Console.WriteLine("EditableDocument is {0} disposed", !beforeEdit.IsDisposed ? "not" : "already");

Krok 5.1 Obsługa zdarzenia Dispose

Możesz także subskrybować zdarzenie zwalniania.

EventHandler someMethod = delegate { Console.WriteLine("Disposing event was spotted!"); };
beforeEdit.Disposed += someMethod;

Krok 6: Tworzenie EditableDocument z HTML

Utwórz instancję EditableDocument z dokumentu HTML.

Krok 6.1: Z pliku HTML

EditableDocument afterEditFromFile = EditableDocument.FromFile(htmlFilePath, null);

Krok 6.2: Z znacznika HTML

EditableDocument afterEditFromMarkup = EditableDocument.FromMarkup(htmlMarkup, allResources);

Te instancje (afterEditFromFile i afterEditFromMarkup) są identyczne jak oryginalna (beforeEdit).

Krok 7: Ręczne zwalnianie

Ręcznie zwolnij swoje instancje EditableDocument.

beforeEdit.Dispose();
afterEditFromFile.Dispose();
afterEditFromMarkup.Dispose();
editor.Dispose();

Zapewnia to prawidłowe czyszczenie zasobów.

Typowe problemy i rozwiązania

  • Obrazy nie pojawiają się po wyodrębnieniu: Upewnij się, że dokument rzeczywiście zawiera osadzone obrazy i że odwołujesz się do beforeEdit.Images po wywołaniu Edit.
  • Brak czcionek w wyjściu HTML: Upewnij się, że wywołujesz GetCssContent(customImagesRequesthandlerUri, customFontsRequesthandlerUri), aby poprawnie osadzić adresy URL czcionek.
  • Duże ciągi HTML powodujące obciążenie pamięci: Użyj GetContent() dla znacznika bez osadzonych zasobów i serwuj obrazy/CSS z osobnych plików.

Najczęściej zadawane pytania

P: Jakie formaty obsługuje GroupDocs.Editor?
O: GroupDocs.Editor obsługuje DOCX, XLSX, PPTX oraz wiele innych popularnych formatów biurowych.

P: Czy mogę używać GroupDocs.Editor bez licencji?
O: Tak, możesz używać go z darmową wersją próbną lub tymczasową licencją.

P: Jak wyodrębnić konkretne zasoby z dokumentu?
O: Użyj kolekcji Images, Fonts i Css w instancji EditableDocument.

P: Czy można dostosować linki w wyjściu HTML?
O: Tak, przekaż niestandardowe prefiksy URI do GetContent lub GetBodyContent, aby przepisac linki do obrazów, CSS i czcionek.

P: Jak zapisać edytowany dokument jako plik HTML?
O: Wywołaj metodę Save na instancji EditableDocument, podając ścieżkę pliku kończącą się na .html.


Ostatnia aktualizacja: 2026-03-14
Testowano z: GroupDocs.Editor for .NET (najnowsze wydanie)
Autor: GroupDocs