Z przyjemnością ogłaszamy wydanie GroupDocs.Parser for Java 26.10, dostępne od października 2026. Jest to wydanie konserwacyjne skoncentrowane na poprawności: wyszukiwanie tekstu działa ponownie dla każdego przeciążenia, ekstrakcja struktury dokumentu obsługuje więcej dokumentów Word, informacje o pliku dokładnie raportują szyfrowanie, a współrzędne obrazów PDF teraz pasują do reszty API. Licencjonowanie jest teraz obsługiwane przez GroupDocs.Foundation, a dołączone komponenty Aspose zostały zaktualizowane.

Co nowego w tym wydaniu

Klucz Podsumowanie Kategoria
PARSERJAVA-491 Parser.search nie rzuca już NullPointerException, gdy wyszukiwanie nie jest ograniczone do strony Poprawka
PARSERJAVA-513 Parser.getStructure() działa dla dokumentów Word z tabelami w nagłówku lub stopce i zwraca poprawny XML Poprawka
— Parser.getFileInfo(String) zgłasza pliki DOCX, XLSX i PPTX chronione hasłem jako zaszyfrowane Poprawka
— FileInfo.isEncrypted() jest true tylko dla zaszyfrowanych dokumentów PDF Poprawka
— Prostokąty obrazów PDF są mierzone od góry strony, tak jak pozostałe obszary strony Poprawka
PARSERJAVA-154 Licencjonowanie jest wykonywane przez GroupDocs.Foundation, rdzeń licencjonowania współdzielony przez produkty GroupDocs Aktualizacja
PARSERJAVA-512 Zaktualizowano dołączone komponenty Aspose Aktualizacja
PARSERJAVA-509 Opublikowano POM: nazwę produktu, krótki opis, <url>, <organization> i <scm> Aktualizacja

Zmiany zachowania do sprawdzenia przed aktualizacją

Dwie zmiany wpływają na to, co obserwuje istniejący kod:

  1. Współrzędne obrazów PDF. Współrzędna górna prostokątów obrazów PDF jest teraz mierzona od góry strony. Jeśli Twój kod przeliczał ją z dołu strony, usuń to przeliczenie.
  2. XML struktury dokumentów Word. Słowa oddzielone znakiem podziału Word są teraz oddzielone spacją w XML struktury.

Poprawki

Wyszukiwanie tekstu nieograniczone do strony

Od wersji 25.5 każde wywołanie Parser.search, które nie było ograniczone do strony, kończyło się NullPointerException. Dotyczyło to przeciążenia search(String keyword), search(String keyword, SearchOptions options) z ustawionym searchByPages na false (wartość domyślna) oraz wyszukiwań żądających podświetleń. Wyszukiwania z searchByPages ustawionym na true nie były dotknięte.

W wersji 26.10 te wywołania ponownie zwracają wyniki wyszukiwania:

try (Parser parser = new Parser("sample.pdf")) {
    Iterable<SearchResult> results = parser.search("lorem");
    if (results == null) {
        return; // Search isn't supported for this document
    }

    for (SearchResult result : results) {
        System.out.println(result.getPosition() + ": " + result.getText());
    }
}

Struktura dokumentu Word

Parser.getStructure() wcześniej rzucał wyjątek przy dokumentach przetwarzania tekstu, które zawierały tabelę w nagłówku lub stopce, oraz mógł zwracać XML, który nie parsował się, gdy tekst dokumentu zawierał znaki kontrolne. Oba problemy zostały naprawione:

  • tabele w nagłówkach i stopkach są opisane ich logiczną siatką: indeks wiersza w tabeli, indeks komórki w wierszu oraz rozpiętość równą 1;
  • znaki podziału Word (koniec komórki, tabulacja pionowa, podział strony, podział kolumny) zamieniane są na spację, więc słowa, które oddzielają, nie łączą się już razem;
  • znaki, które nie są dozwolone w XML 1.0, są usuwane;
  • wartości atrybutów są escapowane w taki sam sposób jak tekst.

Informacje o pliku dla dokumentów chronionych hasłem

Przeciążenie Parser.getFileInfo(String filePath) nie rozpoznawało plików DOCX, XLSX i PPTX chronionych hasłem: zwracało rozmiar 0 i isEncrypted() ustawione na false dla DOCX i XLSX oraz brak typu pliku dla PPTX. Teraz zwraca ten sam wynik co przeciążenie InputStream: rzeczywisty rozmiar pliku, isEncrypted() ustawione na true oraz FileType.Unknown (format zaszyfrowanego dokumentu nie może być odczytany bez hasła).

Ułatwia to wykrycie chronionego pliku i otwarcie go przy użyciu hasła:

FileInfo info = Parser.getFileInfo("protected.docx");
if (info.isEncrypted()) {
    LoadOptions options = new LoadOptions("password");
    try (Parser parser = new Parser("protected.docx", options);
         TextReader reader = parser.getText()) {
        System.out.println(reader.readToEnd());
    }
}

Szyfrowanie dokumentów PDF

FileInfo.isEncrypted() wcześniej zwracało true dla każdego dokumentu PDF. Teraz jest true tylko dla dokumentów PDF, które są rzeczywiście zaszyfrowane.

Pozycja obrazów PDF

Prostokąty obrazów PDF zwracane przez Parser.getImages() były mierzone od dołu strony, podczas gdy tekst, tabele i inne obszary strony są mierzone od góry. Obrazy teraz używają tych samych współrzędnych opartych na górze, więc getImages(PageAreaOptions) znajduje obrazy wewnątrz podanego prostokąta:

try (Parser parser = new Parser("images.pdf")) {
    // Images in the top-left 400 x 400 points of each page
    PageAreaOptions options = new PageAreaOptions(new Rectangle(new Point(0, 0), new Size(400, 400)));
    for (PageImageArea image : parser.getImages(options)) {
        System.out.println(image.getPage().getIndex() + ": " + image.getRectangle());
    }
}

Aktualizacje

Licencjonowanie w GroupDocs.Foundation

Walidacja licencji, licencjonowanie oparte na zużyciu oraz licencjonowanie dołączonych komponentów Aspose są teraz wykonywane przez GroupDocs.Foundation, ten sam rdzeń licencjonowania używany przez inne produkty GroupDocs. API licencjonowania nie uległo zmianie: License.setLicense, Metered.setMeteredKey, Metered.getConsumptionQuantity i Metered.getConsumptionCredit są wywoływane dokładnie tak jak wcześniej.

License license = new License();
license.setLicense("GroupDocs.Parser.Java.lic");

try (Parser parser = new Parser("document.docx");
     TextReader reader = parser.getText()) {
    System.out.println(reader.readToEnd());
}

Dołączone komponenty Aspose

Komponent 26.9 26.10
Aspose.Cells 26.3 26.9
Aspose.Email 26.1 26.8
Aspose.PDF 26.2 26.8.1
Aspose.Slides 26.2 26.9
Aspose.Words 26.3 26.8
Aspose.BarCode 26.4 26.6
Aspose.Imaging 25.12 25.12
Aspose.ZIP 25.10 25.10
Aspose.Note 23.3 23.3

Produkt nadal działa na Java 8.

Opublikowane metadane artefaktu

Opublikowany POM zawiera teraz nazwę GroupDocs.Parser for Java, krótki opis tego, co biblioteka wyodrębnia i jakie formaty odczytuje, stronę produktu jako <url> oraz deklaruje <organization> i <scm>. To są informacje wyświetlane w indeksach zależności, takich jak MVNRepository. Nie zmienił się żaden kod, zachowanie ani API.

Jak uzyskać aktualizację

Maven

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

<repositories>
    <repository>
        <id>groupdocs-artifacts-repository</id>
        <name>GroupDocs Artifacts Repository</name>
        <url>https://releases.groupdocs.com/java/repo/</url>
    </repository>
</repositories>

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

Bezpośrednie pobranie

Pobierz plik JAR ze strony pobierania GroupDocs.Parser for Java 26.10.

Zasoby