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:
- 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.
- 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.