RED-10365: InvisibleElementRemovalService crashes for specific file
This commit is contained in:
parent
ff9fd7bd44
commit
e86e6fba2a
@ -27,7 +27,7 @@ repositories {
|
|||||||
dependencies {
|
dependencies {
|
||||||
api("org.projectlombok:lombok:1.18.30")
|
api("org.projectlombok:lombok:1.18.30")
|
||||||
api("com.google.guava:guava:33.0.0-jre")
|
api("com.google.guava:guava:33.0.0-jre")
|
||||||
api("com.pdftron:PDFNet:10.11.0")
|
api("com.pdftron:PDFNet:11.0.0")
|
||||||
testImplementation("net.sourceforge.lept4j:lept4j:1.19.1")
|
testImplementation("net.sourceforge.lept4j:lept4j:1.19.1")
|
||||||
testImplementation("org.junit.jupiter:junit-jupiter:5.10.2")
|
testImplementation("org.junit.jupiter:junit-jupiter:5.10.2")
|
||||||
testImplementation("org.assertj:assertj-core:3.24.2")
|
testImplementation("org.assertj:assertj-core:3.24.2")
|
||||||
|
|||||||
@ -290,7 +290,8 @@ public class InvisibleElementRemovalService {
|
|||||||
Therefore, the position of a following Tj is affected by not writing the first Element.
|
Therefore, the position of a following Tj is affected by not writing the first Element.
|
||||||
This is why, we write only the Tm command:
|
This is why, we write only the Tm command:
|
||||||
*/
|
*/
|
||||||
writer.writeGStateChanges(textElement);
|
textElement.setTextData(new byte[]{});
|
||||||
|
writer.writeElement(textElement);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if (!inClippingPath) {
|
if (!inClippingPath) {
|
||||||
@ -431,7 +432,7 @@ public class InvisibleElementRemovalService {
|
|||||||
context.reader().end();
|
context.reader().end();
|
||||||
|
|
||||||
if (!context.overlappedElements().isEmpty()) {
|
if (!context.overlappedElements().isEmpty()) {
|
||||||
log.warn(context.overlappedElements().size() + " overlapped elements have not been found or removed");
|
log.debug(context.overlappedElements().size() + " overlapped elements have not been found or removed");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -490,7 +491,8 @@ public class InvisibleElementRemovalService {
|
|||||||
Therefore, the position of a following Tj is affected by not writing the first Element.
|
Therefore, the position of a following Tj is affected by not writing the first Element.
|
||||||
This is why, we write only the Tm command:
|
This is why, we write only the Tm command:
|
||||||
*/
|
*/
|
||||||
writer.writeGStateChanges(element);
|
element.setTextData(new byte[]{});
|
||||||
|
writer.writeElement(element);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
writer.writeElement(element);
|
writer.writeElement(element);
|
||||||
|
|||||||
@ -3,6 +3,7 @@ package com.iqser.red.pdftronlogic.commons;
|
|||||||
import static com.iqser.red.pdftronlogic.commons.PdfTextExtraction.extractAllTextFromDocument;
|
import static com.iqser.red.pdftronlogic.commons.PdfTextExtraction.extractAllTextFromDocument;
|
||||||
import static org.assertj.core.api.AssertionsForClassTypes.assertThat;
|
import static org.assertj.core.api.AssertionsForClassTypes.assertThat;
|
||||||
|
|
||||||
|
import java.io.ByteArrayOutputStream;
|
||||||
import java.io.FileInputStream;
|
import java.io.FileInputStream;
|
||||||
import java.io.FileOutputStream;
|
import java.io.FileOutputStream;
|
||||||
|
|
||||||
@ -64,6 +65,19 @@ class InvisibleElementRemovalServiceTest {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@SneakyThrows
|
||||||
|
void page32DoesNotCrash() {
|
||||||
|
|
||||||
|
String fileName = "files/Page32.pdf";
|
||||||
|
|
||||||
|
try (var in = this.getClass().getClassLoader().getResourceAsStream(fileName); var out = new ByteArrayOutputStream()) {
|
||||||
|
invisibleElementRemovalService.removeInvisibleElements(in, out, false);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@SneakyThrows
|
@SneakyThrows
|
||||||
void removeInvisibleTextClippedByFormObjects() {
|
void removeInvisibleTextClippedByFormObjects() {
|
||||||
|
|||||||
BIN
src/test/resources/files/Page32.pdf
Normal file
BIN
src/test/resources/files/Page32.pdf
Normal file
Binary file not shown.
Loading…
x
Reference in New Issue
Block a user