Hi. Founded text fragment “Number” has wrong rectangle coordinates.
Run attached test to reproduce this case.
Source file: Report.pdf (618.6 KB)
Result screen: screen.png (57.9 KB)
Java version: 11
Aspose PDF version: 22.2
@Test
void example() throws IOException {
var pdfInputStream = new ClassPathResource("pdf/Report.pdf").getInputStream();
var document = new Document(pdfInputStream);
var page = document.getPages().get_Item(1);
var textFragment = findFirstTextFragment(page, "Number");
var textFragmentRectangle = textFragment.getRectangle();
var annotationRectangle = page.getAnnotations().get_Item(1).getRectangle(true);
var transformTextFragmentRectangle = page.getRotationMatrix().reverse().transform(textFragmentRectangle);
var transformAnnotationRectangle = page.getRotationMatrix().reverse().transform(annotationRectangle);
drawRectangleOnPage(transformTextFragmentRectangle, page, 1, new SetRGBColorStroke(1, 0,0));
drawRectangleOnPage(transformAnnotationRectangle, page, 1, new SetRGBColorStroke(0, 0,1));
document.save("Result.pdf");
}
public static TextFragment findFirstTextFragment(Page page, String searchValue) {
var absorber = new TextFragmentAbsorber();
absorber.setPhrase(searchValue);
page.accept(absorber);
var textFragments = absorber.getTextFragments();
if (textFragments.size() != 0) {
return textFragments.get_Item(1);
} else {
return null;
}
}
private static void drawRectangleOnPage(Rectangle rectangle, Page page, int lineWidth, SetRGBColorStroke color) {
page.getContents().add(new GSave());
page.getContents().add(new ConcatenateMatrix(1, 0, 0, 1, 0, 0));
page.getContents().add(color);
page.getContents().add(new SetLineWidth(lineWidth));
page.getContents().add(new Re(rectangle.getLLX(), rectangle.getLLY(), rectangle.getWidth(), rectangle.getHeight()));
page.getContents().add(new ClosePathStroke());
page.getContents().add(new GRestore());
}
Am I do something wrong? Have you got any workaround for this issue?