You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@pdfbox.apache.org by "Mel Martinez (JIRA)" <ji...@apache.org> on 2010/03/15 23:28:28 UTC
[jira] Created: (PDFBOX-662) PDFTextStripper character suppression
PDFTextStripper character suppression
-------------------------------------
Key: PDFBOX-662
URL: https://issues.apache.org/jira/browse/PDFBOX-662
Project: PDFBox
Issue Type: Bug
Components: Text extraction
Affects Versions: 1.0.0
Environment: any
Reporter: Mel Martinez
When parsing the file posted as an example for PDFBox-659, I noticed that numerous characters were missing from the extracted text.
They are getting 'suppressed' in the PDFTextStripper.processTextPosition(TextPosition) method in a section that is meant to try to filter duplicate chars found in some MS Word - generated documents.
The problem is that the filter is over-zealous (in the case of this document) and matches real characters against other real characters in the text. Example
This is some text that has the letter 'e' in it multiple times.
The filter might match one of the later 'e's to an earlier 'e' incorrectly (for example, the one at the end of 'some'), resulting in the extracted text:
This is some text that has the letter 'e' in it multiple tims.
.
>From what I can tell this is because it is using the raw, padded coordinates rather than resolved coordinates.
The example PDF document (see PDFBOX-659) has pages that use both positive and negative raw coordinates that upon my cursory inspection don't always resolve on the same offset point.
The suppression test logic compares textposition elements that seem to have different offsets, possibly due to different amounts of padding. Thus the 'overlap' that it detects is wrong. Its not comparing apples to apples.
The document renders perfectly in Acrobat, so I believe we are not handling the coordinates correctly.
A workaround is possible through suppressing the filtering by setting the
PDFTextStripper.setSuppressDuplicateOverlappingText(boolean)
attribute to false. But that is just hiding the fact that the logic is wrong.
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.