You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@pdfbox.apache.org by "Andreas Lehmkühler (JIRA)" <ji...@apache.org> on 2009/02/06 07:47:59 UTC
[jira] Resolved: (PDFBOX-173) Some suggested COSString improvements
[ https://issues.apache.org/jira/browse/PDFBOX-173?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Andreas Lehmkühler resolved PDFBOX-173.
---------------------------------------
Resolution: Fixed
Fix Version/s: 0.8.0-incubator
With version 741433 I've fixed the minor bugs and made the improvements Brian Matthews (blmatthews at users.sourceforge.net) suggested
> Some suggested COSString improvements
> -------------------------------------
>
> Key: PDFBOX-173
> URL: https://issues.apache.org/jira/browse/PDFBOX-173
> Project: PDFBox
> Issue Type: Bug
> Components: Parsing
> Priority: Minor
> Fix For: 0.8.0-incubator
>
>
> [imported from SourceForge]
> http://sourceforge.net/tracker/index.php?group_id=78314&atid=552832&aid=1502533
> Originally submitted by blmatthews on 2006-06-07 14:26.
> I have 3 suggested improvements to COSString. The
> first two I'd consider bugs, the 3rd is an
> enhancement. I'll attach a diff fixing all three.
> 1. COSString.equals compares the underlying byte
> arrays, so a COSString read from a Unicode string in
> a PDF file will appear different than a COSString
> built programmatically, even if they contain the same
> characters.
> For example:
> COSString s1 = new COSString(new byte[]{
> -2, -1, 0, 115, 0, 116, 0, 114});
> COSString s2 = new COSString("str");
> System.out.println(s1.equals(s2));
> prints false, even though both strings consist of
> just the characters 's', 't', 'r' in that order,
> which I'd argue makes them the same.
> 2. COSString.toString just does a new String(getBytes
> ()), so if the bytes in the underlying byte array
> form a Unicode string, it will convert every byte to
> a character, including the BOM and 0's. Instead it
> should call getString(), which accounts for Unicode
> strings and converts using an appropriate encoding.
> 3. COSString.equals will only return true if the
> object being compared against is another COSString.
> It would be handy if it fell back to comparing
> against obj.toString if the object isn't a COSString.
> In particular, this would let you do things like:
> if (acosstring.equals("hello"))
> This would be a useful change in the other
> COS*.equals methods as well, particularly with
> autoboxing, as you should be able to do things like:
> if (acosinteger.equals(42))
> The attached diff basically runs everything through
> getString(). As that could be relatively expensive, I
> have getString() cache the resulting String.
> [attachment on SourceForge]
> http://sourceforge.net/tracker/download.php?group_id=78314&atid=552832&aid=1502533&file_id=180913
> COSString.diff (text/plain), 2665 bytes
> COSString diffs
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.