svn propchange: r1917615 - svn:log
Author: lehmi Revision: 1917615 Modified property: svn:log Modified: svn:log at Thu May 9 11:47:46 2024 -- --- svn:log (original) +++ svn:log Thu May 9 11:47:46 2024 @@ -1 +1 @@ -PDFBOX-5469: reformat source +PDFBOX-5819: reformat source
svn propchange: r1917614 - svn:log
Author: lehmi Revision: 1917614 Modified property: svn:log Modified: svn:log at Thu May 9 11:47:36 2024 -- --- svn:log (original) +++ svn:log Thu May 9 11:47:36 2024 @@ -1 +1 @@ -PDFBOX-5469: use inner wrapper class to transfer values +PDFBOX-5819: use inner wrapper class to transfer values
svn propchange: r1917616 - svn:log
Author: lehmi Revision: 1917616 Modified property: svn:log Modified: svn:log at Thu May 9 11:47:20 2024 -- --- svn:log (original) +++ svn:log Thu May 9 11:47:20 2024 @@ -1 +1 @@ -PDFBOX-5469: reformat source +PDFBOX-5819: reformat source
svn propchange: r1917613 - svn:log
Author: lehmi Revision: 1917613 Modified property: svn:log Modified: svn:log at Thu May 9 11:47:09 2024 -- --- svn:log (original) +++ svn:log Thu May 9 11:47:09 2024 @@ -1 +1 @@ -PDFBOX-5469: use inner wrapper class to transfer values +PDFBOX-5819: use inner wrapper class to transfer values
svn commit: r1917616 - /pdfbox/trunk/fontbox/src/main/java/org/apache/fontbox/cff/Type2CharStringParser.java
Author: lehmi Date: Thu May 9 11:46:12 2024 New Revision: 1917616 URL: http://svn.apache.org/viewvc?rev=1917616=rev Log: PDFBOX-5469: reformat source Modified: pdfbox/trunk/fontbox/src/main/java/org/apache/fontbox/cff/Type2CharStringParser.java Modified: pdfbox/trunk/fontbox/src/main/java/org/apache/fontbox/cff/Type2CharStringParser.java URL: http://svn.apache.org/viewvc/pdfbox/trunk/fontbox/src/main/java/org/apache/fontbox/cff/Type2CharStringParser.java?rev=1917616=1917615=1917616=diff == --- pdfbox/trunk/fontbox/src/main/java/org/apache/fontbox/cff/Type2CharStringParser.java (original) +++ pdfbox/trunk/fontbox/src/main/java/org/apache/fontbox/cff/Type2CharStringParser.java Thu May 9 11:46:12 2024 @@ -24,6 +24,7 @@ import org.apache.fontbox.cff.CharString /** * This class represents a converter for a mapping into a Type2-sequence. + * * @author Villu Ruusmann */ public class Type2CharStringParser @@ -62,13 +63,13 @@ public class Type2CharStringParser return glyphData.sequence; } -private void parseSequence(byte[] bytes, byte[][] globalSubrIndex, -byte[][] localSubrIndex, GlyphData glyphData) -throws IOException +private void parseSequence(byte[] bytes, byte[][] globalSubrIndex, byte[][] localSubrIndex, +GlyphData glyphData) throws IOException { DataInput input = new DataInputByteArray(bytes); boolean localSubroutineIndexProvided = localSubrIndex != null && localSubrIndex.length > 0; -boolean globalSubroutineIndexProvided = globalSubrIndex != null && globalSubrIndex.length > 0; +boolean globalSubroutineIndexProvided = globalSubrIndex != null +&& globalSubrIndex.length > 0; while (input.hasRemaining()) { @@ -81,14 +82,14 @@ public class Type2CharStringParser { processCallSubr(globalSubrIndex, localSubrIndex, globalSubrIndex, glyphData); } -else if ( (b0 >= 0 && b0 <= 27) || (b0 >= 29 && b0 <= 31)) +else if ((b0 >= 0 && b0 <= 27) || (b0 >= 29 && b0 <= 31)) { glyphData.sequence.add(readCommand(b0, input, glyphData)); -} +} else if (b0 == 28 || (b0 >= 32 && b0 <= 255)) { glyphData.sequence.add(readNumber(b0, input)); -} +} else { throw new IllegalArgumentException(); @@ -97,8 +98,7 @@ public class Type2CharStringParser } private void processCallSubr(byte[][] globalSubrIndex, byte[][] localSubrIndex, -byte[][] subrIndex, GlyphData glyphData) -throws IOException +byte[][] subrIndex, GlyphData glyphData) throws IOException { int subrNumber = calculateSubrNumber( (Integer) glyphData.sequence.remove(glyphData.sequence.size() - 1), @@ -167,17 +167,17 @@ public class Type2CharStringParser if (b0 == 28) { return (int) input.readShort(); -} +} else if (b0 >= 32 && b0 <= 246) { return b0 - 139; -} +} else if (b0 >= 247 && b0 <= 250) { int b1 = input.readUnsignedByte(); return (b0 - 247) * 256 + b1 + 108; -} +} else if (b0 >= 251 && b0 <= 254) { int b1 = input.readUnsignedByte(); @@ -190,7 +190,7 @@ public class Type2CharStringParser // The lower bytes are representing the digits after the decimal point double fraction = input.readUnsignedShort() / 65535d; return value + fraction; -} +} else { throw new IllegalArgumentException(); @@ -200,7 +200,7 @@ public class Type2CharStringParser private int getMaskLength(int hstemCount, int vstemCount) { int hintCount = hstemCount + vstemCount; -int length = hintCount / 8; +int length = hintCount / 8; if (hintCount % 8 > 0) { length++;
svn commit: r1917615 - /pdfbox/branches/3.0/fontbox/src/main/java/org/apache/fontbox/cff/Type2CharStringParser.java
Author: lehmi Date: Thu May 9 11:45:40 2024 New Revision: 1917615 URL: http://svn.apache.org/viewvc?rev=1917615=rev Log: PDFBOX-5469: reformat source Modified: pdfbox/branches/3.0/fontbox/src/main/java/org/apache/fontbox/cff/Type2CharStringParser.java Modified: pdfbox/branches/3.0/fontbox/src/main/java/org/apache/fontbox/cff/Type2CharStringParser.java URL: http://svn.apache.org/viewvc/pdfbox/branches/3.0/fontbox/src/main/java/org/apache/fontbox/cff/Type2CharStringParser.java?rev=1917615=1917614=1917615=diff == --- pdfbox/branches/3.0/fontbox/src/main/java/org/apache/fontbox/cff/Type2CharStringParser.java (original) +++ pdfbox/branches/3.0/fontbox/src/main/java/org/apache/fontbox/cff/Type2CharStringParser.java Thu May 9 11:45:40 2024 @@ -24,6 +24,7 @@ import org.apache.fontbox.cff.CharString /** * This class represents a converter for a mapping into a Type2-sequence. + * * @author Villu Ruusmann */ public class Type2CharStringParser @@ -64,12 +65,12 @@ public class Type2CharStringParser } private void parseSequence(byte[] bytes, byte[][] globalSubrIndex, byte[][] localSubrIndex, -GlyphData glyphData) -throws IOException +GlyphData glyphData) throws IOException { DataInput input = new DataInputByteArray(bytes); boolean localSubroutineIndexProvided = localSubrIndex != null && localSubrIndex.length > 0; -boolean globalSubroutineIndexProvided = globalSubrIndex != null && globalSubrIndex.length > 0; +boolean globalSubroutineIndexProvided = globalSubrIndex != null +&& globalSubrIndex.length > 0; while (input.hasRemaining()) { @@ -82,14 +83,14 @@ public class Type2CharStringParser { processCallSubr(globalSubrIndex, localSubrIndex, globalSubrIndex, glyphData); } -else if ( (b0 >= 0 && b0 <= 27) || (b0 >= 29 && b0 <= 31)) +else if ((b0 >= 0 && b0 <= 27) || (b0 >= 29 && b0 <= 31)) { glyphData.sequence.add(readCommand(b0, input, glyphData)); -} +} else if (b0 == 28 || (b0 >= 32 && b0 <= 255)) { glyphData.sequence.add(readNumber(b0, input)); -} +} else { throw new IllegalArgumentException(); @@ -98,8 +99,7 @@ public class Type2CharStringParser } private void processCallSubr(byte[][] globalSubrIndex, byte[][] localSubrIndex, -byte[][] subrIndex, GlyphData glyphData) -throws IOException +byte[][] subrIndex, GlyphData glyphData) throws IOException { int subrNumber = calculateSubrNumber( (Integer) glyphData.sequence.remove(glyphData.sequence.size() - 1), @@ -168,17 +168,17 @@ public class Type2CharStringParser if (b0 == 28) { return (int) input.readShort(); -} +} else if (b0 >= 32 && b0 <= 246) { return b0 - 139; -} +} else if (b0 >= 247 && b0 <= 250) { int b1 = input.readUnsignedByte(); return (b0 - 247) * 256 + b1 + 108; -} +} else if (b0 >= 251 && b0 <= 254) { int b1 = input.readUnsignedByte(); @@ -191,7 +191,7 @@ public class Type2CharStringParser // The lower bytes are representing the digits after the decimal point double fraction = input.readUnsignedShort() / 65535d; return value + fraction; -} +} else { throw new IllegalArgumentException(); @@ -201,7 +201,7 @@ public class Type2CharStringParser private int getMaskLength(int hstemCount, int vstemCount) { int hintCount = hstemCount + vstemCount; -int length = hintCount / 8; +int length = hintCount / 8; if (hintCount % 8 > 0) { length++;
svn commit: r1917614 - /pdfbox/branches/3.0/fontbox/src/main/java/org/apache/fontbox/cff/Type2CharStringParser.java
Author: lehmi Date: Thu May 9 11:44:16 2024 New Revision: 1917614 URL: http://svn.apache.org/viewvc?rev=1917614=rev Log: PDFBOX-5469: use inner wrapper class to transfer values Modified: pdfbox/branches/3.0/fontbox/src/main/java/org/apache/fontbox/cff/Type2CharStringParser.java Modified: pdfbox/branches/3.0/fontbox/src/main/java/org/apache/fontbox/cff/Type2CharStringParser.java URL: http://svn.apache.org/viewvc/pdfbox/branches/3.0/fontbox/src/main/java/org/apache/fontbox/cff/Type2CharStringParser.java?rev=1917614=1917613=1917614=diff == --- pdfbox/branches/3.0/fontbox/src/main/java/org/apache/fontbox/cff/Type2CharStringParser.java (original) +++ pdfbox/branches/3.0/fontbox/src/main/java/org/apache/fontbox/cff/Type2CharStringParser.java Thu May 9 11:44:16 2024 @@ -58,11 +58,13 @@ public class Type2CharStringParser public List parse(byte[] bytes, byte[][] globalSubrIndex, byte[][] localSubrIndex, String glyphName) throws IOException { -return parseSequence(bytes, globalSubrIndex, localSubrIndex, new ArrayList<>(), 0, 0); +GlyphData glyphData = new GlyphData(); +parseSequence(bytes, globalSubrIndex, localSubrIndex, glyphData); +return glyphData.sequence; } -private List parseSequence(byte[] bytes, byte[][] globalSubrIndex, -byte[][] localSubrIndex, List sequence, int hstemCount, int vstemCount) +private void parseSequence(byte[] bytes, byte[][] globalSubrIndex, byte[][] localSubrIndex, +GlyphData glyphData) throws IOException { DataInput input = new DataInputByteArray(bytes); @@ -74,48 +76,44 @@ public class Type2CharStringParser int b0 = input.readUnsignedByte(); if (b0 == CALLSUBR && localSubroutineIndexProvided) { -processCallSubr(globalSubrIndex, localSubrIndex, localSubrIndex, sequence, -hstemCount, vstemCount); +processCallSubr(globalSubrIndex, localSubrIndex, localSubrIndex, glyphData); } else if (b0 == CALLGSUBR && globalSubroutineIndexProvided) { -processCallSubr(globalSubrIndex, localSubrIndex, globalSubrIndex, sequence, -hstemCount, vstemCount); +processCallSubr(globalSubrIndex, localSubrIndex, globalSubrIndex, glyphData); } else if ( (b0 >= 0 && b0 <= 27) || (b0 >= 29 && b0 <= 31)) { -sequence.add( -readCommand(b0, input, countNumbers(sequence), hstemCount, vstemCount)); +glyphData.sequence.add(readCommand(b0, input, glyphData)); } else if (b0 == 28 || (b0 >= 32 && b0 <= 255)) { -sequence.add(readNumber(b0, input)); +glyphData.sequence.add(readNumber(b0, input)); } else { throw new IllegalArgumentException(); } } -return sequence; } private void processCallSubr(byte[][] globalSubrIndex, byte[][] localSubrIndex, -byte[][] subrIndex, List sequence, int hstemCount, int vstemCount) +byte[][] subrIndex, GlyphData glyphData) throws IOException { -int subrNumber = calculateSubrNumber((Integer) sequence.remove(sequence.size() - 1), +int subrNumber = calculateSubrNumber( +(Integer) glyphData.sequence.remove(glyphData.sequence.size() - 1), subrIndex.length); if (subrNumber < subrIndex.length) { byte[] subrBytes = subrIndex[subrNumber]; -parseSequence(subrBytes, globalSubrIndex, localSubrIndex, sequence, hstemCount, -vstemCount); -Object lastItem = sequence.get(sequence.size() - 1); +parseSequence(subrBytes, globalSubrIndex, localSubrIndex, glyphData); +Object lastItem = glyphData.sequence.get(glyphData.sequence.size() - 1); if (lastItem instanceof CharStringCommand && Type2KeyWord.RET == ((CharStringCommand) lastItem).getType2KeyWord()) { // remove "return" command -sequence.remove(sequence.size() - 1); +glyphData.sequence.remove(glyphData.sequence.size() - 1); } } } @@ -133,26 +131,25 @@ public class Type2CharStringParser return 32768 + operand; } -private CharStringCommand readCommand(int b0, DataInput input, int numberCount, int hstemCount, -int vstemCount) +private CharStringCommand readCommand(int b0, DataInput input, GlyphData glyphData) throws IOException { switch (b0)
svn commit: r1917613 - /pdfbox/trunk/fontbox/src/main/java/org/apache/fontbox/cff/Type2CharStringParser.java
Author: lehmi Date: Thu May 9 11:38:50 2024 New Revision: 1917613 URL: http://svn.apache.org/viewvc?rev=1917613=rev Log: PDFBOX-5469: use inner wrapper class to transfer values Modified: pdfbox/trunk/fontbox/src/main/java/org/apache/fontbox/cff/Type2CharStringParser.java Modified: pdfbox/trunk/fontbox/src/main/java/org/apache/fontbox/cff/Type2CharStringParser.java URL: http://svn.apache.org/viewvc/pdfbox/trunk/fontbox/src/main/java/org/apache/fontbox/cff/Type2CharStringParser.java?rev=1917613=1917612=1917613=diff == --- pdfbox/trunk/fontbox/src/main/java/org/apache/fontbox/cff/Type2CharStringParser.java (original) +++ pdfbox/trunk/fontbox/src/main/java/org/apache/fontbox/cff/Type2CharStringParser.java Thu May 9 11:38:50 2024 @@ -57,11 +57,13 @@ public class Type2CharStringParser public List parse(byte[] bytes, byte[][] globalSubrIndex, byte[][] localSubrIndex) throws IOException { -return parseSequence(bytes, globalSubrIndex, localSubrIndex, new ArrayList<>(), 0, 0); +GlyphData glyphData = new GlyphData(); +parseSequence(bytes, globalSubrIndex, localSubrIndex, glyphData); +return glyphData.sequence; } -private List parseSequence(byte[] bytes, byte[][] globalSubrIndex, -byte[][] localSubrIndex, List sequence, int hstemCount, int vstemCount) +private void parseSequence(byte[] bytes, byte[][] globalSubrIndex, +byte[][] localSubrIndex, GlyphData glyphData) throws IOException { DataInput input = new DataInputByteArray(bytes); @@ -73,45 +75,44 @@ public class Type2CharStringParser int b0 = input.readUnsignedByte(); if (b0 == CALLSUBR && localSubroutineIndexProvided) { -processCallSubr(globalSubrIndex, localSubrIndex, localSubrIndex, sequence); +processCallSubr(globalSubrIndex, localSubrIndex, localSubrIndex, glyphData); } else if (b0 == CALLGSUBR && globalSubroutineIndexProvided) { -processCallSubr(globalSubrIndex, localSubrIndex, globalSubrIndex, sequence); +processCallSubr(globalSubrIndex, localSubrIndex, globalSubrIndex, glyphData); } else if ( (b0 >= 0 && b0 <= 27) || (b0 >= 29 && b0 <= 31)) { -sequence.add( -readCommand(b0, input, countNumbers(sequence), hstemCount, vstemCount)); +glyphData.sequence.add(readCommand(b0, input, glyphData)); } else if (b0 == 28 || (b0 >= 32 && b0 <= 255)) { -sequence.add(readNumber(b0, input)); +glyphData.sequence.add(readNumber(b0, input)); } else { throw new IllegalArgumentException(); } } -return sequence; } private void processCallSubr(byte[][] globalSubrIndex, byte[][] localSubrIndex, -byte[][] subrIndex, List sequence) +byte[][] subrIndex, GlyphData glyphData) throws IOException { -int subrNumber = calculateSubrNumber((Integer) sequence.remove(sequence.size() - 1), +int subrNumber = calculateSubrNumber( +(Integer) glyphData.sequence.remove(glyphData.sequence.size() - 1), subrIndex.length); if (subrNumber < subrIndex.length) { byte[] subrBytes = subrIndex[subrNumber]; -parseSequence(subrBytes, globalSubrIndex, localSubrIndex, sequence, 0, 0); -Object lastItem = sequence.get(sequence.size() - 1); +parseSequence(subrBytes, globalSubrIndex, localSubrIndex, glyphData); +Object lastItem = glyphData.sequence.get(glyphData.sequence.size() - 1); if (lastItem instanceof CharStringCommand && Type2KeyWord.RET == ((CharStringCommand) lastItem).getType2KeyWord()) { // remove "return" command -sequence.remove(sequence.size() - 1); +glyphData.sequence.remove(glyphData.sequence.size() - 1); } } } @@ -129,26 +130,25 @@ public class Type2CharStringParser return 32768 + operand; } -private CharStringCommand readCommand(int b0, DataInput input, int numberCount, int hstemCount, -int vstemCount) +private CharStringCommand readCommand(int b0, DataInput input, GlyphData glyphData) throws IOException { switch (b0) { case 1: case 18: -hstemCount += numberCount / 2; +glyphData.hstemCount += countNumbers(glyphData.sequence) / 2; return CharStringCommand.getInstan
svn commit: r1917611 - /pdfbox/branches/3.0/pdfbox/src/main/java/org/apache/pdfbox/cos/COSString.java
Author: lehmi Date: Thu May 9 11:09:31 2024 New Revision: 1917611 URL: http://svn.apache.org/viewvc?rev=1917611=rev Log: PDFBOX-5469: deprecate setForceHexForm Modified: pdfbox/branches/3.0/pdfbox/src/main/java/org/apache/pdfbox/cos/COSString.java Modified: pdfbox/branches/3.0/pdfbox/src/main/java/org/apache/pdfbox/cos/COSString.java URL: http://svn.apache.org/viewvc/pdfbox/branches/3.0/pdfbox/src/main/java/org/apache/pdfbox/cos/COSString.java?rev=1917611=1917610=1917611=diff == --- pdfbox/branches/3.0/pdfbox/src/main/java/org/apache/pdfbox/cos/COSString.java (original) +++ pdfbox/branches/3.0/pdfbox/src/main/java/org/apache/pdfbox/cos/COSString.java Thu May 9 11:09:31 2024 @@ -155,11 +155,13 @@ public final class COSString extends COS } /** - * Sets whether to force the string is to be written in hex form. - * This is needed when signing PDF files. + * Sets whether to force the string is to be written in hex form. This is needed when signing PDF files. * * @param value True to force hex. + * + * @deprecated to be removed in a future release. */ +@Deprecated public void setForceHexForm(boolean value) { this.forceHexForm = value;
svn commit: r1917610 - in /pdfbox/trunk/pdfbox/src: main/java/org/apache/pdfbox/cos/ main/java/org/apache/pdfbox/pdfparser/ main/java/org/apache/pdfbox/pdfwriter/ main/java/org/apache/pdfbox/pdmodel/e
Author: lehmi Date: Thu May 9 10:54:36 2024 New Revision: 1917610 URL: http://svn.apache.org/viewvc?rev=1917610=rev Log: PDFBOX-5469: make COSString immutable Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/cos/COSString.java pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdfparser/COSParser.java pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdfwriter/COSWriter.java pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/encryption/SecurityHandler.java pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/digitalsignature/PDSignature.java pdfbox/trunk/pdfbox/src/test/java/org/apache/pdfbox/cos/TestCOSString.java Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/cos/COSString.java URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/cos/COSString.java?rev=1917610=1917609=1917610=diff == --- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/cos/COSString.java (original) +++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/cos/COSString.java Thu May 9 10:54:36 2024 @@ -47,8 +47,8 @@ public final class COSString extends COS { private static final Logger LOG = LogManager.getLogger(COSString.class); -private byte[] bytes; -private boolean forceHexForm; +private final byte[] bytes; +private final boolean forceHexForm; // legacy behaviour for old PDFParser public static final boolean FORCE_PARSING = @@ -62,7 +62,21 @@ public final class COSString extends COS */ public COSString(byte[] bytes) { -setValue(bytes); +this(bytes, false); +} + +/** + * Creates a new PDF string from a byte array. This method can be used to read a string from an existing PDF file, + * or to create a new byte string. + * + * @param bytes The raw bytes of the PDF text string or byte string. + * @param forceHex forces the hexadecimal presentation of the string if set to true + * + */ +public COSString(byte[] bytes, boolean forceHex) +{ +forceHexForm = forceHex; +this.bytes = Arrays.copyOf(bytes, bytes.length); } /** @@ -72,6 +86,19 @@ public final class COSString extends COS */ public COSString(String text) { +this(text, false); +} + +/** + * Creates a new text string from a Java String. + * + * @param text The string value of the object. + * @param forceHex forces the hexadecimal presentation of the string if set to true + * + */ +public COSString(String text, boolean forceHex) +{ +forceHexForm = forceHex; // check whether the string uses only characters available in PDFDocEncoding boolean isOnlyPDFDocEncoding = true; for (char c : text.toCharArray()) @@ -142,30 +169,6 @@ public final class COSString extends COS } /** - * Sets the raw value of this string. - * - * @param value The raw bytes of the PDF text string or byte string. - * - * @deprecated to be removed in a future release. - */ -@Deprecated -public void setValue(byte[] value) -{ -bytes = value.clone(); -} - -/** - * Sets whether to force the string is to be written in hex form. - * This is needed when signing PDF files. - * - * @param value True to force hex. - */ -public void setForceHexForm(boolean value) -{ -this.forceHexForm = value; -} - -/** * Returns true if the string is to be written in hex form. * * @return true if the COSString is written in hex form @@ -219,7 +222,7 @@ public final class COSString extends COS */ public byte[] getBytes() { -return bytes.clone(); +return Arrays.copyOf(bytes, bytes.length); } /** Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdfparser/COSParser.java URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdfparser/COSParser.java?rev=1917610=1917609=1917610=diff == --- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdfparser/COSParser.java (original) +++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdfparser/COSParser.java Thu May 9 10:54:36 2024 @@ -588,7 +588,9 @@ public class COSParser extends BaseParse } else if (securityHandler != null) { -securityHandler.decrypt(parsedObject, objKey.getNumber(), objKey.getGeneration()); +parsedObject = securityHandler.decrypt(parsedObject, objKey.getNumber(), +objKey.getGeneration()); +parsedObject.setKey(objKey); } if (!endObjectKey.startsWith(ENDOBJ_STRING)) Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdfwriter
svn commit: r1917602 - /pdfbox/branches/3.0/fontbox/src/main/java/org/apache/fontbox/cff/Type2CharStringParser.java
Author: lehmi Date: Thu May 9 10:11:00 2024 New Revision: 1917602 URL: http://svn.apache.org/viewvc?rev=1917602=rev Log: PDFBOX-5819: remove private member fields to make Type2CharStringParser thread-safe again Modified: pdfbox/branches/3.0/fontbox/src/main/java/org/apache/fontbox/cff/Type2CharStringParser.java Modified: pdfbox/branches/3.0/fontbox/src/main/java/org/apache/fontbox/cff/Type2CharStringParser.java URL: http://svn.apache.org/viewvc/pdfbox/branches/3.0/fontbox/src/main/java/org/apache/fontbox/cff/Type2CharStringParser.java?rev=1917602=1917601=1917602=diff == --- pdfbox/branches/3.0/fontbox/src/main/java/org/apache/fontbox/cff/Type2CharStringParser.java (original) +++ pdfbox/branches/3.0/fontbox/src/main/java/org/apache/fontbox/cff/Type2CharStringParser.java Thu May 9 10:11:00 2024 @@ -32,11 +32,7 @@ public class Type2CharStringParser private static final int CALLSUBR = 10; private static final int CALLGSUBR = 29; -private int hstemCount; -private int vstemCount; -private List sequence; private final String fontName; -private String currentGlyph; /** * Constructs a new Type1CharStringParser object for a Type 1-equivalent font. @@ -62,17 +58,12 @@ public class Type2CharStringParser public List parse(byte[] bytes, byte[][] globalSubrIndex, byte[][] localSubrIndex, String glyphName) throws IOException { -// reset values if the parser is used multiple times -hstemCount = 0; -vstemCount = 0; -// create a new list as it is used as return value -sequence = new ArrayList<>(); -currentGlyph = glyphName; -return parseSequence(bytes, globalSubrIndex, localSubrIndex); +return parseSequence(bytes, globalSubrIndex, localSubrIndex, new ArrayList<>(), 0, 0); } private List parseSequence(byte[] bytes, byte[][] globalSubrIndex, -byte[][] localSubrIndex) throws IOException +byte[][] localSubrIndex, List sequence, int hstemCount, int vstemCount) +throws IOException { DataInput input = new DataInputByteArray(bytes); boolean localSubroutineIndexProvided = localSubrIndex != null && localSubrIndex.length > 0; @@ -83,15 +74,18 @@ public class Type2CharStringParser int b0 = input.readUnsignedByte(); if (b0 == CALLSUBR && localSubroutineIndexProvided) { -processCallSubr(globalSubrIndex, localSubrIndex, localSubrIndex); +processCallSubr(globalSubrIndex, localSubrIndex, localSubrIndex, sequence, +hstemCount, vstemCount); } else if (b0 == CALLGSUBR && globalSubroutineIndexProvided) { -processCallSubr(globalSubrIndex, localSubrIndex, globalSubrIndex); +processCallSubr(globalSubrIndex, localSubrIndex, globalSubrIndex, sequence, +hstemCount, vstemCount); } else if ( (b0 >= 0 && b0 <= 27) || (b0 >= 29 && b0 <= 31)) { -sequence.add(readCommand(b0, input)); +sequence.add( +readCommand(b0, input, countNumbers(sequence), hstemCount, vstemCount)); } else if (b0 == 28 || (b0 >= 32 && b0 <= 255)) { @@ -105,7 +99,8 @@ public class Type2CharStringParser return sequence; } -private void processCallSubr(byte[][] globalSubrIndex, byte[][] localSubrIndex, byte[][] subrIndex) +private void processCallSubr(byte[][] globalSubrIndex, byte[][] localSubrIndex, +byte[][] subrIndex, List sequence, int hstemCount, int vstemCount) throws IOException { int subrNumber = calculateSubrNumber((Integer) sequence.remove(sequence.size() - 1), @@ -113,7 +108,8 @@ public class Type2CharStringParser if (subrNumber < subrIndex.length) { byte[] subrBytes = subrIndex[subrNumber]; -parseSequence(subrBytes, globalSubrIndex, localSubrIndex); +parseSequence(subrBytes, globalSubrIndex, localSubrIndex, sequence, hstemCount, +vstemCount); Object lastItem = sequence.get(sequence.size() - 1); if (lastItem instanceof CharStringCommand && Type2KeyWord.RET == ((CharStringCommand) lastItem).getType2KeyWord()) @@ -137,24 +133,26 @@ public class Type2CharStringParser return 32768 + operand; } -private CharStringCommand readCommand(int b0, DataInput input) throws IOException +private CharStringCommand readCommand(int b0, DataInput input, int numberCount, int hstemCount, +int vstemCount) +throws IOException { switch (b0)
svn commit: r1917601 - in /pdfbox/trunk/fontbox/src/main/java/org/apache/fontbox/cff: CFFCIDFont.java CFFType1Font.java Type2CharStringParser.java
Author: lehmi Date: Thu May 9 10:02:15 2024 New Revision: 1917601 URL: http://svn.apache.org/viewvc?rev=1917601=rev Log: PDFBOX-5819: remove private member fields to make Type2CharStringParser thread-safe again Modified: pdfbox/trunk/fontbox/src/main/java/org/apache/fontbox/cff/CFFCIDFont.java pdfbox/trunk/fontbox/src/main/java/org/apache/fontbox/cff/CFFType1Font.java pdfbox/trunk/fontbox/src/main/java/org/apache/fontbox/cff/Type2CharStringParser.java Modified: pdfbox/trunk/fontbox/src/main/java/org/apache/fontbox/cff/CFFCIDFont.java URL: http://svn.apache.org/viewvc/pdfbox/trunk/fontbox/src/main/java/org/apache/fontbox/cff/CFFCIDFont.java?rev=1917601=1917600=1917601=diff == --- pdfbox/trunk/fontbox/src/main/java/org/apache/fontbox/cff/CFFCIDFont.java (original) +++ pdfbox/trunk/fontbox/src/main/java/org/apache/fontbox/cff/CFFCIDFont.java Thu May 9 10:02:15 2024 @@ -21,7 +21,6 @@ import java.awt.geom.GeneralPath; import java.io.IOException; import java.util.Collections; import java.util.List; -import java.util.Locale; import java.util.Map; import java.util.concurrent.ConcurrentHashMap; import org.apache.fontbox.type1.Type1CharStringReader; @@ -236,7 +235,7 @@ public class CFFCIDFont extends CFFFont bytes = charStrings[0]; // .notdef } List type2seq = getParser().parse(bytes, globalSubrIndex, -getLocalSubrIndex(gid), String.format(Locale.US, "%04x", cid)); +getLocalSubrIndex(gid)); type2 = new CIDKeyedType2CharString(reader, getName(), cid, gid, type2seq, getDefaultWidthX(gid), getNominalWidthX(gid)); charStringCache.put(cid, type2); Modified: pdfbox/trunk/fontbox/src/main/java/org/apache/fontbox/cff/CFFType1Font.java URL: http://svn.apache.org/viewvc/pdfbox/trunk/fontbox/src/main/java/org/apache/fontbox/cff/CFFType1Font.java?rev=1917601=1917600=1917601=diff == --- pdfbox/trunk/fontbox/src/main/java/org/apache/fontbox/cff/CFFType1Font.java (original) +++ pdfbox/trunk/fontbox/src/main/java/org/apache/fontbox/cff/CFFType1Font.java Thu May 9 10:02:15 2024 @@ -138,8 +138,7 @@ public class CFFType1Font extends CFFFon // .notdef bytes = charStrings[0]; } -List type2seq = getParser().parse(bytes, globalSubrIndex, getLocalSubrIndex(), -name); +List type2seq = getParser().parse(bytes, globalSubrIndex, getLocalSubrIndex()); type2 = new Type2CharString(reader, getName(), name, gid, type2seq, getDefaultWidthX(), getNominalWidthX()); charStringCache.put(gid, type2); Modified: pdfbox/trunk/fontbox/src/main/java/org/apache/fontbox/cff/Type2CharStringParser.java URL: http://svn.apache.org/viewvc/pdfbox/trunk/fontbox/src/main/java/org/apache/fontbox/cff/Type2CharStringParser.java?rev=1917601=1917600=1917601=diff == --- pdfbox/trunk/fontbox/src/main/java/org/apache/fontbox/cff/Type2CharStringParser.java (original) +++ pdfbox/trunk/fontbox/src/main/java/org/apache/fontbox/cff/Type2CharStringParser.java Thu May 9 10:02:15 2024 @@ -32,11 +32,7 @@ public class Type2CharStringParser private static final int CALLSUBR = 10; private static final int CALLGSUBR = 29; -private int hstemCount; -private int vstemCount; -private List sequence; private final String fontName; -private String currentGlyph; /** * Constructs a new Type1CharStringParser object for a Type 1-equivalent font. @@ -54,25 +50,19 @@ public class Type2CharStringParser * @param bytes the given mapping as byte array * @param globalSubrIndex array containing all global subroutines * @param localSubrIndex array containing all local subroutines - * @param glyphName the name of the current glyph * * @return the Type2 sequence * @throws IOException if an error occurs during reading */ -public List parse(byte[] bytes, byte[][] globalSubrIndex, byte[][] localSubrIndex, -String glyphName) throws IOException +public List parse(byte[] bytes, byte[][] globalSubrIndex, byte[][] localSubrIndex) +throws IOException { -// reset values if the parser is used multiple times -hstemCount = 0; -vstemCount = 0; -// create a new list as it is used as return value -sequence = new ArrayList<>(); -currentGlyph = glyphName; -return parseSequence(bytes, globalSubrIndex, localSubrIndex); +return parseSequence(bytes, globalSubrIndex, localSubrIndex, new ArrayList<>(), 0, 0); } private List parseSeque
svn commit: r1917515 - /pdfbox/branches/3.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/PDDocument.java
Author: lehmi Date: Sun May 5 10:44:19 2024 New Revision: 1917515 URL: http://svn.apache.org/viewvc?rev=1917515=rev Log: PDFBOX-5809: cache keys of imported indirect objects to speed up the processing of big documents Modified: pdfbox/branches/3.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/PDDocument.java Modified: pdfbox/branches/3.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/PDDocument.java URL: http://svn.apache.org/viewvc/pdfbox/branches/3.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/PDDocument.java?rev=1917515=1917514=1917515=diff == --- pdfbox/branches/3.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/PDDocument.java (original) +++ pdfbox/branches/3.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/PDDocument.java Sun May 5 10:44:19 2024 @@ -151,6 +151,9 @@ public class PDDocument implements Close // to make sure only one signature is added private boolean signatureAdded = false; +// cache for the key of all imported indirect objects +private final List indirectObjectKeys = new ArrayList<>(); + /** * Creates an empty PDF document. * You need to add at least one page for the document to be valid. @@ -712,7 +715,6 @@ public class PDDocument implements Close */ private void setHighestImportedObjectNumber(PDPage importedPage) { -List indirectObjectKeys = new ArrayList<>(); importedPage.getCOSObject().getIndirectObjectKeys(indirectObjectKeys); long highestImportedNumber = indirectObjectKeys.stream().map(COSObjectKey::getNumber) .max(Long::compare).orElse(0L);
svn commit: r1917514 - /pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/PDDocument.java
Author: lehmi Date: Sun May 5 10:43:37 2024 New Revision: 1917514 URL: http://svn.apache.org/viewvc?rev=1917514=rev Log: PDFBOX-5809: cache keys of imported indirect objects to speed up the processing of big documents Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/PDDocument.java Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/PDDocument.java URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/PDDocument.java?rev=1917514=1917513=1917514=diff == --- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/PDDocument.java (original) +++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/PDDocument.java Sun May 5 10:43:37 2024 @@ -151,6 +151,9 @@ public class PDDocument implements Close // to make sure only one signature is added private boolean signatureAdded = false; +// cache for the key of all imported indirect objects +private final List indirectObjectKeys = new ArrayList<>(); + /** * Creates an empty PDF document. * You need to add at least one page for the document to be valid. @@ -713,7 +716,6 @@ public class PDDocument implements Close */ private void setHighestImportedObjectNumber(PDPage importedPage) { -List indirectObjectKeys = new ArrayList<>(); importedPage.getCOSObject().getIndirectObjectKeys(indirectObjectKeys); long highestImportedNumber = indirectObjectKeys.stream().map(COSObjectKey::getNumber) .max(Long::compare).orElse(0L);
svn commit: r1916982 - /pdfbox/trunk/fontbox/src/main/java/org/apache/fontbox/cff/Type1CharString.java
Author: lehmi Date: Sun Apr 14 10:44:23 2024 New Revision: 1916982 URL: http://svn.apache.org/viewvc?rev=1916982=rev Log: PDFBOX-5660: bugfix rendering Modified: pdfbox/trunk/fontbox/src/main/java/org/apache/fontbox/cff/Type1CharString.java Modified: pdfbox/trunk/fontbox/src/main/java/org/apache/fontbox/cff/Type1CharString.java URL: http://svn.apache.org/viewvc/pdfbox/trunk/fontbox/src/main/java/org/apache/fontbox/cff/Type1CharString.java?rev=1916982=1916981=1916982=diff == --- pdfbox/trunk/fontbox/src/main/java/org/apache/fontbox/cff/Type1CharString.java (original) +++ pdfbox/trunk/fontbox/src/main/java/org/apache/fontbox/cff/Type1CharString.java Sun Apr 14 10:44:23 2024 @@ -322,6 +322,7 @@ public class Type1CharString // indicates a PDFBox bug throw new IllegalArgumentException("Unhandled command: " + type1KeyWord); } +numbers.clear(); } /**
svn commit: r1916981 - /pdfbox/branches/3.0/fontbox/src/main/java/org/apache/fontbox/cff/Type1CharString.java
Author: lehmi Date: Sun Apr 14 10:44:12 2024 New Revision: 1916981 URL: http://svn.apache.org/viewvc?rev=1916981=rev Log: PDFBOX-5660: bugfix rendering Modified: pdfbox/branches/3.0/fontbox/src/main/java/org/apache/fontbox/cff/Type1CharString.java Modified: pdfbox/branches/3.0/fontbox/src/main/java/org/apache/fontbox/cff/Type1CharString.java URL: http://svn.apache.org/viewvc/pdfbox/branches/3.0/fontbox/src/main/java/org/apache/fontbox/cff/Type1CharString.java?rev=1916981=1916980=1916981=diff == --- pdfbox/branches/3.0/fontbox/src/main/java/org/apache/fontbox/cff/Type1CharString.java (original) +++ pdfbox/branches/3.0/fontbox/src/main/java/org/apache/fontbox/cff/Type1CharString.java Sun Apr 14 10:44:12 2024 @@ -321,6 +321,7 @@ public class Type1CharString // indicates a PDFBox bug throw new IllegalArgumentException("Unhandled command: " + type1KeyWord); } +numbers.clear(); } /**
svn commit: r1916977 - /pdfbox/trunk/fontbox/src/main/java/org/apache/fontbox/cff/Type1CharString.java
Author: lehmi Date: Sun Apr 14 09:20:30 2024 New Revision: 1916977 URL: http://svn.apache.org/viewvc?rev=1916977=rev Log: PDFBOX-5660: optimize, as suggested by cinstool; closes #188 Modified: pdfbox/trunk/fontbox/src/main/java/org/apache/fontbox/cff/Type1CharString.java Modified: pdfbox/trunk/fontbox/src/main/java/org/apache/fontbox/cff/Type1CharString.java URL: http://svn.apache.org/viewvc/pdfbox/trunk/fontbox/src/main/java/org/apache/fontbox/cff/Type1CharString.java?rev=1916977=1916976=1916977=diff == --- pdfbox/trunk/fontbox/src/main/java/org/apache/fontbox/cff/Type1CharString.java (original) +++ pdfbox/trunk/fontbox/src/main/java/org/apache/fontbox/cff/Type1CharString.java Sun Apr 14 09:20:30 2024 @@ -22,7 +22,6 @@ import java.awt.geom.Point2D; import java.awt.geom.Rectangle2D; import java.io.IOException; import java.util.ArrayList; -import java.util.Collections; import java.util.List; import org.apache.logging.log4j.Logger; @@ -150,9 +149,7 @@ public class Type1CharString type1Sequence.forEach(obj -> { if (obj instanceof CharStringCommand) { -List results = handleType1Command(numbers, (CharStringCommand) obj); -numbers.clear(); -numbers.addAll(results); +handleType1Command(numbers, (CharStringCommand) obj); } else { @@ -161,7 +158,7 @@ public class Type1CharString }); } -private List handleType1Command(List numbers, CharStringCommand command) +private void handleType1Command(List numbers, CharStringCommand command) { commandCount++; Type1KeyWord type1KeyWord = command.getType1KeyWord(); @@ -169,7 +166,8 @@ public class Type1CharString { // indicates an invalid charstring LOG.warn("Unknown charstring command in glyph {} of font {}", glyphName, fontName); -return Collections.emptyList(); +numbers.clear(); +return; } switch(type1KeyWord) { @@ -298,11 +296,10 @@ public class Type1CharString float result = a / b; -List list = new ArrayList<>(numbers); -list.remove(list.size() - 1); -list.remove(list.size() - 1); -list.add(result); -return list; +numbers.remove(numbers.size() - 1); +numbers.remove(numbers.size() - 1); +numbers.add(result); +return; } break; case HSTEM: @@ -325,7 +322,6 @@ public class Type1CharString // indicates a PDFBox bug throw new IllegalArgumentException("Unhandled command: " + type1KeyWord); } -return Collections.emptyList(); } /**
svn commit: r1916976 - /pdfbox/branches/3.0/fontbox/src/main/java/org/apache/fontbox/cff/Type1CharString.java
Author: lehmi Date: Sun Apr 14 09:18:46 2024 New Revision: 1916976 URL: http://svn.apache.org/viewvc?rev=1916976=rev Log: PDFBOX-5660: optimize, as suggested by cinstool Modified: pdfbox/branches/3.0/fontbox/src/main/java/org/apache/fontbox/cff/Type1CharString.java Modified: pdfbox/branches/3.0/fontbox/src/main/java/org/apache/fontbox/cff/Type1CharString.java URL: http://svn.apache.org/viewvc/pdfbox/branches/3.0/fontbox/src/main/java/org/apache/fontbox/cff/Type1CharString.java?rev=1916976=1916975=1916976=diff == --- pdfbox/branches/3.0/fontbox/src/main/java/org/apache/fontbox/cff/Type1CharString.java (original) +++ pdfbox/branches/3.0/fontbox/src/main/java/org/apache/fontbox/cff/Type1CharString.java Sun Apr 14 09:18:46 2024 @@ -22,7 +22,6 @@ import java.awt.geom.Point2D; import java.awt.geom.Rectangle2D; import java.io.IOException; import java.util.ArrayList; -import java.util.Collections; import java.util.List; import org.apache.commons.logging.Log; @@ -149,9 +148,7 @@ public class Type1CharString type1Sequence.forEach(obj -> { if (obj instanceof CharStringCommand) { -List results = handleType1Command(numbers, (CharStringCommand) obj); -numbers.clear(); -numbers.addAll(results); +handleType1Command(numbers, (CharStringCommand) obj); } else { @@ -160,7 +157,7 @@ public class Type1CharString }); } -private List handleType1Command(List numbers, CharStringCommand command) +private void handleType1Command(List numbers, CharStringCommand command) { commandCount++; Type1KeyWord type1KeyWord = command.getType1KeyWord(); @@ -168,7 +165,8 @@ public class Type1CharString { // indicates an invalid charstring LOG.warn("Unknown charstring command in glyph " + glyphName + " of font " + fontName); -return Collections.emptyList(); +numbers.clear(); +return; } switch(type1KeyWord) { @@ -297,11 +295,10 @@ public class Type1CharString float result = a / b; -List list = new ArrayList<>(numbers); -list.remove(list.size() - 1); -list.remove(list.size() - 1); -list.add(result); -return list; +numbers.remove(numbers.size() - 1); +numbers.remove(numbers.size() - 1); +numbers.add(result); +return; } break; case HSTEM: @@ -324,7 +321,6 @@ public class Type1CharString // indicates a PDFBox bug throw new IllegalArgumentException("Unhandled command: " + type1KeyWord); } -return Collections.emptyList(); } /**
svn commit: r1916887 - in /pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdfparser: BruteForceParser.java COSParser.java XrefParser.java
Author: lehmi Date: Tue Apr 9 18:55:53 2024 New Revision: 1916887 URL: http://svn.apache.org/viewvc?rev=1916887=rev Log: PDFBOX-5032: sonar fix Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdfparser/BruteForceParser.java pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdfparser/COSParser.java pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdfparser/XrefParser.java Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdfparser/BruteForceParser.java URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdfparser/BruteForceParser.java?rev=1916887=1916886=1916887=diff == --- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdfparser/BruteForceParser.java (original) +++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdfparser/BruteForceParser.java Tue Apr 9 18:55:53 2024 @@ -145,13 +145,13 @@ public class BruteForceParser source.seek(currentOffset); int nextChar = source.read(); currentOffset++; -if (COSParser.isWhitespace(nextChar) && parser.isString(OBJ_MARKER)) +if (BaseParser.isWhitespace(nextChar) && parser.isString(OBJ_MARKER)) { long tempOffset = currentOffset - 2; source.seek(tempOffset); int genID = source.peek(); // is the next char a digit? -if (COSParser.isDigit(genID)) +if (BaseParser.isDigit(genID)) { genID -= 48; tempOffset--; Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdfparser/COSParser.java URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdfparser/COSParser.java?rev=1916887=1916886=1916887=diff == --- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdfparser/COSParser.java (original) +++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdfparser/COSParser.java Tue Apr 9 18:55:53 2024 @@ -131,7 +131,7 @@ public class COSParser extends BaseParse /** * The security handler. */ -private SecurityHandler securityHandler = null; +private SecurityHandler securityHandler = null; /** * how many trailing bytes to read for EOF marker. @@ -1235,8 +1235,8 @@ public class COSParser extends BaseParse * * @return The security handler of the document that was parsed. */ -protected SecurityHandler getSecurityHandler() +protected SecurityHandler getSecurityHandler() { -return securityHandler; +return (SecurityHandler) securityHandler; } } Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdfparser/XrefParser.java URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdfparser/XrefParser.java?rev=1916887=1916886=1916887=diff == --- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdfparser/XrefParser.java (original) +++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdfparser/XrefParser.java Tue Apr 9 18:55:53 2024 @@ -209,7 +209,7 @@ public class XrefParser long trailerOffset = source.getPosition(); // PDFBOX-1739 skip extra xref entries in RegisSTAR documents int nextCharacter = source.peek(); -while (nextCharacter != 't' && COSParser.isDigit(nextCharacter)) +while (nextCharacter != 't' && BaseParser.isDigit(nextCharacter)) { if (source.getPosition() == trailerOffset) { @@ -279,8 +279,7 @@ public class XrefParser xrefTrailerResolver.nextXrefObj( objByteOffset, XRefType.STREAM ); xrefTrailerResolver.setTrailer(xrefStream); } -PDFXrefStreamParser parser = new PDFXrefStreamParser(xrefStream); -parser.parse(xrefTrailerResolver); +new PDFXrefStreamParser(xrefStream).parse(xrefTrailerResolver); } return dict.getLong(COSName.PREV); @@ -360,7 +359,7 @@ public class XrefParser source.seek(startXRefOffset - 1); int nextValue = source.read(); // the first character has to be a whitespace, and then a digit -if (COSParser.isWhitespace(nextValue)) +if (BaseParser.isWhitespace(nextValue)) { parser.skipSpaces(); if (parser.isDigit()) @@ -643,7 +642,7 @@ public class XrefParser break; } int nextChar = source.peek(); -if (nextChar == 't' || COSParser.isEndOfName(nextChar)) +if (nextChar == 't' || BaseParser.isEndOfName(nextChar)) { break; }
svn commit: r1916886 - /pdfbox/branches/3.0/io/src/main/java/org/apache/pdfbox/io/SequenceRandomAccessRead.java
Author: lehmi Date: Tue Apr 9 18:46:34 2024 New Revision: 1916886 URL: http://svn.apache.org/viewvc?rev=1916886=rev Log: PDFBOX-5799: sonar fix Modified: pdfbox/branches/3.0/io/src/main/java/org/apache/pdfbox/io/SequenceRandomAccessRead.java Modified: pdfbox/branches/3.0/io/src/main/java/org/apache/pdfbox/io/SequenceRandomAccessRead.java URL: http://svn.apache.org/viewvc/pdfbox/branches/3.0/io/src/main/java/org/apache/pdfbox/io/SequenceRandomAccessRead.java?rev=1916886=1916885=1916886=diff == --- pdfbox/branches/3.0/io/src/main/java/org/apache/pdfbox/io/SequenceRandomAccessRead.java (original) +++ pdfbox/branches/3.0/io/src/main/java/org/apache/pdfbox/io/SequenceRandomAccessRead.java Tue Apr 9 18:46:34 2024 @@ -157,14 +157,13 @@ public class SequenceRandomAccessRead im { // search forward/backwards if the new position is after/before the current position int increment = position < currentPosition ? -1 : 1; -for (int i = currentIndex; i < numberOfReader && i >= 0;) +for (int i = currentIndex; i < numberOfReader && i >= 0; i += increment) { if (position >= startPositions[i] && position <= endPositions[i]) { currentIndex = i; break; } -i += increment; } currentPosition = position; }
svn commit: r1916885 - /pdfbox/trunk/io/src/main/java/org/apache/pdfbox/io/SequenceRandomAccessRead.java
Author: lehmi Date: Tue Apr 9 18:46:23 2024 New Revision: 1916885 URL: http://svn.apache.org/viewvc?rev=1916885=rev Log: PDFBOX-5799: sonar fix Modified: pdfbox/trunk/io/src/main/java/org/apache/pdfbox/io/SequenceRandomAccessRead.java Modified: pdfbox/trunk/io/src/main/java/org/apache/pdfbox/io/SequenceRandomAccessRead.java URL: http://svn.apache.org/viewvc/pdfbox/trunk/io/src/main/java/org/apache/pdfbox/io/SequenceRandomAccessRead.java?rev=1916885=1916884=1916885=diff == --- pdfbox/trunk/io/src/main/java/org/apache/pdfbox/io/SequenceRandomAccessRead.java (original) +++ pdfbox/trunk/io/src/main/java/org/apache/pdfbox/io/SequenceRandomAccessRead.java Tue Apr 9 18:46:23 2024 @@ -157,14 +157,13 @@ public class SequenceRandomAccessRead im { // search forward/backwards if the new position is after/before the current position int increment = position < currentPosition ? -1 : 1; -for (int i = currentIndex; i < numberOfReader && i >= 0;) +for (int i = currentIndex; i < numberOfReader && i >= 0; i += increment) { if (position >= startPositions[i] && position <= endPositions[i]) { currentIndex = i; break; } -i += increment; } currentPosition = position; }
svn commit: r1916860 - in /pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdfparser: COSParser.java PDFXrefStreamParser.java XrefParser.java
Author: lehmi Date: Mon Apr 8 10:51:48 2024 New Revision: 1916860 URL: http://svn.apache.org/viewvc?rev=1916860=rev Log: PDFBOX-5032: simplify, PDFXrefStreamParser no longer extends BaseParser Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdfparser/COSParser.java pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdfparser/PDFXrefStreamParser.java pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdfparser/XrefParser.java Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdfparser/COSParser.java URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdfparser/COSParser.java?rev=1916860=1916859=1916860=diff == --- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdfparser/COSParser.java (original) +++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdfparser/COSParser.java Mon Apr 8 10:51:48 2024 @@ -249,8 +249,8 @@ public class COSParser extends BaseParse long startXRefOffset = getStartxrefOffset(); if (startXRefOffset > -1) { -XrefParser xrefParser = new XrefParser(document, this); -trailer = xrefParser.parseXref(startXRefOffset); +XrefParser xrefParser = new XrefParser(this); +trailer = xrefParser.parseXref(document, startXRefOffset); xrefTable.putAll(xrefParser.getXrefTable()); } else Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdfparser/PDFXrefStreamParser.java URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdfparser/PDFXrefStreamParser.java?rev=1916860=1916859=1916860=diff == --- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdfparser/PDFXrefStreamParser.java (original) +++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdfparser/PDFXrefStreamParser.java Mon Apr 8 10:51:48 2024 @@ -24,10 +24,10 @@ import java.util.NoSuchElementException; import org.apache.pdfbox.cos.COSArray; import org.apache.pdfbox.cos.COSBase; -import org.apache.pdfbox.cos.COSDocument; import org.apache.pdfbox.cos.COSInteger; import org.apache.pdfbox.cos.COSName; import org.apache.pdfbox.cos.COSStream; +import org.apache.pdfbox.io.RandomAccessRead; import org.apache.pdfbox.cos.COSObjectKey; /** @@ -36,24 +36,22 @@ import org.apache.pdfbox.cos.COSObjectKe * * @author Justin LeFebvre */ -public class PDFXrefStreamParser extends BaseParser +public class PDFXrefStreamParser { private final int[] w = new int[3]; private ObjectNumbers objectNumbers = null; +private final RandomAccessRead source; /** * Constructor. * * @param stream The stream to parse. - * @param document The document for the current parsing. * * @throws IOException If there is an error initializing the stream. */ -public PDFXrefStreamParser(COSStream stream, COSDocument document) -throws IOException +public PDFXrefStreamParser(COSStream stream) throws IOException { -super(stream.createView()); -this.document = document; +source = stream.createView(); try { initParserValues(stream); @@ -109,7 +107,6 @@ public class PDFXrefStreamParser extends { source.close(); } -document = null; objectNumbers = null; } @@ -122,7 +119,7 @@ public class PDFXrefStreamParser extends public void parse(XrefTrailerResolver resolver) throws IOException { byte[] currLine = new byte[w[0] + w[1] + w[2]]; -while (!isEOF() && objectNumbers.hasNext()) +while (!source.isEOF() && objectNumbers.hasNext()) { readNextValue(currLine); // get the current objID Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdfparser/XrefParser.java URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdfparser/XrefParser.java?rev=1916860=1916859=1916860=diff == --- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdfparser/XrefParser.java (original) +++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdfparser/XrefParser.java Mon Apr 8 10:51:48 2024 @@ -53,19 +53,16 @@ public class XrefParser private XrefTrailerResolver xrefTrailerResolver = new XrefTrailerResolver(); private final COSParser parser; -private final COSDocument document; private final RandomAccessRead source; /** * Default constructor. * - * @param cosDocument the corresponding COS document of the pdf. * @param cosParser the parser to be used to read the pdf. * */ -public XrefParser(COSDocument cos
svn commit: r1916859 - /pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdfparser/COSParser.java
Author: lehmi Date: Mon Apr 8 10:35:11 2024 New Revision: 1916859 URL: http://svn.apache.org/viewvc?rev=1916859=rev Log: PDFBOX-5032: fix javadoc Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdfparser/COSParser.java Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdfparser/COSParser.java URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdfparser/COSParser.java?rev=1916859=1916858=1916859=diff == --- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdfparser/COSParser.java (original) +++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdfparser/COSParser.java Mon Apr 8 10:35:11 2024 @@ -1234,8 +1234,6 @@ public class COSParser extends BaseParse * This will get the security handler. The document must be parsed before this is called. * * @return The security handler of the document that was parsed. - * - * @throws IOException If there is an error getting the document. */ protected SecurityHandler getSecurityHandler() {
svn commit: r1916856 - in /pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdfparser: BaseParser.java BruteForceParser.java COSParser.java XrefParser.java
Author: lehmi Date: Mon Apr 8 05:54:20 2024 New Revision: 1916856 URL: http://svn.apache.org/viewvc?rev=1916856=rev Log: PDFBOX-5032: implement a separate parser for the xref information. BruteForceParser no longer extends COSParser Added: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdfparser/XrefParser.java (with props) Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdfparser/BaseParser.java pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdfparser/BruteForceParser.java pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdfparser/COSParser.java Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdfparser/BaseParser.java URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdfparser/BaseParser.java?rev=1916856=1916855=1916856=diff == --- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdfparser/BaseParser.java (original) +++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdfparser/BaseParser.java Mon Apr 8 05:54:20 2024 @@ -62,7 +62,7 @@ public abstract class BaseParser private static final long GENERATION_NUMBER_THRESHOLD = 65535; -static final int MAX_LENGTH_LONG = Long.toString(Long.MAX_VALUE).length(); +private static final int MAX_LENGTH_LONG = Long.toString(Long.MAX_VALUE).length(); private static final Charset ALTERNATIVE_CHARSET; @@ -133,13 +133,25 @@ public abstract class BaseParser private static final char[] NULL = { 'n', 'u', 'l', 'l' }; /** + * ASCII code for Null. + */ +private static final byte ASCII_NULL = 0; +/** + * ASCII code for horizontal tab. + */ +private static final byte ASCII_TAB = 9; +/** * ASCII code for line feed. */ -protected static final byte ASCII_LF = 10; +private static final byte ASCII_LF = 10; +/** + * ASCII code for form feed. + */ +private static final byte ASCII_FF = 12; /** * ASCII code for carriage return. */ -protected static final byte ASCII_CR = 13; +private static final byte ASCII_CR = 13; private static final byte ASCII_ZERO = 48; private static final byte ASCII_NINE = 57; private static final byte ASCII_SPACE = 32; @@ -251,8 +263,7 @@ public abstract class BaseParser { if (document == null) { -throw new IOException("object reference " + key + " at offset " + source -.getPosition() +throw new IOException("object reference " + key + " at offset " + source.getPosition() + " in content stream"); } return document.getObjectFromPool(key); @@ -389,32 +400,35 @@ public abstract class BaseParser return true; } +/** + * Skip the upcoming CRLF or LF which are supposed to follow a stream. + * + * @throws IOException + */ protected void skipWhiteSpaces() throws IOException { //PDF Ref 3.2.7 A stream must be followed by either //a CRLF or LF but nothing else. - int whitespace = source.read(); - //see brother_scan_cover.pdf, it adds whitespaces //after the stream but before the start of the //data, so just read those first -while (ASCII_SPACE == whitespace) +while (isSpace(whitespace)) { whitespace = source.read(); } -if (ASCII_CR == whitespace) +if (isCR(whitespace)) { whitespace = source.read(); -if (ASCII_LF != whitespace) +if (!isLF(whitespace)) { source.rewind(1); //The spec says this is invalid but it happens in the real //world so we must support it. } } -else if (ASCII_LF != whitespace) +else if (!isLF(whitespace)) { //we are in an error. //but again we will do a lenient parsing and just assume that everything @@ -460,10 +474,10 @@ public abstract class BaseParser // 4. COSDictionary ends in the next line: LF + '>' // 5. Next line contains another COSObject: CR + '/' // 6. COSDictionary ends in the next line: CR + '>' -if (((nextThreeBytes[0] == ASCII_CR || nextThreeBytes[0] == ASCII_LF) +if (((isCR(nextThreeBytes[0]) || isLF(nextThreeBytes[0])) && (nextThreeBytes[1] == '/' || nextThreeBytes[1] == '>')) // || // -(nextThreeBytes[0] == ASCII_CR && nextThreeBytes[1] == ASCII_LF +(isCR(nextThreeBytes[0]) && isLF(nextThreeBytes[1]) && (nextThreeBytes[2] == '/' || nextThreeBytes[2] == '>')) // ) { @@ -781,14 +795,14 @@ public abstract class Bas
svn commit: r1916828 - /pdfbox/branches/3.0/io/src/main/java/org/apache/pdfbox/io/SequenceRandomAccessRead.java
Author: lehmi Date: Sat Apr 6 08:12:49 2024 New Revision: 1916828 URL: http://svn.apache.org/viewvc?rev=1916828=rev Log: PDFBOX-5799: search forward/backwards if the new position is after/before the current position to optimize the search for the correct stream Modified: pdfbox/branches/3.0/io/src/main/java/org/apache/pdfbox/io/SequenceRandomAccessRead.java Modified: pdfbox/branches/3.0/io/src/main/java/org/apache/pdfbox/io/SequenceRandomAccessRead.java URL: http://svn.apache.org/viewvc/pdfbox/branches/3.0/io/src/main/java/org/apache/pdfbox/io/SequenceRandomAccessRead.java?rev=1916828=1916827=1916828=diff == --- pdfbox/branches/3.0/io/src/main/java/org/apache/pdfbox/io/SequenceRandomAccessRead.java (original) +++ pdfbox/branches/3.0/io/src/main/java/org/apache/pdfbox/io/SequenceRandomAccessRead.java Sat Apr 6 08:12:49 2024 @@ -155,13 +155,16 @@ public class SequenceRandomAccessRead im } else { -for (int i = 0; i < numberOfReader; i++) +// search forward/backwards if the new position is after/before the current position +int increment = position < currentPosition ? -1 : 1; +for (int i = currentIndex; i < numberOfReader && i >= 0;) { if (position >= startPositions[i] && position <= endPositions[i]) { currentIndex = i; break; } +i += increment; } currentPosition = position; }
svn commit: r1916827 - /pdfbox/trunk/io/src/main/java/org/apache/pdfbox/io/SequenceRandomAccessRead.java
Author: lehmi Date: Sat Apr 6 08:12:34 2024 New Revision: 1916827 URL: http://svn.apache.org/viewvc?rev=1916827=rev Log: PDFBOX-5799: search forward/backwards if the new position is after/before the current position to optimize the search for the correct stream Modified: pdfbox/trunk/io/src/main/java/org/apache/pdfbox/io/SequenceRandomAccessRead.java Modified: pdfbox/trunk/io/src/main/java/org/apache/pdfbox/io/SequenceRandomAccessRead.java URL: http://svn.apache.org/viewvc/pdfbox/trunk/io/src/main/java/org/apache/pdfbox/io/SequenceRandomAccessRead.java?rev=1916827=1916826=1916827=diff == --- pdfbox/trunk/io/src/main/java/org/apache/pdfbox/io/SequenceRandomAccessRead.java (original) +++ pdfbox/trunk/io/src/main/java/org/apache/pdfbox/io/SequenceRandomAccessRead.java Sat Apr 6 08:12:34 2024 @@ -155,13 +155,16 @@ public class SequenceRandomAccessRead im } else { -for (int i = 0; i < numberOfReader; i++) +// search forward/backwards if the new position is after/before the current position +int increment = position < currentPosition ? -1 : 1; +for (int i = currentIndex; i < numberOfReader && i >= 0;) { if (position >= startPositions[i] && position <= endPositions[i]) { currentIndex = i; break; } +i += increment; } currentPosition = position; }
svn commit: r1916693 - /pdfbox/branches/3.0/pdfbox/src/main/java/org/apache/pdfbox/cos/COSObjectKey.java
Author: lehmi Date: Sun Mar 31 12:35:18 2024 New Revision: 1916693 URL: http://svn.apache.org/viewvc?rev=1916693=rev Log: PDFBOX-5660: simplify Modified: pdfbox/branches/3.0/pdfbox/src/main/java/org/apache/pdfbox/cos/COSObjectKey.java Modified: pdfbox/branches/3.0/pdfbox/src/main/java/org/apache/pdfbox/cos/COSObjectKey.java URL: http://svn.apache.org/viewvc/pdfbox/branches/3.0/pdfbox/src/main/java/org/apache/pdfbox/cos/COSObjectKey.java?rev=1916693=1916692=1916693=diff == --- pdfbox/branches/3.0/pdfbox/src/main/java/org/apache/pdfbox/cos/COSObjectKey.java (original) +++ pdfbox/branches/3.0/pdfbox/src/main/java/org/apache/pdfbox/cos/COSObjectKey.java Sun Mar 31 12:35:18 2024 @@ -41,16 +41,7 @@ public final class COSObjectKey implemen */ public COSObjectKey(long num, int gen) { -if (num < 0) -{ -throw new IllegalArgumentException("Object number must not be a negative value"); -} -if (gen < 0) -{ -throw new IllegalArgumentException("Generation number must not be a negative value"); -} -numberAndGeneration = num << NUMBER_OFFSET | (gen & GENERATION_MASK); -streamIndex = -1; +this(num, gen, -1); } /**
svn commit: r1916692 - /pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/cos/COSObjectKey.java
Author: lehmi Date: Sun Mar 31 12:35:02 2024 New Revision: 1916692 URL: http://svn.apache.org/viewvc?rev=1916692=rev Log: PDFBOX-5660: simplify Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/cos/COSObjectKey.java Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/cos/COSObjectKey.java URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/cos/COSObjectKey.java?rev=1916692=1916691=1916692=diff == --- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/cos/COSObjectKey.java (original) +++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/cos/COSObjectKey.java Sun Mar 31 12:35:02 2024 @@ -41,16 +41,7 @@ public final class COSObjectKey implemen */ public COSObjectKey(long num, int gen) { -if (num < 0) -{ -throw new IllegalArgumentException("Object number must not be a negative value"); -} -if (gen < 0) -{ -throw new IllegalArgumentException("Generation number must not be a negative value"); -} -numberAndGeneration = num << NUMBER_OFFSET | (gen & GENERATION_MASK); -streamIndex = -1; +this(num, gen, -1); } /**
svn commit: r1916691 - in /pdfbox/trunk: debugger/src/main/java/org/apache/pdfbox/debugger/ui/ pdfbox/src/main/java/org/apache/pdfbox/cos/ pdfbox/src/main/java/org/apache/pdfbox/multipdf/ pdfbox/src/m
Author: lehmi Date: Sun Mar 31 12:26:46 2024 New Revision: 1916691 URL: http://svn.apache.org/viewvc?rev=1916691=rev Log: PDFBOX-5793: remove redundant values for an object key Modified: pdfbox/trunk/debugger/src/main/java/org/apache/pdfbox/debugger/ui/PDFTreeCellRenderer.java pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/cos/COSObject.java pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/multipdf/PDFCloneUtility.java pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdfparser/COSParser.java pdfbox/trunk/tools/src/main/java/org/apache/pdfbox/tools/WriteDecodedDoc.java Modified: pdfbox/trunk/debugger/src/main/java/org/apache/pdfbox/debugger/ui/PDFTreeCellRenderer.java URL: http://svn.apache.org/viewvc/pdfbox/trunk/debugger/src/main/java/org/apache/pdfbox/debugger/ui/PDFTreeCellRenderer.java?rev=1916691=1916690=1916691=diff == --- pdfbox/trunk/debugger/src/main/java/org/apache/pdfbox/debugger/ui/PDFTreeCellRenderer.java (original) +++ pdfbox/trunk/debugger/src/main/java/org/apache/pdfbox/debugger/ui/PDFTreeCellRenderer.java Sun Mar 31 12:26:46 2024 @@ -43,6 +43,8 @@ import org.apache.pdfbox.cos.COSString; */ public class PDFTreeCellRenderer extends DefaultTreeCellRenderer { +private static final long serialVersionUID = 6547078597109564198L; + private static final ImageIcon ICON_ARRAY = new ImageIcon(getImageUrl("array")); private static final ImageIcon ICON_BOOLEAN = new ImageIcon(getImageUrl("boolean")); private static final ImageIcon ICON_DICT = new ImageIcon(getImageUrl("dict")); @@ -115,8 +117,7 @@ public class PDFTreeCellRenderer extends if (item instanceof COSObject) { COSObject indirect = (COSObject)item; -stringResult += " [" + indirect.getObjectNumber() + " " + - indirect.getGenerationNumber() + " R]"; +stringResult += " [" + indirect.getKey() + "]"; } stringResult += toTreePostfix(value); Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/cos/COSObject.java URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/cos/COSObject.java?rev=1916691=1916690=1916691=diff == --- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/cos/COSObject.java (original) +++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/cos/COSObject.java Sun Mar 31 12:26:46 2024 @@ -30,8 +30,6 @@ import org.apache.logging.log4j.LogManag public class COSObject extends COSBase implements COSUpdateInfo { private COSBase baseObject; -private long objectNumber; -private int generationNumber; private ICOSParser parser; private boolean isDereferenced = false; private final COSUpdateState updateState; @@ -90,8 +88,6 @@ public class COSObject extends COSBase i { updateState = new COSUpdateState(this); this.parser = parser; -objectNumber = key.getNumber(); -generationNumber = key.getGeneration(); setKey(key); } @@ -152,25 +148,7 @@ public class COSObject extends COSBase i @Override public String toString() { -return "COSObject{" + objectNumber + ", " + generationNumber + "}"; -} - -/** - * Getter for property objectNumber. - * @return Value of property objectNumber. - */ -public long getObjectNumber() -{ -return objectNumber; -} - -/** - * Getter for property generationNumber. - * @return Value of property generationNumber. - */ -public int getGenerationNumber() -{ -return generationNumber; + return "COSObject{" + getKey() + "}"; } /** Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/multipdf/PDFCloneUtility.java URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/multipdf/PDFCloneUtility.java?rev=1916691=1916690=1916691=diff == --- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/multipdf/PDFCloneUtility.java (original) +++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/multipdf/PDFCloneUtility.java Sun Mar 31 12:26:46 2024 @@ -249,9 +249,8 @@ public class PDFCloneUtility if (actual == parent) { COSObject cosObj = ((COSObject) value); -LOG.warn("{} object has a reference to itself: {} {} R", -parent.getClass().getSimpleName(), cosObj.getObjectNumber(), -cosObj.getGenerationNumber()); +
svn commit: r1916690 - in /pdfbox/branches/3.0/pdfbox/src/main/java/org/apache/pdfbox: cos/COSObject.java multipdf/PDFCloneUtility.java pdfparser/COSParser.java
Author: lehmi Date: Sun Mar 31 12:20:59 2024 New Revision: 1916690 URL: http://svn.apache.org/viewvc?rev=1916690=rev Log: PDFBOX-5793: remove redundant values for an object key Modified: pdfbox/branches/3.0/pdfbox/src/main/java/org/apache/pdfbox/cos/COSObject.java pdfbox/branches/3.0/pdfbox/src/main/java/org/apache/pdfbox/multipdf/PDFCloneUtility.java pdfbox/branches/3.0/pdfbox/src/main/java/org/apache/pdfbox/pdfparser/COSParser.java Modified: pdfbox/branches/3.0/pdfbox/src/main/java/org/apache/pdfbox/cos/COSObject.java URL: http://svn.apache.org/viewvc/pdfbox/branches/3.0/pdfbox/src/main/java/org/apache/pdfbox/cos/COSObject.java?rev=1916690=1916689=1916690=diff == --- pdfbox/branches/3.0/pdfbox/src/main/java/org/apache/pdfbox/cos/COSObject.java (original) +++ pdfbox/branches/3.0/pdfbox/src/main/java/org/apache/pdfbox/cos/COSObject.java Sun Mar 31 12:20:59 2024 @@ -30,8 +30,6 @@ import org.apache.commons.logging.LogFac public class COSObject extends COSBase implements COSUpdateInfo { private COSBase baseObject; -private long objectNumber; -private int generationNumber; private ICOSParser parser; private boolean isDereferenced = false; private final COSUpdateState updateState; @@ -90,8 +88,6 @@ public class COSObject extends COSBase i { updateState = new COSUpdateState(this); this.parser = parser; -objectNumber = key.getNumber(); -generationNumber = key.getGeneration(); setKey(key); } @@ -152,25 +148,33 @@ public class COSObject extends COSBase i @Override public String toString() { -return "COSObject{" + objectNumber + ", " + generationNumber + "}"; +return "COSObject{" + getKey() + "}"; } -/** +/** * Getter for property objectNumber. + * * @return Value of property objectNumber. + * + * @deprecated will be removed in 4.0.0 */ +@Deprecated public long getObjectNumber() { -return objectNumber; +return getKey() != null ? getKey().getNumber() : 0; } -/** +/** * Getter for property generationNumber. + * * @return Value of property generationNumber. + * + * @deprecated will be removed in 4.0.0 */ +@Deprecated public int getGenerationNumber() { -return generationNumber; +return getKey() != null ? getKey().getGeneration() : 0; } /** Modified: pdfbox/branches/3.0/pdfbox/src/main/java/org/apache/pdfbox/multipdf/PDFCloneUtility.java URL: http://svn.apache.org/viewvc/pdfbox/branches/3.0/pdfbox/src/main/java/org/apache/pdfbox/multipdf/PDFCloneUtility.java?rev=1916690=1916689=1916690=diff == --- pdfbox/branches/3.0/pdfbox/src/main/java/org/apache/pdfbox/multipdf/PDFCloneUtility.java (original) +++ pdfbox/branches/3.0/pdfbox/src/main/java/org/apache/pdfbox/multipdf/PDFCloneUtility.java Sun Mar 31 12:20:59 2024 @@ -251,7 +251,7 @@ public class PDFCloneUtility { COSObject cosObj = ((COSObject) value); LOG.warn(parent.getClass().getSimpleName() + " object has a reference to itself: " -+ cosObj.getObjectNumber() + " " + cosObj.getGenerationNumber() + " R"); ++ cosObj.getKey()); return true; } } Modified: pdfbox/branches/3.0/pdfbox/src/main/java/org/apache/pdfbox/pdfparser/COSParser.java URL: http://svn.apache.org/viewvc/pdfbox/branches/3.0/pdfbox/src/main/java/org/apache/pdfbox/pdfparser/COSParser.java?rev=1916690=1916689=1916690=diff == --- pdfbox/branches/3.0/pdfbox/src/main/java/org/apache/pdfbox/pdfparser/COSParser.java (original) +++ pdfbox/branches/3.0/pdfbox/src/main/java/org/apache/pdfbox/pdfparser/COSParser.java Sun Mar 31 12:20:59 2024 @@ -873,8 +873,7 @@ public class COSParser extends BaseParse } if (COSNull.NULL == length) { -LOG.warn("Length object (" + lengthObj.getObjectNumber() + " " -+ lengthObj.getGenerationNumber() + ") not found"); +LOG.warn("Length object (" + lengthObj.getKey() + ") not found"); return null; } if (length instanceof COSNumber)
svn commit: r1916689 - /pdfbox/branches/3.0/debugger/src/main/java/org/apache/pdfbox/debugger/ui/PDFTreeCellRenderer.java
Author: lehmi Date: Sun Mar 31 12:18:42 2024 New Revision: 1916689 URL: http://svn.apache.org/viewvc?rev=1916689=rev Log: PDFBOX-5793: remove redundant values for an object key Modified: pdfbox/branches/3.0/debugger/src/main/java/org/apache/pdfbox/debugger/ui/PDFTreeCellRenderer.java Modified: pdfbox/branches/3.0/debugger/src/main/java/org/apache/pdfbox/debugger/ui/PDFTreeCellRenderer.java URL: http://svn.apache.org/viewvc/pdfbox/branches/3.0/debugger/src/main/java/org/apache/pdfbox/debugger/ui/PDFTreeCellRenderer.java?rev=1916689=1916688=1916689=diff == --- pdfbox/branches/3.0/debugger/src/main/java/org/apache/pdfbox/debugger/ui/PDFTreeCellRenderer.java (original) +++ pdfbox/branches/3.0/debugger/src/main/java/org/apache/pdfbox/debugger/ui/PDFTreeCellRenderer.java Sun Mar 31 12:18:42 2024 @@ -43,6 +43,8 @@ import org.apache.pdfbox.cos.COSString; */ public class PDFTreeCellRenderer extends DefaultTreeCellRenderer { +private static final long serialVersionUID = 6547078597109564198L; + private static final ImageIcon ICON_ARRAY = new ImageIcon(getImageUrl("array")); private static final ImageIcon ICON_BOOLEAN = new ImageIcon(getImageUrl("boolean")); private static final ImageIcon ICON_DICT = new ImageIcon(getImageUrl("dict")); @@ -115,8 +117,7 @@ public class PDFTreeCellRenderer extends if (item instanceof COSObject) { COSObject indirect = (COSObject)item; -stringResult += " [" + indirect.getObjectNumber() + " " + - indirect.getGenerationNumber() + " R]"; +stringResult += " [" + indirect.getKey() + "]"; } stringResult += toTreePostfix(value);
svn commit: r1916688 - /pdfbox/branches/3.0/tools/src/main/java/org/apache/pdfbox/tools/WriteDecodedDoc.java
Author: lehmi Date: Sun Mar 31 12:17:50 2024 New Revision: 1916688 URL: http://svn.apache.org/viewvc?rev=1916688=rev Log: PDFBOX-5793: remove redundant values for an object key Modified: pdfbox/branches/3.0/tools/src/main/java/org/apache/pdfbox/tools/WriteDecodedDoc.java Modified: pdfbox/branches/3.0/tools/src/main/java/org/apache/pdfbox/tools/WriteDecodedDoc.java URL: http://svn.apache.org/viewvc/pdfbox/branches/3.0/tools/src/main/java/org/apache/pdfbox/tools/WriteDecodedDoc.java?rev=1916688=1916687=1916688=diff == --- pdfbox/branches/3.0/tools/src/main/java/org/apache/pdfbox/tools/WriteDecodedDoc.java (original) +++ pdfbox/branches/3.0/tools/src/main/java/org/apache/pdfbox/tools/WriteDecodedDoc.java Sun Mar 31 12:17:50 2024 @@ -116,8 +116,7 @@ public class WriteDecodedDoc implements } catch (IOException ex) { -SYSERR.println("skip " + cosObject.getObjectNumber() + " " -+ cosObject.getGenerationNumber() + " obj: " + ex.getMessage()); +SYSERR.println("skip " + cosObject.getKey() + " obj: " + ex.getMessage()); } }
svn commit: r1916687 - in /pdfbox/branches/3.0/preflight/src/main/java/org/apache/pdfbox/preflight: action/ActionManagerFactory.java process/CatalogValidationProcess.java process/TrailerValidationProc
Author: lehmi Date: Sun Mar 31 12:17:18 2024 New Revision: 1916687 URL: http://svn.apache.org/viewvc?rev=1916687=rev Log: PDFBOX-5793: remove redundant values for an object key Modified: pdfbox/branches/3.0/preflight/src/main/java/org/apache/pdfbox/preflight/action/ActionManagerFactory.java pdfbox/branches/3.0/preflight/src/main/java/org/apache/pdfbox/preflight/process/CatalogValidationProcess.java pdfbox/branches/3.0/preflight/src/main/java/org/apache/pdfbox/preflight/process/TrailerValidationProcess.java Modified: pdfbox/branches/3.0/preflight/src/main/java/org/apache/pdfbox/preflight/action/ActionManagerFactory.java URL: http://svn.apache.org/viewvc/pdfbox/branches/3.0/preflight/src/main/java/org/apache/pdfbox/preflight/action/ActionManagerFactory.java?rev=1916687=1916686=1916687=diff == --- pdfbox/branches/3.0/preflight/src/main/java/org/apache/pdfbox/preflight/action/ActionManagerFactory.java (original) +++ pdfbox/branches/3.0/preflight/src/main/java/org/apache/pdfbox/preflight/action/ActionManagerFactory.java Sun Mar 31 12:17:18 2024 @@ -151,8 +151,7 @@ public class ActionManagerFactory if (aDict instanceof COSObject) { COSObject cosObj = (COSObject) aDict; -COSObjectKey cok = new COSObjectKey(cosObj.getObjectNumber(), -cosObj.getGenerationNumber()); +COSObjectKey cok = cosObj.getKey(); COSDictionary indirectDict = (COSDictionary) cosObj.getObject(); if (!alreadyCreated.containsKey(cok)) { Modified: pdfbox/branches/3.0/preflight/src/main/java/org/apache/pdfbox/preflight/process/CatalogValidationProcess.java URL: http://svn.apache.org/viewvc/pdfbox/branches/3.0/preflight/src/main/java/org/apache/pdfbox/preflight/process/CatalogValidationProcess.java?rev=1916687=1916686=1916687=diff == --- pdfbox/branches/3.0/preflight/src/main/java/org/apache/pdfbox/preflight/process/CatalogValidationProcess.java (original) +++ pdfbox/branches/3.0/preflight/src/main/java/org/apache/pdfbox/preflight/process/CatalogValidationProcess.java Sun Mar 31 12:17:18 2024 @@ -286,8 +286,7 @@ public class CatalogValidationProcess ex } COSObject cosObj = (COSObject) destOutputProfile; -COSObjectKey key = new COSObjectKey(cosObj.getObjectNumber(), -cosObj.getGenerationNumber()); +COSObjectKey key = cosObj.getKey(); if (mapDestOutputProfile.containsKey(key)) { // the profile is already checked. continue Modified: pdfbox/branches/3.0/preflight/src/main/java/org/apache/pdfbox/preflight/process/TrailerValidationProcess.java URL: http://svn.apache.org/viewvc/pdfbox/branches/3.0/preflight/src/main/java/org/apache/pdfbox/preflight/process/TrailerValidationProcess.java?rev=1916687=1916686=1916687=diff == --- pdfbox/branches/3.0/preflight/src/main/java/org/apache/pdfbox/preflight/process/TrailerValidationProcess.java (original) +++ pdfbox/branches/3.0/preflight/src/main/java/org/apache/pdfbox/preflight/process/TrailerValidationProcess.java Sun Mar 31 12:17:18 2024 @@ -126,8 +126,7 @@ public class TrailerValidationProcess ex // Search First and Last trailers according to offset position. for (COSObject co : xrefs) { -long offset = cosDocument.getXrefTable() -.get(new COSObjectKey(co.getObjectNumber(), co.getGenerationNumber())); +long offset = cosDocument.getXrefTable().get(co.getKey()); if (offset < min) { min = offset;
svn commit: r1916638 - /pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdfparser/BruteForceParser.java
Author: lehmi Date: Fri Mar 29 16:41:41 2024 New Revision: 1916638 URL: http://svn.apache.org/viewvc?rev=1916638=rev Log: PDFBOX-5786: transfer xref-table from a brute force search to the COSDocument to avoid double usage of COSObjectkeys Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdfparser/BruteForceParser.java Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdfparser/BruteForceParser.java URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdfparser/BruteForceParser.java?rev=1916638=1916637=1916638=diff == --- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdfparser/BruteForceParser.java (original) +++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdfparser/BruteForceParser.java Fri Mar 29 16:41:41 2024 @@ -828,6 +828,16 @@ public class BruteForceParser extends CO trailerResolver.nextXrefObj(0, XRefType.TABLE); getBFCOSObjectOffsets().forEach(trailerResolver::setXRef); trailerResolver.setStartxref(0); +// transfer xref-table to document +document.getXrefTable().clear(); +document.addXRefTable(trailerResolver.getXrefTable()); +// remember the highest XRef object number to avoid it being reused in incremental saving +Long maxValue = document.getXrefTable().keySet().stream() // +.map(COSObjectKey::getNumber) // +.reduce(Long::max) // +.orElse(0L); +document.setHighestXRefObjectNumber(maxValue); + COSDictionary trailer = trailerResolver.getTrailer(); document.setTrailer(trailer); boolean searchForObjStreamsDone = false;
svn commit: r1916637 - /pdfbox/branches/3.0/pdfbox/src/main/java/org/apache/pdfbox/pdfparser/BruteForceParser.java
Author: lehmi Date: Fri Mar 29 16:37:26 2024 New Revision: 1916637 URL: http://svn.apache.org/viewvc?rev=1916637=rev Log: PDFBOX-5786: simplify Modified: pdfbox/branches/3.0/pdfbox/src/main/java/org/apache/pdfbox/pdfparser/BruteForceParser.java Modified: pdfbox/branches/3.0/pdfbox/src/main/java/org/apache/pdfbox/pdfparser/BruteForceParser.java URL: http://svn.apache.org/viewvc/pdfbox/branches/3.0/pdfbox/src/main/java/org/apache/pdfbox/pdfparser/BruteForceParser.java?rev=1916637=1916636=1916637=diff == --- pdfbox/branches/3.0/pdfbox/src/main/java/org/apache/pdfbox/pdfparser/BruteForceParser.java (original) +++ pdfbox/branches/3.0/pdfbox/src/main/java/org/apache/pdfbox/pdfparser/BruteForceParser.java Fri Mar 29 16:37:26 2024 @@ -21,7 +21,6 @@ import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; -import java.util.Optional; import java.util.Map.Entry; import java.util.stream.Collectors; @@ -833,10 +832,11 @@ public class BruteForceParser extends CO document.getXrefTable().clear(); document.addXRefTable(trailerResolver.getXrefTable()); // remember the highest XRef object number to avoid it being reused in incremental saving -Optional maxValue = document.getXrefTable().keySet().stream() // +Long maxValue = document.getXrefTable().keySet().stream() // .map(COSObjectKey::getNumber) // -.reduce(Long::max); -document.setHighestXRefObjectNumber(maxValue.isPresent() ? maxValue.get() : 0); +.reduce(Long::max) // +.orElse(0L); +document.setHighestXRefObjectNumber(maxValue); COSDictionary trailer = trailerResolver.getTrailer(); document.setTrailer(trailer);
svn commit: r1916636 - /pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdfwriter/COSWriter.java
Author: lehmi Date: Fri Mar 29 16:35:22 2024 New Revision: 1916636 URL: http://svn.apache.org/viewvc?rev=1916636=rev Log: PDFBOX-5786: avoid NPE when a referenced object can't be dereferenced due to a malformed pdf as proposed by Tilman Hausherr Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdfwriter/COSWriter.java Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdfwriter/COSWriter.java URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdfwriter/COSWriter.java?rev=1916636=1916635=1916636=diff == --- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdfwriter/COSWriter.java (original) +++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdfwriter/COSWriter.java Fri Mar 29 16:35:22 2024 @@ -1075,6 +1075,12 @@ public class COSWriter implements ICOSVi actual = ((COSObject) obj).getObject(); if (actual == null) { +// the referenced object isn't there due to a malformed pdf +// check if a key is present, otherwise create a new one +if (key == null) +{ +key = new COSObjectKey(++number, 0); +} objectKeys.put(obj, key); return key; }
svn commit: r1916635 - /pdfbox/branches/3.0/pdfbox/src/main/java/org/apache/pdfbox/pdfwriter/COSWriter.java
Author: lehmi Date: Fri Mar 29 16:33:50 2024 New Revision: 1916635 URL: http://svn.apache.org/viewvc?rev=1916635=rev Log: PDFBOX-5786: avoid NPE when a referenced object can't be dereferenced due to a malformed pdf as proposed by Tilman Hausherr Modified: pdfbox/branches/3.0/pdfbox/src/main/java/org/apache/pdfbox/pdfwriter/COSWriter.java Modified: pdfbox/branches/3.0/pdfbox/src/main/java/org/apache/pdfbox/pdfwriter/COSWriter.java URL: http://svn.apache.org/viewvc/pdfbox/branches/3.0/pdfbox/src/main/java/org/apache/pdfbox/pdfwriter/COSWriter.java?rev=1916635=1916634=1916635=diff == --- pdfbox/branches/3.0/pdfbox/src/main/java/org/apache/pdfbox/pdfwriter/COSWriter.java (original) +++ pdfbox/branches/3.0/pdfbox/src/main/java/org/apache/pdfbox/pdfwriter/COSWriter.java Fri Mar 29 16:33:50 2024 @@ -1075,6 +1075,12 @@ public class COSWriter implements ICOSVi actual = ((COSObject) obj).getObject(); if (actual == null) { +// the referenced object isn't there due to a malformed pdf +// check if a key is present, otherwise create a new one +if (key == null) +{ +key = new COSObjectKey(++number, 0); +} objectKeys.put(obj, key); return key; }
svn commit: r1916634 - /pdfbox/branches/3.0/pdfbox/src/main/java/org/apache/pdfbox/pdfparser/BruteForceParser.java
Author: lehmi Date: Fri Mar 29 16:32:26 2024 New Revision: 1916634 URL: http://svn.apache.org/viewvc?rev=1916634=rev Log: PDFBOX-5786: transfer xref-table from a brute force search to the COSDocument to avoid double usage of COSObjectkeys Modified: pdfbox/branches/3.0/pdfbox/src/main/java/org/apache/pdfbox/pdfparser/BruteForceParser.java Modified: pdfbox/branches/3.0/pdfbox/src/main/java/org/apache/pdfbox/pdfparser/BruteForceParser.java URL: http://svn.apache.org/viewvc/pdfbox/branches/3.0/pdfbox/src/main/java/org/apache/pdfbox/pdfparser/BruteForceParser.java?rev=1916634=1916633=1916634=diff == --- pdfbox/branches/3.0/pdfbox/src/main/java/org/apache/pdfbox/pdfparser/BruteForceParser.java (original) +++ pdfbox/branches/3.0/pdfbox/src/main/java/org/apache/pdfbox/pdfparser/BruteForceParser.java Fri Mar 29 16:32:26 2024 @@ -21,6 +21,7 @@ import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; +import java.util.Optional; import java.util.Map.Entry; import java.util.stream.Collectors; @@ -828,6 +829,15 @@ public class BruteForceParser extends CO trailerResolver.nextXrefObj(0, XRefType.TABLE); getBFCOSObjectOffsets().forEach(trailerResolver::setXRef); trailerResolver.setStartxref(0); +// transfer xref-table to document +document.getXrefTable().clear(); +document.addXRefTable(trailerResolver.getXrefTable()); +// remember the highest XRef object number to avoid it being reused in incremental saving +Optional maxValue = document.getXrefTable().keySet().stream() // +.map(COSObjectKey::getNumber) // +.reduce(Long::max); +document.setHighestXRefObjectNumber(maxValue.isPresent() ? maxValue.get() : 0); + COSDictionary trailer = trailerResolver.getTrailer(); document.setTrailer(trailer); boolean searchForObjStreamsDone = false;
svn commit: r1916527 - /pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDType0Font.java
Author: lehmi Date: Mon Mar 25 06:45:16 2024 New Revision: 1916527 URL: http://svn.apache.org/viewvc?rev=1916527=rev Log: PDFBOX-5790: don't use a predefined CMap if a ToUnicode CMap is present Modified: pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDType0Font.java Modified: pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDType0Font.java URL: http://svn.apache.org/viewvc/pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDType0Font.java?rev=1916527=1916526=1916527=diff == --- pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDType0Font.java (original) +++ pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDType0Font.java Mon Mar 25 06:45:16 2024 @@ -492,6 +492,12 @@ public class PDType0Font extends PDFont { return unicode; } +// Use identity mapping if the given ToUnicode CMap doesn't provide any valid mapping +// a predefined map shall only be used if there isn't any ToUnicode CMap +if (getToUnicodeCMap() != null) +{ +return Character.toString((char) code); +} if ((isCMapPredefined || isDescendantCJK) && cMapUCS2 != null) {
svn commit: r1916526 - /pdfbox/branches/3.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDType0Font.java
Author: lehmi Date: Mon Mar 25 06:44:52 2024 New Revision: 1916526 URL: http://svn.apache.org/viewvc?rev=1916526=rev Log: PDFBOX-5790: don't use a predefined CMap if a ToUnicode CMap is present Modified: pdfbox/branches/3.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDType0Font.java Modified: pdfbox/branches/3.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDType0Font.java URL: http://svn.apache.org/viewvc/pdfbox/branches/3.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDType0Font.java?rev=1916526=1916525=1916526=diff == --- pdfbox/branches/3.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDType0Font.java (original) +++ pdfbox/branches/3.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDType0Font.java Mon Mar 25 06:44:52 2024 @@ -542,6 +542,13 @@ public class PDType0Font extends PDFont return unicode; } +// Use identity mapping if the given ToUnicode CMap doesn't provide any valid mapping +// a predefined map shall only be used if there isn't any ToUnicode CMap +if (getToUnicodeCMap() != null) +{ +return Character.toString((char) code); +} + if ((isCMapPredefined || isDescendantCJK) && cMapUCS2 != null) { // if the font is composite and uses a predefined cmap (excluding Identity-H/V) then
svn commit: r1916525 - /pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDType0Font.java
Author: lehmi Date: Mon Mar 25 06:44:32 2024 New Revision: 1916525 URL: http://svn.apache.org/viewvc?rev=1916525=rev Log: PDFBOX-5790: don't use a predefined CMap if a ToUnicode CMap is present Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDType0Font.java Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDType0Font.java URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDType0Font.java?rev=1916525=1916524=1916525=diff == --- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDType0Font.java (original) +++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDType0Font.java Mon Mar 25 06:44:32 2024 @@ -541,6 +541,12 @@ public class PDType0Font extends PDFont { return unicode; } +// Use identity mapping if the given ToUnicode CMap doesn't provide any valid mapping +// a predefined map shall only be used if there isn't any ToUnicode CMap +if (getToUnicodeCMap() != null) +{ +return Character.toString(code); +} if ((isCMapPredefined || isDescendantCJK) && cMapUCS2 != null) {
svn commit: r1916516 - /pdfbox/branches/2.0/pom.xml
Author: lehmi Date: Sun Mar 24 18:20:19 2024 New Revision: 1916516 URL: http://svn.apache.org/viewvc?rev=1916516=rev Log: reactivate dependency check as the issue with the NVD site seems to be resolved Modified: pdfbox/branches/2.0/pom.xml Modified: pdfbox/branches/2.0/pom.xml URL: http://svn.apache.org/viewvc/pdfbox/branches/2.0/pom.xml?rev=1916516=1916515=1916516=diff == --- pdfbox/branches/2.0/pom.xml (original) +++ pdfbox/branches/2.0/pom.xml Sun Mar 24 18:20:19 2024 @@ -319,8 +319,6 @@ dependency-check-maven 9.0.10 - - true 0 true
(pdfbox-docs) branch asf-site updated: Site checkin for project Apache PDFBox Website
This is an automated email from the ASF dual-hosted git repository. lehmi pushed a commit to branch asf-site in repository https://gitbox.apache.org/repos/asf/pdfbox-docs.git The following commit(s) were added to refs/heads/asf-site by this push: new c5cbeece Site checkin for project Apache PDFBox Website c5cbeece is described below commit c5cbeeceee60f21234ef9aaf79551f0ca257a643 Author: Andreas Lehmkühler AuthorDate: Sun Mar 24 19:11:21 2024 +0100 Site checkin for project Apache PDFBox Website --- content/2.0/getting-started.html | 2 +- content/3.0/getting-started.html | 2 +- content/blog/index.html | 9 -- content/building.html| 4 +-- content/codingconventions.html | 4 +-- content/doap_PDFBox.rdf | 7 content/download.html| 70 content/errors/403.html | 4 +-- content/errors/404.html | 4 +-- content/ideas.html | 4 +-- content/index.html | 24 +++--- content/mailinglists.html| 4 +-- content/references.html | 4 +-- content/security.html| 4 +-- content/siteupdate.html | 4 +-- content/support.html | 4 +-- content/team.html| 4 +-- 17 files changed, 85 insertions(+), 73 deletions(-) diff --git a/content/2.0/getting-started.html b/content/2.0/getting-started.html index 482c6d4b..7bacae50 100644 --- a/content/2.0/getting-started.html +++ b/content/2.0/getting-started.html @@ -129,7 +129,7 @@ Getting Started Maven To use the latest release you'll need to add the following dependency: -dependency> groupId>org.apache.pdfbox/groupIddependency> groupId>org.apache.pdfbox/groupIdRendering Performance Since PDFBox 2.0.4 PDFBox 2.0.4 introduced a new command line setting diff --git a/content/3.0/getting-started.html b/content/3.0/getting-started.html index 5594e1b3..ecf95a82 100644 --- a/content/3.0/getting-started.html +++ b/content/3.0/getting-started.html @@ -116,7 +116,7 @@ Getting Started Maven To use the latest release you'll need to add the following dependency: -dependency> groupId>org.apache.pdfbox/groupIddependency> groupId>org.apache.pdfbox/groupIdRendering Performance Since PDFBox 2.0.4 PDFBox 2.0.4 introduced a new command line setting diff --git a/content/blog/index.html b/content/blog/index.html index 441177d2..5301925a 100644 --- a/content/blog/index.html +++ b/content/blog/index.html @@ -111,7 +111,7 @@ Dependencies Command-Line Tools FAQ -https://javadoc.io/doc/org.apache.pdfbox/pdfbox/3.0.0/index.html;>API Docsvia javadoc.io +https://javadoc.io/doc/org.apache.pdfbox/pdfbox/3.0.2/index.html;>API Docsvia javadoc.io @@ -129,7 +129,7 @@ Command-Line Tools FAQ -https://javadoc.io/doc/org.apache.pdfbox/pdfbox/2.0.29/index.html;>API Docsvia javadoc.io +https://javadoc.io/doc/org.apache.pdfbox/pdfbox/2.0.31/index.html;>API Docsvia javadoc.io Development @@ -155,6 +155,11 @@ Blog +Apache PDFBox 2.0.31 released2024-03-24 +The Apache PDFBox community is pleased to announce the release of +Apache PDFBox version 2.0.31. It is available for download at: +https://pdfbox.apache.org/download.html;>https://pdfbox.apache.org/download.html +See the https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12310760version=12353787;>full release notes for details about this release. Apache PDFBox 3.0.2 released2024-03-14 The Apache PDFBox community is pleased to announce the release of Apache PDFBox version 3.0.2. It is available for download at: diff --git a/content/building.html b/content/building.html index 1727e896..d8a467d9 100644 --- a/content/building.html +++ b/content/building.html @@ -111,7 +111,7 @@ Dependencies Command-Line Tools FAQ -https://javadoc.io/doc/org.apache.pdfbox/pdfbox/3.0.0/index.html;>API Docsvia javadoc.io +https://javadoc.io/doc/org.apache.pdfbox/pdfbox/3.0.2/index.html;>API Docsvia javadoc.io @@ -129,7 +129,7 @@ Command-Line Tools FAQ -https://javadoc.io/doc/org.apache.pdfbox/pdfbox/2.0.29/index.html;>API Docsvia javadoc.io +htt
(pdfbox-docs) branch master updated: website update due to new releases
This is an automated email from the ASF dual-hosted git repository. lehmi pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/pdfbox-docs.git The following commit(s) were added to refs/heads/master by this push: new 28f73145 website update due to new releases 28f73145 is described below commit 28f731455170c3132b512d9f7114bfd0e7481773 Author: Andreas Lehmkühler AuthorDate: Sun Mar 24 19:10:39 2024 +0100 website update due to new releases --- content/2.0/getting-started.md | 2 +- content/3.0/getting-started.md | 2 +- content/_layouts/default.html | 4 +- .../2024-03-24-pdfbox.2.0.31.md} | 35 +++- content/doap_PDFBox.rdf| 7 +++ content/download.html | 66 +++--- 6 files changed, 52 insertions(+), 64 deletions(-) diff --git a/content/2.0/getting-started.md b/content/2.0/getting-started.md index 9496b3f9..638e7118 100644 --- a/content/2.0/getting-started.md +++ b/content/2.0/getting-started.md @@ -32,7 +32,7 @@ To use the latest release you'll need to add the following dependency: org.apache.pdfbox pdfbox - 2.0.29 + 2.0.31 ``` diff --git a/content/3.0/getting-started.md b/content/3.0/getting-started.md index ff589381..8e933403 100644 --- a/content/3.0/getting-started.md +++ b/content/3.0/getting-started.md @@ -32,7 +32,7 @@ To use the latest release you'll need to add the following dependency: org.apache.pdfbox pdfbox - 3.0.0 + 3.0.2 ``` diff --git a/content/_layouts/default.html b/content/_layouts/default.html index d114c7a2..d6b61ef0 100644 --- a/content/_layouts/default.html +++ b/content/_layouts/default.html @@ -57,7 +57,7 @@ Dependencies Command-Line Tools FAQ -https://javadoc.io/doc/org.apache.pdfbox/pdfbox/3.0.0/index.html;>API Docsvia javadoc.io +https://javadoc.io/doc/org.apache.pdfbox/pdfbox/3.0.2/index.html;>API Docsvia javadoc.io @@ -75,7 +75,7 @@ Command-Line Tools FAQ -https://javadoc.io/doc/org.apache.pdfbox/pdfbox/2.0.29/index.html;>API Docsvia javadoc.io +https://javadoc.io/doc/org.apache.pdfbox/pdfbox/2.0.31/index.html;>API Docsvia javadoc.io Development diff --git a/content/3.0/getting-started.md b/content/_posts/2024-03-24-pdfbox.2.0.31.md similarity index 58% copy from content/3.0/getting-started.md copy to content/_posts/2024-03-24-pdfbox.2.0.31.md index ff589381..058763f7 100644 --- a/content/3.0/getting-started.md +++ b/content/_posts/2024-03-24-pdfbox.2.0.31.md @@ -16,34 +16,15 @@ license: Licensed to the Apache Software Foundation (ASF) under one specific language governing permissions and limitations under the License. -layout: documentation -title: Getting Started -eleventyNavigation: - order: 1 +layout: default +title: Apache PDFBox 2.0.31 released +date: 2024-03-24 00:00:00 +00:00 +categories: [release, news] --- -# Getting Started +The Apache PDFBox community is pleased to announce the release of +Apache PDFBox version 2.0.31. It is available for download at: -## Maven +[https://pdfbox.apache.org/download.html](https://pdfbox.apache.org/download.html) -To use the latest release you'll need to add the following dependency: - -```xml - - org.apache.pdfbox - pdfbox - 3.0.0 - -``` - -## Rendering Performance ## - -Since PDFBox 2.0.4 - -PDFBox 2.0.4 introduced a new command line setting - - ``` - -Dorg.apache.pdfbox.rendering.UsePureJavaCMYKConversion=true - ``` - -which may improve the performance of rendering PDFs on some systems especially if there are a lot of images on a page. +See the [full release notes](https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12310760=12353787) for details about this release. diff --git a/content/doap_PDFBox.rdf b/content/doap_PDFBox.rdf index d32f19dc..a9d1d22d 100644 --- a/content/doap_PDFBox.rdf +++ b/content/doap_PDFBox.rdf @@ -34,6 +34,13 @@ Java https://projects.apache.org/category/content; /> https://projects.apache.org/category/library; /> + + +Apache PDFBox +2024-03-24 +2.0.31 + + Apache PDFBox diff --git a/content/download.html b/content/download.html index 2f36e56b..6f36a303 100644 --- a/content/download.html +++ b/content/download.html @@ -28,7 +28,7 @@ title: Download Feature release for PDFBox 3.0.2 https://www.apache.org/dist/pdfbox/3.0.2/RELEASE-NOTES.txt;>3.0.2 (requires Java 8) -Feature r
svn commit: r68095 - /release/pdfbox/2.0.30/
Author: lehmi Date: Sun Mar 24 18:05:08 2024 New Revision: 68095 Log: delete old 2.0.30 release Removed: release/pdfbox/2.0.30/
svn commit: r68094 - /dev/pdfbox/2.0.31/ /release/pdfbox/2.0.31/
Author: lehmi Date: Sun Mar 24 18:04:05 2024 New Revision: 68094 Log: release PDFBox 2.0.31 Added: release/pdfbox/2.0.31/ - copied from r68093, dev/pdfbox/2.0.31/ Removed: dev/pdfbox/2.0.31/
svn commit: r1916512 - /pdfbox/branches/3.0/release/
Author: lehmi Date: Sun Mar 24 16:37:03 2024 New Revision: 1916512 URL: http://svn.apache.org/viewvc?rev=1916512=rev Log: PDFBOX-5789: remove release subproject, merge profile into main pom Removed: pdfbox/branches/3.0/release/
svn commit: r1916511 - in /pdfbox/branches/3.0: assembly.xml pom.xml release/assembly.xml
Author: lehmi Date: Sun Mar 24 16:36:08 2024 New Revision: 1916511 URL: http://svn.apache.org/viewvc?rev=1916511=rev Log: PDFBOX-5789: remove release subproject, merge profile into main pom Added: pdfbox/branches/3.0/assembly.xml (with props) Removed: pdfbox/branches/3.0/release/assembly.xml Modified: pdfbox/branches/3.0/pom.xml Added: pdfbox/branches/3.0/assembly.xml URL: http://svn.apache.org/viewvc/pdfbox/branches/3.0/assembly.xml?rev=1916511=auto == --- pdfbox/branches/3.0/assembly.xml (added) +++ pdfbox/branches/3.0/assembly.xml Sun Mar 24 16:36:08 2024 @@ -0,0 +1,32 @@ + + + src + +zip + + + + ${project.basedir} + + +**/target/** +**/.*/** + + + + Propchange: pdfbox/branches/3.0/assembly.xml -- svn:eol-style = native Propchange: pdfbox/branches/3.0/assembly.xml -- svn:mime-type = text/xml Modified: pdfbox/branches/3.0/pom.xml URL: http://svn.apache.org/viewvc/pdfbox/branches/3.0/pom.xml?rev=1916511=1916510=1916511=diff == --- pdfbox/branches/3.0/pom.xml (original) +++ pdfbox/branches/3.0/pom.xml Sun Mar 24 16:36:08 2024 @@ -83,7 +83,6 @@ app debugger-app examples -release @@ -350,17 +349,113 @@ apache-release + + + + maven-assembly-plugin + + single + +package + + pdfbox-${project.version} + false + +assembly.xml + + + + + + +maven-antrun-plugin +3.1.0 + + + + run + +deploy - true + + + + + + + + + + + + + + + + + + + + + + + + + + +From: ${username}@apache.org +To: d...@pdfbox.apache.org +Subject: [VOTE] Release Apache PDFBox ${project.version} + +A candidate for the PDFBox ${project.version} release is available at: + +https://dist.apache.org/repos/dist/dev/pdfbox/${project.version}/ + +The release candidate is a zip archive of the sources in: + +https://svn.apache.org/repos/asf/pdfbox/tags/${project.version}/ + +The SHA-512 checksum of the archive is ${checksum}. + +Please vote on releasing this package as Apache PDFBox ${project.version}. +The vote is open for the next 72 hours and passes if a majority of at +least three +1 PDFBox PMC votes are cast. + +[ ] +1 Release this package as Apache PDFBox ${project.version} +[ ] -1 Do not release this package because...${line.separator} + + + +The release candidate has been prepared in: + +${basedir}/target/${project.version} + +Please commit it to + +https://dist.apache.org/repos/dist/dev/pdfbox/${project.version}/ + +A release vote template has been generated for you: + +file://${basedir}/target/vote.txt + + + + + + org.apache.ant + ant-nodeps + 1.8.1 + +
svn commit: r1916510 - /pdfbox/branches/2.0/release/
Author: lehmi Date: Sun Mar 24 16:29:44 2024 New Revision: 1916510 URL: http://svn.apache.org/viewvc?rev=1916510=rev Log: PDFBOX-5789: remove release subproject, merge profile into main pom Removed: pdfbox/branches/2.0/release/
svn commit: r1916509 - in /pdfbox/branches/2.0: assembly.xml pom.xml
Author: lehmi Date: Sun Mar 24 16:27:20 2024 New Revision: 1916509 URL: http://svn.apache.org/viewvc?rev=1916509=rev Log: PDFBOX-5789: remove release subproject, merge profile into main pom Added: pdfbox/branches/2.0/assembly.xml (with props) Modified: pdfbox/branches/2.0/pom.xml Added: pdfbox/branches/2.0/assembly.xml URL: http://svn.apache.org/viewvc/pdfbox/branches/2.0/assembly.xml?rev=1916509=auto == --- pdfbox/branches/2.0/assembly.xml (added) +++ pdfbox/branches/2.0/assembly.xml Sun Mar 24 16:27:20 2024 @@ -0,0 +1,32 @@ + + + src + +zip + + + + ${project.basedir} + + +**/target/** +**/.*/** + + + + Propchange: pdfbox/branches/2.0/assembly.xml -- svn:eol-style = native Propchange: pdfbox/branches/2.0/assembly.xml -- svn:mime-type = text/xml Modified: pdfbox/branches/2.0/pom.xml URL: http://svn.apache.org/viewvc/pdfbox/branches/2.0/pom.xml?rev=1916509=1916508=1916509=diff == --- pdfbox/branches/2.0/pom.xml (original) +++ pdfbox/branches/2.0/pom.xml Sun Mar 24 16:27:20 2024 @@ -79,7 +79,6 @@ app debugger-app examples -release @@ -340,19 +339,114 @@ - + apache-release + + + + maven-assembly-plugin + + single + +package + + pdfbox-${project.version} + false + +assembly.xml + + + + + + +maven-antrun-plugin +3.1.0 + + + + run + +install - true + + + + + + + + + + + + + + + + + + + + + + + + + +From: ${username}@apache.org +To: d...@pdfbox.apache.org +Subject: [VOTE] Release Apache PDFBox ${project.version} + +A candidate for the PDFBox ${project.version} release is available at: + +https://dist.apache.org/repos/dist/dev/pdfbox/${project.version}/ + +The release candidate is a zip archive of the sources in: + +https://svn.apache.org/repos/asf/pdfbox/tags/${project.version}/ + +The SHA-512 checksum of the archive is ${checksum}. + +Please vote on releasing this package as Apache PDFBox ${project.version}. +The vote is open for the next 72 hours and passes if a majority of at +least three +1 PDFBox PMC votes are cast. + +[ ] +1 Release this package as Apache PDFBox ${project.version} +[ ] -1 Do not release this package because...${line.separator} + + + +The release candidate has been prepared in: + +${basedir}/target/${project.version} + +Please commit it to + +https://dist.apache.org/repos/dist/dev/pdfbox/${project.version}/ + +A release vote template has been generated for you: + +file://${basedir}/target/vote.txt + + + + + + org.apache.ant + ant-nodeps + 1.8.1 + +
svn commit: r1916508 - /pdfbox/trunk/release/
Author: lehmi Date: Sun Mar 24 16:05:24 2024 New Revision: 1916508 URL: http://svn.apache.org/viewvc?rev=1916508=rev Log: PDFBOX-5789: remove release subproject, merge profile into main pom Removed: pdfbox/trunk/release/
svn commit: r1916507 - /pdfbox/trunk/pom.xml
Author: lehmi Date: Sun Mar 24 16:04:52 2024 New Revision: 1916507 URL: http://svn.apache.org/viewvc?rev=1916507=rev Log: PDFBOX-5789: remove release subproject, merge profile into main pom Modified: pdfbox/trunk/pom.xml Modified: pdfbox/trunk/pom.xml URL: http://svn.apache.org/viewvc/pdfbox/trunk/pom.xml?rev=1916507=1916506=1916507=diff == --- pdfbox/trunk/pom.xml (original) +++ pdfbox/trunk/pom.xml Sun Mar 24 16:04:52 2024 @@ -79,7 +79,6 @@ app debugger-app examples -release @@ -91,7 +90,7 @@ 3.11.0 - + @@ -235,18 +234,112 @@ apache-release + + + + maven-assembly-plugin + + single + +package - true + pdfbox-${project.version} + false + +assembly.xml + + +maven-antrun-plugin +3.1.0 + + + + run + +deploy + + + + + + + + + + + + + + + + + + + + + + + + + +From: ${username}@apache.org +To: d...@pdfbox.apache.org +Subject: [VOTE] Release Apache PDFBox ${project.version} + +A candidate for the PDFBox ${project.version} release is available at: + +https://dist.apache.org/repos/dist/dev/pdfbox/${project.version}/ + +The release candidate is a zip archive of the sources in: + +https://svn.apache.org/repos/asf/pdfbox/tags/${project.version}/ + +The SHA-512 checksum of the archive is ${checksum}. + +Please vote on releasing this package as Apache PDFBox ${project.version}. +The vote is open for the next 72 hours and passes if a majority of at +least three +1 PDFBox PMC votes are cast. + +[ ] +1 Release this package as Apache PDFBox ${project.version} +[ ] -1 Do not release this package because...${line.separator} + + + +The release candidate has been prepared in: + +${basedir}/target/${project.version} + +Please commit it to + +https://dist.apache.org/repos/dist/dev/pdfbox/${project.version}/ + +A release vote template has been generated for you: + +file://${basedir}/target/vote.txt + + + + + + + + + org.apache.ant + ant-nodeps + 1.8.1 + + +
svn commit: r68048 - /dev/pdfbox/2.0.31/
Author: lehmi Date: Thu Mar 21 17:50:37 2024 New Revision: 68048 Log: provide 2.0.31 release candidate Added: dev/pdfbox/2.0.31/ dev/pdfbox/2.0.31/RELEASE-NOTES.txt (with props) dev/pdfbox/2.0.31/debugger-app-2.0.31.jar (with props) dev/pdfbox/2.0.31/debugger-app-2.0.31.jar.asc (with props) dev/pdfbox/2.0.31/debugger-app-2.0.31.jar.sha512 dev/pdfbox/2.0.31/fontbox-2.0.31.jar (with props) dev/pdfbox/2.0.31/fontbox-2.0.31.jar.asc (with props) dev/pdfbox/2.0.31/fontbox-2.0.31.jar.sha512 dev/pdfbox/2.0.31/pdfbox-2.0.31-src.zip (with props) dev/pdfbox/2.0.31/pdfbox-2.0.31-src.zip.asc (with props) dev/pdfbox/2.0.31/pdfbox-2.0.31-src.zip.sha512 dev/pdfbox/2.0.31/pdfbox-2.0.31.jar (with props) dev/pdfbox/2.0.31/pdfbox-2.0.31.jar.asc (with props) dev/pdfbox/2.0.31/pdfbox-2.0.31.jar.sha512 dev/pdfbox/2.0.31/pdfbox-app-2.0.31.jar (with props) dev/pdfbox/2.0.31/pdfbox-app-2.0.31.jar.asc (with props) dev/pdfbox/2.0.31/pdfbox-app-2.0.31.jar.sha512 dev/pdfbox/2.0.31/pdfbox-debugger-2.0.31.jar (with props) dev/pdfbox/2.0.31/pdfbox-debugger-2.0.31.jar.asc (with props) dev/pdfbox/2.0.31/pdfbox-debugger-2.0.31.jar.sha512 dev/pdfbox/2.0.31/pdfbox-tools-2.0.31.jar (with props) dev/pdfbox/2.0.31/pdfbox-tools-2.0.31.jar.asc (with props) dev/pdfbox/2.0.31/pdfbox-tools-2.0.31.jar.sha512 dev/pdfbox/2.0.31/preflight-2.0.31.jar (with props) dev/pdfbox/2.0.31/preflight-2.0.31.jar.asc (with props) dev/pdfbox/2.0.31/preflight-2.0.31.jar.sha512 dev/pdfbox/2.0.31/preflight-app-2.0.31.jar (with props) dev/pdfbox/2.0.31/preflight-app-2.0.31.jar.asc (with props) dev/pdfbox/2.0.31/preflight-app-2.0.31.jar.sha512 dev/pdfbox/2.0.31/xmpbox-2.0.31.jar (with props) dev/pdfbox/2.0.31/xmpbox-2.0.31.jar.asc (with props) dev/pdfbox/2.0.31/xmpbox-2.0.31.jar.sha512 Added: dev/pdfbox/2.0.31/RELEASE-NOTES.txt == --- dev/pdfbox/2.0.31/RELEASE-NOTES.txt (added) +++ dev/pdfbox/2.0.31/RELEASE-NOTES.txt Thu Mar 21 17:50:37 2024 @@ -0,0 +1,90 @@ +Release Notes -- Apache PDFBox -- Version 2.0.31 + +Introduction + + +The Apache PDFBox library is an open source Java tool for working with PDF documents. + +This is an incremental bugfix release based on the earlier 2.0.30 release. It contains +a couple of fixes and small improvements. + +For more details on these changes and all the other fixes and improvements +included in this release, please refer to the following issues on the +PDFBox issue tracker at https://issues.apache.org/jira/browse/PDFBOX. + +Bug + +[PDFBOX-2725] - [PATCH] Split pdf lose accessibility tags +[PDFBOX-5375] - Allow creating of PDFXObjectImage without accessing to the image stream +[PDFBOX-5713] - PfbParser fails to parse PFB font with multiple binary records. +[PDFBOX-5715] - Lines vanish when printing on MacOS +[PDFBOX-5718] - java.lang.IllegalArgumentException: Provided dictionary is not of type 'COSName{OCG}' +[PDFBOX-5721] - The embedded font DroidSansFallbackFull reports an error when parsing, and finally uses lastResortFont, resulting in garbled fonts. +[PDFBOX-5723] - COSName caches already cached hashCode +[PDFBOX-5727] - Font operation takes a long time with 3.0.1 +[PDFBOX-5728] - NullPointerException in TTFSubsetter.buildPostTable() +[PDFBOX-5732] - Problem converting PDF to image (java.awt.color.CMMException: Can not access specified profile) +[PDFBOX-5735] - Set the default value for PDNonTerminalField +[PDFBOX-5737] - java.lang.ArrayIndexOutOfBoundsException Bug Report +[PDFBOX-5738] - Wrong colors in PDF since PDFBOX-5488 +[PDFBOX-5740] - Java 7 support on 2.0 +[PDFBOX-5751] - Convert to image exception +[PDFBOX-5754] - PDF conversion in this format is very slow. Is there any room for optimization? +[PDFBOX-5763] - IllegalArgumentException: -Infinity is not a finite number +[PDFBOX-5772] - Inconsistent signature page handling when signing in existing signature fields +[PDFBOX-5773] - Add leading "0" for octal values in MacOSRomanEncoding +[PDFBOX-5776] - DataFormatException: invalid distance too far back +[PDFBOX-5778] - Grayscale JPEG rendered multicolor +[PDFBOX-5781] - OutOfMemoryError in FileSystemFontsProvider.scanFonts +[PDFBOX-5782] - NPE in PageDrawer.getPaint() +[PDFBOX-5785] - Issue with embedded Font and descendant Font +[PDFBOX-5787] - LCMS error 13: Mismatched alpha channels + +New Feature + +[PDFBOX-5768] - Enable Native Markdown Extraction in Apache PDFBox + +Improvement + +[PDFBOX-5762] - When splitting, keep page destinations that are part of target document(s) +[PDFBOX-5783] - Replace Exception with some repair attempt + +Task + +[PDFBOX-5739] - Add test for PDFBOX-3347 +[PDFBOX-5741] - Add test for PDFBOX-4106 + +Release Contents + + +This release consists of a single source archive packaged as a zip file. +The a
svn commit: r1916472 - in /pdfbox/branches/2.0: app/pom.xml debugger-app/pom.xml debugger/pom.xml examples/pom.xml fontbox/pom.xml pdfbox/pom.xml pom.xml preflight-app/pom.xml preflight/pom.xml releas
Author: lehmi Date: Thu Mar 21 17:14:39 2024 New Revision: 1916472 URL: http://svn.apache.org/viewvc?rev=1916472=rev Log: [maven-release-plugin] prepare for next development iteration Modified: pdfbox/branches/2.0/app/pom.xml pdfbox/branches/2.0/debugger-app/pom.xml pdfbox/branches/2.0/debugger/pom.xml pdfbox/branches/2.0/examples/pom.xml pdfbox/branches/2.0/fontbox/pom.xml pdfbox/branches/2.0/pdfbox/pom.xml pdfbox/branches/2.0/pom.xml pdfbox/branches/2.0/preflight-app/pom.xml pdfbox/branches/2.0/preflight/pom.xml pdfbox/branches/2.0/release/pom.xml pdfbox/branches/2.0/tools/pom.xml pdfbox/branches/2.0/xmpbox/pom.xml Modified: pdfbox/branches/2.0/app/pom.xml URL: http://svn.apache.org/viewvc/pdfbox/branches/2.0/app/pom.xml?rev=1916472=1916471=1916472=diff == --- pdfbox/branches/2.0/app/pom.xml (original) +++ pdfbox/branches/2.0/app/pom.xml Thu Mar 21 17:14:39 2024 @@ -23,7 +23,7 @@ org.apache.pdfbox pdfbox-parent -2.0.31 +2.0.32-SNAPSHOT ../pom.xml Modified: pdfbox/branches/2.0/debugger-app/pom.xml URL: http://svn.apache.org/viewvc/pdfbox/branches/2.0/debugger-app/pom.xml?rev=1916472=1916471=1916472=diff == --- pdfbox/branches/2.0/debugger-app/pom.xml (original) +++ pdfbox/branches/2.0/debugger-app/pom.xml Thu Mar 21 17:14:39 2024 @@ -23,7 +23,7 @@ org.apache.pdfbox pdfbox-parent -2.0.31 +2.0.32-SNAPSHOT ../pom.xml Modified: pdfbox/branches/2.0/debugger/pom.xml URL: http://svn.apache.org/viewvc/pdfbox/branches/2.0/debugger/pom.xml?rev=1916472=1916471=1916472=diff == --- pdfbox/branches/2.0/debugger/pom.xml (original) +++ pdfbox/branches/2.0/debugger/pom.xml Thu Mar 21 17:14:39 2024 @@ -23,7 +23,7 @@ org.apache.pdfbox pdfbox-parent -2.0.31 +2.0.32-SNAPSHOT ../pom.xml Modified: pdfbox/branches/2.0/examples/pom.xml URL: http://svn.apache.org/viewvc/pdfbox/branches/2.0/examples/pom.xml?rev=1916472=1916471=1916472=diff == --- pdfbox/branches/2.0/examples/pom.xml (original) +++ pdfbox/branches/2.0/examples/pom.xml Thu Mar 21 17:14:39 2024 @@ -23,7 +23,7 @@ org.apache.pdfbox pdfbox-parent -2.0.31 +2.0.32-SNAPSHOT ../pom.xml Modified: pdfbox/branches/2.0/fontbox/pom.xml URL: http://svn.apache.org/viewvc/pdfbox/branches/2.0/fontbox/pom.xml?rev=1916472=1916471=1916472=diff == --- pdfbox/branches/2.0/fontbox/pom.xml (original) +++ pdfbox/branches/2.0/fontbox/pom.xml Thu Mar 21 17:14:39 2024 @@ -21,7 +21,7 @@ org.apache.pdfbox pdfbox-parent -2.0.31 +2.0.32-SNAPSHOT ../pom.xml Modified: pdfbox/branches/2.0/pdfbox/pom.xml URL: http://svn.apache.org/viewvc/pdfbox/branches/2.0/pdfbox/pom.xml?rev=1916472=1916471=1916472=diff == --- pdfbox/branches/2.0/pdfbox/pom.xml (original) +++ pdfbox/branches/2.0/pdfbox/pom.xml Thu Mar 21 17:14:39 2024 @@ -23,7 +23,7 @@ org.apache.pdfbox pdfbox-parent -2.0.31 +2.0.32-SNAPSHOT ../pom.xml Modified: pdfbox/branches/2.0/pom.xml URL: http://svn.apache.org/viewvc/pdfbox/branches/2.0/pom.xml?rev=1916472=1916471=1916472=diff == --- pdfbox/branches/2.0/pom.xml (original) +++ pdfbox/branches/2.0/pom.xml Thu Mar 21 17:14:39 2024 @@ -31,7 +31,7 @@ org.apache.pdfbox pdfbox-parent - 2.0.31 + 2.0.32-SNAPSHOT pom Apache PDFBox parent @@ -43,9 +43,9 @@ - scm:svn:https://svn.apache.org/repos/asf/pdfbox/tags/2.0.31 - scm:svn:https://svn.apache.org/repos/asf/pdfbox/tags/2.0.31 -https://svn.apache.org/viewvc/pdfbox/tags/2.0.31 + scm:svn:https://svn.apache.org/repos/asf/pdfbox/branches/2.0 + scm:svn:https://svn.apache.org/repos/asf/pdfbox/branches/2.0 +https://svn.apache.org/viewvc/pdfbox/branches/2.0 Modified: pdfbox/branches/2.0/preflight-app/pom.xml URL: http://svn.apache.org/viewvc/pdfbox/branches/2.0/preflight-app/pom.xml?rev=1916472=1916471=1916472=diff == Binary files - no diff available. Modified: pdfbox/branches/2.0/preflight/pom.xml URL: http://svn.apache.org/viewvc/pdfbox/branches/2.0/preflight/pom.xml?rev=1916472=1916471=1916472=diff == --- pdfbox/branches/2.0/preflight/pom.xml (original) +++ pdfbox/branches/2.0/preflight/pom.xml Thu Mar 21 17:14:39 2024 @@ -26,7 +26,7
svn commit: r1916471 - /pdfbox/tags/2.0.31/
Author: lehmi Date: Thu Mar 21 17:14:36 2024 New Revision: 1916471 URL: http://svn.apache.org/viewvc?rev=1916471=rev Log: [maven-release-plugin] copy for tag 2.0.31 Added: pdfbox/tags/2.0.31/ (props changed) - copied from r1916470, pdfbox/branches/2.0/ Propchange: pdfbox/tags/2.0.31/ -- --- svn:ignore (added) +++ svn:ignore Thu Mar 21 17:14:36 2024 @@ -0,0 +1,2 @@ +.* +target Propchange: pdfbox/tags/2.0.31/ -- --- svn:mergeinfo (added) +++ svn:mergeinfo Thu Mar 21 17:14:36 2024 @@ -0,0 +1,4 @@ +/pdfbox/branches/issue4569:1861285,1861586,1872016,1872020,1872024,1872074 +/pdfbox/branches/no-awt:1618517-1621410 +/pdfbox/no-awt:1618514-1618516 +/pdfbox/trunk:1736223,1736227,1736615,1737043,1737130,1737599-1737600,1738755,1740160,1742437,1742442,1743248,1745595,1745606,1745772,1745774,1745776,1745779,1746032,1746151,1749162,1749165,1749432,1766088,1766213,1767585,1768061,1770985,1770988,1772528,1778172,1782679,1786586,1786603,1787546,1789414,1790745,1794073,1794090,1794620,1794753,1794859,1794891,1800566,1812426,1814226,1826836,1857800,1857803,1857914,1861927,1861933,1872981,1877805,1877808,1877811,1878049,1879281,1879769,1880018
svn commit: r1916470 - in /pdfbox/branches/2.0: app/pom.xml debugger-app/pom.xml debugger/pom.xml examples/pom.xml fontbox/pom.xml pdfbox/pom.xml pom.xml preflight-app/pom.xml preflight/pom.xml releas
Author: lehmi Date: Thu Mar 21 17:14:24 2024 New Revision: 1916470 URL: http://svn.apache.org/viewvc?rev=1916470=rev Log: [maven-release-plugin] prepare release 2.0.31 Modified: pdfbox/branches/2.0/app/pom.xml pdfbox/branches/2.0/debugger-app/pom.xml pdfbox/branches/2.0/debugger/pom.xml pdfbox/branches/2.0/examples/pom.xml pdfbox/branches/2.0/fontbox/pom.xml pdfbox/branches/2.0/pdfbox/pom.xml pdfbox/branches/2.0/pom.xml pdfbox/branches/2.0/preflight-app/pom.xml pdfbox/branches/2.0/preflight/pom.xml pdfbox/branches/2.0/release/pom.xml pdfbox/branches/2.0/tools/pom.xml pdfbox/branches/2.0/xmpbox/pom.xml Modified: pdfbox/branches/2.0/app/pom.xml URL: http://svn.apache.org/viewvc/pdfbox/branches/2.0/app/pom.xml?rev=1916470=1916469=1916470=diff == --- pdfbox/branches/2.0/app/pom.xml (original) +++ pdfbox/branches/2.0/app/pom.xml Thu Mar 21 17:14:24 2024 @@ -23,7 +23,7 @@ org.apache.pdfbox pdfbox-parent -2.0.31-SNAPSHOT +2.0.31 ../pom.xml Modified: pdfbox/branches/2.0/debugger-app/pom.xml URL: http://svn.apache.org/viewvc/pdfbox/branches/2.0/debugger-app/pom.xml?rev=1916470=1916469=1916470=diff == --- pdfbox/branches/2.0/debugger-app/pom.xml (original) +++ pdfbox/branches/2.0/debugger-app/pom.xml Thu Mar 21 17:14:24 2024 @@ -23,7 +23,7 @@ org.apache.pdfbox pdfbox-parent -2.0.31-SNAPSHOT +2.0.31 ../pom.xml Modified: pdfbox/branches/2.0/debugger/pom.xml URL: http://svn.apache.org/viewvc/pdfbox/branches/2.0/debugger/pom.xml?rev=1916470=1916469=1916470=diff == --- pdfbox/branches/2.0/debugger/pom.xml (original) +++ pdfbox/branches/2.0/debugger/pom.xml Thu Mar 21 17:14:24 2024 @@ -23,7 +23,7 @@ org.apache.pdfbox pdfbox-parent -2.0.31-SNAPSHOT +2.0.31 ../pom.xml Modified: pdfbox/branches/2.0/examples/pom.xml URL: http://svn.apache.org/viewvc/pdfbox/branches/2.0/examples/pom.xml?rev=1916470=1916469=1916470=diff == --- pdfbox/branches/2.0/examples/pom.xml (original) +++ pdfbox/branches/2.0/examples/pom.xml Thu Mar 21 17:14:24 2024 @@ -23,7 +23,7 @@ org.apache.pdfbox pdfbox-parent -2.0.31-SNAPSHOT +2.0.31 ../pom.xml Modified: pdfbox/branches/2.0/fontbox/pom.xml URL: http://svn.apache.org/viewvc/pdfbox/branches/2.0/fontbox/pom.xml?rev=1916470=1916469=1916470=diff == --- pdfbox/branches/2.0/fontbox/pom.xml (original) +++ pdfbox/branches/2.0/fontbox/pom.xml Thu Mar 21 17:14:24 2024 @@ -21,7 +21,7 @@ org.apache.pdfbox pdfbox-parent -2.0.31-SNAPSHOT +2.0.31 ../pom.xml Modified: pdfbox/branches/2.0/pdfbox/pom.xml URL: http://svn.apache.org/viewvc/pdfbox/branches/2.0/pdfbox/pom.xml?rev=1916470=1916469=1916470=diff == --- pdfbox/branches/2.0/pdfbox/pom.xml (original) +++ pdfbox/branches/2.0/pdfbox/pom.xml Thu Mar 21 17:14:24 2024 @@ -23,7 +23,7 @@ org.apache.pdfbox pdfbox-parent -2.0.31-SNAPSHOT +2.0.31 ../pom.xml Modified: pdfbox/branches/2.0/pom.xml URL: http://svn.apache.org/viewvc/pdfbox/branches/2.0/pom.xml?rev=1916470=1916469=1916470=diff == --- pdfbox/branches/2.0/pom.xml (original) +++ pdfbox/branches/2.0/pom.xml Thu Mar 21 17:14:24 2024 @@ -31,7 +31,7 @@ org.apache.pdfbox pdfbox-parent - 2.0.31-SNAPSHOT + 2.0.31 pom Apache PDFBox parent @@ -43,9 +43,9 @@ - scm:svn:https://svn.apache.org/repos/asf/pdfbox/branches/2.0 - scm:svn:https://svn.apache.org/repos/asf/pdfbox/branches/2.0 -https://svn.apache.org/viewvc/pdfbox/branches/2.0 + scm:svn:https://svn.apache.org/repos/asf/pdfbox/tags/2.0.31 + scm:svn:https://svn.apache.org/repos/asf/pdfbox/tags/2.0.31 +https://svn.apache.org/viewvc/pdfbox/tags/2.0.31 Modified: pdfbox/branches/2.0/preflight-app/pom.xml URL: http://svn.apache.org/viewvc/pdfbox/branches/2.0/preflight-app/pom.xml?rev=1916470=1916469=1916470=diff == Binary files - no diff available. Modified: pdfbox/branches/2.0/preflight/pom.xml URL: http://svn.apache.org/viewvc/pdfbox/branches/2.0/preflight/pom.xml?rev=1916470=1916469=1916470=diff == --- pdfbox/branches/2.0/preflight/pom.xml (original) +++ pdfbox/branches/2.0/preflight/pom.xml Thu Mar 21 17:14:24 2024 @@ -26,7 +26,7
svn commit: r1916469 - /pdfbox/branches/2.0/pom.xml
Author: lehmi Date: Thu Mar 21 17:08:14 2024 New Revision: 1916469 URL: http://svn.apache.org/viewvc?rev=1916469=rev Log: disable dependency check due to ongoing issues with the NVD site Modified: pdfbox/branches/2.0/pom.xml Modified: pdfbox/branches/2.0/pom.xml URL: http://svn.apache.org/viewvc/pdfbox/branches/2.0/pom.xml?rev=1916469=1916468=1916469=diff == --- pdfbox/branches/2.0/pom.xml (original) +++ pdfbox/branches/2.0/pom.xml Thu Mar 21 17:08:14 2024 @@ -320,6 +320,8 @@ dependency-check-maven 9.0.10 + + true 0 true
svn commit: r1916445 - /pdfbox/branches/2.0/RELEASE-NOTES.txt
Author: lehmi Date: Wed Mar 20 17:15:11 2024 New Revision: 1916445 URL: http://svn.apache.org/viewvc?rev=1916445=rev Log: prepare for 2.0.31 release Modified: pdfbox/branches/2.0/RELEASE-NOTES.txt Modified: pdfbox/branches/2.0/RELEASE-NOTES.txt URL: http://svn.apache.org/viewvc/pdfbox/branches/2.0/RELEASE-NOTES.txt?rev=1916445=1916444=1916445=diff == --- pdfbox/branches/2.0/RELEASE-NOTES.txt (original) +++ pdfbox/branches/2.0/RELEASE-NOTES.txt Wed Mar 20 17:15:11 2024 @@ -1,11 +1,11 @@ -Release Notes -- Apache PDFBox -- Version 2.0.30 +Release Notes -- Apache PDFBox -- Version 2.0.31 Introduction The Apache PDFBox library is an open source Java tool for working with PDF documents. -This is an incremental bugfix release based on the earlier 2.0.29 release. It contains +This is an incremental bugfix release based on the earlier 2.0.30 release. It contains a couple of fixes and small improvements. For more details on these changes and all the other fixes and improvements @@ -14,45 +14,45 @@ PDFBox issue tracker at https://issues.a Bug -[PDFBOX-5350] - Regression unicode mapping in Korean document -[PDFBOX-5359] - Operators "q" and "Q" should also preserve text matrices -[PDFBOX-5623] - Signature Image not Rendered starting with PDFBox 2.0.23 + patch provided -[PDFBOX-5627] - Fonts are not subsetted when saving incrementally -[PDFBOX-5628] - Bug in PDFMergerUtility#mergeFields -[PDFBOX-5639] - Password protected PDF opens in GUI apps but PDFbox says invalid password -[PDFBOX-5642] - Wrong error message "2.4.1 : Invalid Color space, The operator "rg" can't be used with CMYK Profile" -[PDFBOX-5644] - Make FDF annotations more compliant with the specification -[PDFBOX-5649] - NPE in DomXmpParser.parseLiDescription -[PDFBOX-5651] - Regression: NoSuchElementException in PDFXrefStreamParser -[PDFBOX-5653] - The PageDrawer.strokePath method is blocked, and cpu100% -[PDFBOX-5654] - Avoid NPE when processing CFF2 based fonts -[PDFBOX-5658] - IllegalArgumentException: Dimensions (width=458477041 height=26) are too large -[PDFBOX-5662] - Can not see checkbox check -[PDFBOX-5665] - NPE when converting pdf to image. -[PDFBOX-5668] - NullPointerException in XMPMetadata.getSchema() -[PDFBOX-5672] - PDFToImage might not correctly detect unsupported image formats -[PDFBOX-5684] - Font cache isn't effective on my machine, always rebuilds -[PDFBOX-5694] - PDF to Image conversion results in different converted image -[PDFBOX-5702] - Text in a certain font is lost when converting pdf to image -[PDFBOX-5706] - Incorrect colors in image from PDFs (DCTDecode) +[PDFBOX-2725] - [PATCH] Split pdf lose accessibility tags +[PDFBOX-5375] - Allow creating of PDFXObjectImage without accessing to the image stream +[PDFBOX-5713] - PfbParser fails to parse PFB font with multiple binary records. +[PDFBOX-5715] - Lines vanish when printing on MacOS +[PDFBOX-5718] - java.lang.IllegalArgumentException: Provided dictionary is not of type 'COSName{OCG}' +[PDFBOX-5721] - The embedded font DroidSansFallbackFull reports an error when parsing, and finally uses lastResortFont, resulting in garbled fonts. +[PDFBOX-5723] - COSName caches already cached hashCode +[PDFBOX-5727] - Font operation takes a long time with 3.0.1 +[PDFBOX-5728] - NullPointerException in TTFSubsetter.buildPostTable() +[PDFBOX-5732] - Problem converting PDF to image (java.awt.color.CMMException: Can not access specified profile) +[PDFBOX-5735] - Set the default value for PDNonTerminalField +[PDFBOX-5737] - java.lang.ArrayIndexOutOfBoundsException Bug Report +[PDFBOX-5738] - Wrong colors in PDF since PDFBOX-5488 +[PDFBOX-5740] - Java 7 support on 2.0 +[PDFBOX-5751] - Convert to image exception +[PDFBOX-5754] - PDF conversion in this format is very slow. Is there any room for optimization? +[PDFBOX-5763] - IllegalArgumentException: -Infinity is not a finite number +[PDFBOX-5772] - Inconsistent signature page handling when signing in existing signature fields +[PDFBOX-5773] - Add leading "0" for octal values in MacOSRomanEncoding +[PDFBOX-5776] - DataFormatException: invalid distance too far back +[PDFBOX-5778] - Grayscale JPEG rendered multicolor +[PDFBOX-5781] - OutOfMemoryError in FileSystemFontsProvider.scanFonts +[PDFBOX-5782] - NPE in PageDrawer.getPaint() +[PDFBOX-5785] - Issue with embedded Font and descendant Font +[PDFBOX-5787] - LCMS error 13: Mismatched alpha channels New Feature -[PDFBOX-5683] - Inconsistent/incomplete PDF rendering +[PDFBOX-5768] - Enable Native Markdown Extraction in Apache PDFBox Improvement -[PDFBOX-4892] - Improve code quality (4) -[PDFBOX-5630] - Add PDRectangle#TABLOID paper size -[PDFBOX-5631] - Support version 0.5 of MaximumProfileTable -[PDFBOX-5632] - loca-table isn't mandatory for TTF/OTF-fonts using CFF outlines -[PDFBOX-5636] - Implement PDF 2.0 dash phase cl
svn commit: r1916326 - /pdfbox/branches/3.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDCIDFontType2.java
Author: lehmi Date: Fri Mar 15 07:20:01 2024 New Revision: 1916326 URL: http://svn.apache.org/viewvc?rev=1916326=rev Log: PDFBOX-5785: remove restriction Modified: pdfbox/branches/3.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDCIDFontType2.java Modified: pdfbox/branches/3.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDCIDFontType2.java URL: http://svn.apache.org/viewvc/pdfbox/branches/3.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDCIDFontType2.java?rev=1916326=1916325=1916326=diff == --- pdfbox/branches/3.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDCIDFontType2.java (original) +++ pdfbox/branches/3.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDCIDFontType2.java Fri Mar 15 07:20:01 2024 @@ -325,7 +325,7 @@ public class PDCIDFontType2 extends PDCI return cid; } // "Identity" is the default for TrueTypeFonts if the CID is within the range -return otf == null && cid < ttf.getNumberOfGlyphs() ? cid : 0; +return cid < ttf.getNumberOfGlyphs() ? cid : 0; } } }
svn commit: r1916325 - /pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDCIDFontType2.java
Author: lehmi Date: Fri Mar 15 07:19:41 2024 New Revision: 1916325 URL: http://svn.apache.org/viewvc?rev=1916325=rev Log: PDFBOX-5785: remove restriction Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDCIDFontType2.java Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDCIDFontType2.java URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDCIDFontType2.java?rev=1916325=1916324=1916325=diff == --- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDCIDFontType2.java (original) +++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDCIDFontType2.java Fri Mar 15 07:19:41 2024 @@ -327,7 +327,7 @@ public class PDCIDFontType2 extends PDCI return cid; } // "Identity" is the default for TrueTypeFonts if the CID is within the range -return otf == null && cid < ttf.getNumberOfGlyphs() ? cid : 0; +return cid < ttf.getNumberOfGlyphs() ? cid : 0; } } }
svn commit: r1916316 - /pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDCIDFontType2.java
Author: lehmi Date: Thu Mar 14 20:52:54 2024 New Revision: 1916316 URL: http://svn.apache.org/viewvc?rev=1916316=rev Log: PDFBOX-5785: adjust logic due to a different behavior of 2.0 compared to 3.0 Modified: pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDCIDFontType2.java Modified: pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDCIDFontType2.java URL: http://svn.apache.org/viewvc/pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDCIDFontType2.java?rev=1916316=1916315=1916316=diff == --- pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDCIDFontType2.java (original) +++ pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDCIDFontType2.java Thu Mar 14 20:52:54 2024 @@ -304,14 +304,13 @@ public class PDCIDFontType2 extends PDCI } else { -boolean isOTF = ttf instanceof OpenTypeFont; // "Identity" is the default for CFF-based OpenTypeFonts -if (isOTF && ((OpenTypeFont) ttf).isPostScript()) +if (ttf instanceof OpenTypeFont && ((OpenTypeFont) ttf).isPostScript()) { return cid; } // "Identity" is the default for TrueTypeFonts if the CID is within the range -return !isOTF && cid < ttf.getNumberOfGlyphs() ? cid : 0; +return cid < ttf.getNumberOfGlyphs() ? cid : 0; } } }
(pdfbox-docs) branch asf-site updated: Site checkin for project Apache PDFBox Website
This is an automated email from the ASF dual-hosted git repository. lehmi pushed a commit to branch asf-site in repository https://gitbox.apache.org/repos/asf/pdfbox-docs.git The following commit(s) were added to refs/heads/asf-site by this push: new e60c95d8 Site checkin for project Apache PDFBox Website e60c95d8 is described below commit e60c95d8e40097359feab97b37670c83b270788d Author: Andreas Lehmkühler AuthorDate: Thu Mar 14 21:35:59 2024 +0100 Site checkin for project Apache PDFBox Website --- content/blog/index.html | 7 + content/doap_PDFBox.rdf | 7 + content/download.html | 72 - content/index.html | 18 +++-- 4 files changed, 60 insertions(+), 44 deletions(-) diff --git a/content/blog/index.html b/content/blog/index.html index b09d94f4..441177d2 100644 --- a/content/blog/index.html +++ b/content/blog/index.html @@ -155,6 +155,13 @@ Blog +Apache PDFBox 3.0.2 released2024-03-14 +The Apache PDFBox community is pleased to announce the release of +Apache PDFBox version 3.0.2. It is available for download at: +https://pdfbox.apache.org/download.html;>https://pdfbox.apache.org/download.html +See the https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12310760version=12353972;>full release notes for details about this release. +The https://pdfbox.apache.org/3.0/migration.html;>Migration Guide shall give users coming from +PDFBox 2.0.x an overview about things to look at when switching over. More details to come. Apache PDFBox 3.0.1 released2023-11-30 The Apache PDFBox community is pleased to announce the release of Apache PDFBox version 3.0.1. It is available for download at: diff --git a/content/doap_PDFBox.rdf b/content/doap_PDFBox.rdf index 87b6af1a..d32f19dc 100644 --- a/content/doap_PDFBox.rdf +++ b/content/doap_PDFBox.rdf @@ -34,6 +34,13 @@ Java https://projects.apache.org/category/content; /> https://projects.apache.org/category/library; /> + + +Apache PDFBox +2024-03-14 +3.0.2 + + Apache PDFBox diff --git a/content/download.html b/content/download.html index f47fddcb..fc1afc19 100644 --- a/content/download.html +++ b/content/download.html @@ -162,7 +162,7 @@ The Apache PDFBox community provides feature and bugfix releases. -Feature release for PDFBox 3.0.1 https://www.apache.org/dist/pdfbox/3.0.1/RELEASE-NOTES.txt;>3.0.1 (requires Java 8) +Feature release for PDFBox 3.0.2 https://www.apache.org/dist/pdfbox/3.0.2/RELEASE-NOTES.txt;>3.0.2 (requires Java 8) Feature release for PDFBox 2.0.x https://www.apache.org/dist/pdfbox/2.0.30/RELEASE-NOTES.txt;>2.0.30 (requires Java 6) Feature release of JBIG2 ImageIO plugin 3.0.x https://www.apache.org/dist/pdfbox/jbig2-imageio/3.0.4/RELEASE-NOTES.txt;>3.0.4 (requires Java 6) Previous releases @@ -186,71 +186,71 @@ -PDFBox3.0.1feature +PDFBox3.0.2feature Command line tools PDFBox standalone -https://www.apache.org/dyn/closer.lua/pdfbox/3.0.1/pdfbox-app-3.0.1.jar;>pdfbox-app-3.0.1.jar -https://www.apache.org/dist/pdfbox/3.0.1/pdfbox-app-3.0.1.jar.asc;>ASC -https://www.apache.org/dist/pdfbox/3.0.1/pdfbox-app-3.0.1.jar.sha512;>SHA512 +https://www.apache.org/dyn/closer.lua/pdfbox/3.0.2/pdfbox-app-3.0.2.jar;>pdfbox-app-3.0.2.jar +https://www.apache.org/dist/pdfbox/3.0.2/pdfbox-app-3.0.2.jar.asc;>ASC +https://www.apache.org/dist/pdfbox/3.0.2/pdfbox-app-3.0.2.jar.sha512;>SHA512 Debugger standalone -https://www.apache.org/dyn/closer.lua/pdfbox/3.0.1/debugger-app-3.0.1.jar;>debugger-app-3.0.1.jar -https://www.apache.org/dist/pdfbox/3.0.1/debugger-app-3.0.1.jar.asc;>ASC -https://www.apache.org/dist/pdfbox/3.0.1/debugger-app-3.0.1.jar.sha512;>SHA512 +https://www.apache.org/dyn/closer.lua/pdfbox/3.0.2/debugger-app-3.0.2.jar;>debugger-app-3.0.2.jar +https://www.apache.org/dist/pdfbox/3.0.2/debugger-app-3.0.2.jar.asc;>ASC +https://www.apache.org/dist/pdfbox/3.0.2/debugger-app-3.0.2.jar.sha512;>SHA512 Preflight standalone -https://www.apache.org/dyn/closer.lua/pdfbox/3.0.1/preflight-app-3.0.1.jar;>preflight-app-3.0.1.jar -https://www.apache.org/dist/pdfbox/3.0.1/preflight-app-3.0.1.jar.asc;>ASC -https://www.apache.org/dist/pdfbox/3.0.1/preflight-app-3.0.1.jar.sha512;>SHA512 +https://www.apache.org/dyn/closer.lua/pdfbox/3.0.2/preflight-app-3.0.2.jar;>preflight-app-3.0.2.jar +https://www.apache.org/dist/pdfbox/3.0.2/preflight-app-3.0.2.jar.asc;>ASC +h
(pdfbox-docs) branch master updated: update website due to new release
This is an automated email from the ASF dual-hosted git repository. lehmi pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/pdfbox-docs.git The following commit(s) were added to refs/heads/master by this push: new cf8906d0 update website due to new release cf8906d0 is described below commit cf8906d03439fc3671ed3d1845348e7f3d23a48d Author: Andreas Lehmkühler AuthorDate: Thu Mar 14 20:08:37 2024 +0100 update website due to new release --- content/_posts/2024-03-14-pdfbox.3.0.2.md | 34 +++ content/doap_PDFBox.rdf | 7 +++ content/download.html | 72 +++ 3 files changed, 77 insertions(+), 36 deletions(-) diff --git a/content/_posts/2024-03-14-pdfbox.3.0.2.md b/content/_posts/2024-03-14-pdfbox.3.0.2.md new file mode 100644 index ..b1605289 --- /dev/null +++ b/content/_posts/2024-03-14-pdfbox.3.0.2.md @@ -0,0 +1,34 @@ +--- +license: Licensed to the Apache Software Foundation (ASF) under one + or more contributor license agreements. See the NOTICE file + distributed with this work for additional information + regarding copyright ownership. The ASF licenses this file + to you under the Apache License, Version 2.0 (the + "License"); you may not use this file except in compliance + with the License. You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, + software distributed under the License is distributed on an + "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + KIND, either express or implied. See the License for the + specific language governing permissions and limitations + under the License. + +layout: default +title: Apache PDFBox 3.0.2 released +date: 2024-03-14 00:00:00 +00:00 +categories: [release, news] +--- + +The Apache PDFBox community is pleased to announce the release of +Apache PDFBox version 3.0.2. It is available for download at: + +[https://pdfbox.apache.org/download.html](https://pdfbox.apache.org/download.html) + +See the [full release notes](https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12310760=12353972) for details about this release. + +The [Migration Guide](https://pdfbox.apache.org/3.0/migration.html) shall give users coming from +PDFBox 2.0.x an overview about things to look at when switching over. More details to come. + diff --git a/content/doap_PDFBox.rdf b/content/doap_PDFBox.rdf index 87b6af1a..d32f19dc 100644 --- a/content/doap_PDFBox.rdf +++ b/content/doap_PDFBox.rdf @@ -34,6 +34,13 @@ Java https://projects.apache.org/category/content; /> https://projects.apache.org/category/library; /> + + +Apache PDFBox +2024-03-14 +3.0.2 + + Apache PDFBox diff --git a/content/download.html b/content/download.html index da49eb10..2f36e56b 100644 --- a/content/download.html +++ b/content/download.html @@ -27,7 +27,7 @@ title: Download The Apache PDFBox community provides feature and bugfix releases. -Feature release for PDFBox 3.0.1 https://www.apache.org/dist/pdfbox/3.0.1/RELEASE-NOTES.txt;>3.0.1 (requires Java 8) +Feature release for PDFBox 3.0.2 https://www.apache.org/dist/pdfbox/3.0.2/RELEASE-NOTES.txt;>3.0.2 (requires Java 8) Feature release for PDFBox 2.0.x https://www.apache.org/dist/pdfbox/2.0.30/RELEASE-NOTES.txt;>2.0.30 (requires Java 6) Feature release of JBIG2 ImageIO plugin 3.0.x https://www.apache.org/dist/pdfbox/jbig2-imageio/3.0.4/RELEASE-NOTES.txt;>3.0.4 (requires Java 6) Previous releases @@ -51,71 +51,71 @@ title: Download -PDFBox3.0.1feature +PDFBox3.0.2feature Command line tools PDFBox standalone -https://www.apache.org/dyn/closer.lua/pdfbox/3.0.1/pdfbox-app-3.0.1.jar;>pdfbox-app-3.0.1.jar -https://www.apache.org/dist/pdfbox/3.0.1/pdfbox-app-3.0.1.jar.asc;>ASC -https://www.apache.org/dist/pdfbox/3.0.1/pdfbox-app-3.0.1.jar.sha512;>SHA512 +https://www.apache.org/dyn/closer.lua/pdfbox/3.0.2/pdfbox-app-3.0.2.jar;>pdfbox-app-3.0.2.jar +https://www.apache.org/dist/pdfbox/3.0.2/pdfbox-app-3.0.2.jar.asc;>ASC +https://www.apache.org/dist/pdfbox/3.0.2/pdfbox-app-3.0.2.jar.sha512;>SHA512 Debugger standalone -https://www.apache.org/dyn/closer.lua/pdfbox/3.0.1/debugger-app-3.0.1.jar;>debugger-app-3.0.1.jar -https://www.apache.org/dist/pdfbox/3.0.1/debugger-app-3.0.1.jar.asc;>ASC -https://www.apache.org/dist/pdfbox/3.0.1/debugger-app-3.0.1.jar.sha512;>SHA512 +https://www.apache.org/dyn/close
svn commit: r67952 - /release/pdfbox/3.0.1/
Author: lehmi Date: Thu Mar 14 20:34:03 2024 New Revision: 67952 Log: delete old 3.0.1 release Removed: release/pdfbox/3.0.1/
svn commit: r67951 - /dev/pdfbox/3.0.2/ /release/pdfbox/3.0.2/
Author: lehmi Date: Thu Mar 14 20:33:13 2024 New Revision: 67951 Log: release PDFBox 3.0.2 Added: release/pdfbox/3.0.2/ - copied from r67950, dev/pdfbox/3.0.2/ Removed: dev/pdfbox/3.0.2/
svn commit: r1916314 - /pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDCIDFontType2.java
Author: lehmi Date: Thu Mar 14 19:14:33 2024 New Revision: 1916314 URL: http://svn.apache.org/viewvc?rev=1916314=rev Log: PDFBOX-5785: omit in range check for OTF fonts when using identity as CIDToGIDMap Modified: pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDCIDFontType2.java Modified: pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDCIDFontType2.java URL: http://svn.apache.org/viewvc/pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDCIDFontType2.java?rev=1916314=1916313=1916314=diff == --- pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDCIDFontType2.java (original) +++ pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDCIDFontType2.java Thu Mar 14 19:14:33 2024 @@ -304,16 +304,14 @@ public class PDCIDFontType2 extends PDCI } else { -// "Identity" is the default CIDToGIDMap -if (cid < ttf.getNumberOfGlyphs()) +boolean isOTF = ttf instanceof OpenTypeFont; +// "Identity" is the default for CFF-based OpenTypeFonts +if (isOTF && ((OpenTypeFont) ttf).isPostScript()) { return cid; } -else -{ -// out of range CIDs map to GID 0 -return 0; -} +// "Identity" is the default for TrueTypeFonts if the CID is within the range +return !isOTF && cid < ttf.getNumberOfGlyphs() ? cid : 0; } } }
svn commit: r1916290 - /pdfbox/branches/3.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDCIDFontType2.java
Author: lehmi Date: Thu Mar 14 07:35:56 2024 New Revision: 1916290 URL: http://svn.apache.org/viewvc?rev=1916290=rev Log: PDFBOX-5785: omit in range check for OTF fonts when using identity as CIDToGIDMap Modified: pdfbox/branches/3.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDCIDFontType2.java Modified: pdfbox/branches/3.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDCIDFontType2.java URL: http://svn.apache.org/viewvc/pdfbox/branches/3.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDCIDFontType2.java?rev=1916290=1916289=1916290=diff == --- pdfbox/branches/3.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDCIDFontType2.java (original) +++ pdfbox/branches/3.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDCIDFontType2.java Thu Mar 14 07:35:56 2024 @@ -319,16 +319,13 @@ public class PDCIDFontType2 extends PDCI } else { -// "Identity" is the default CIDToGIDMap -if (cid < ttf.getNumberOfGlyphs()) +// "Identity" is the default for CFF-based OpenTypeFonts +if (otf != null && otf.isPostScript()) { return cid; } -else -{ -// out of range CIDs map to GID 0 -return 0; -} +// "Identity" is the default for TrueTypeFonts if the CID is within the range +return otf == null && cid < ttf.getNumberOfGlyphs() ? cid : 0; } } }
svn commit: r1916289 - /pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDCIDFontType2.java
Author: lehmi Date: Thu Mar 14 07:28:38 2024 New Revision: 1916289 URL: http://svn.apache.org/viewvc?rev=1916289=rev Log: PDFBOX-5785: omit in range check for OTF fonts when using identity as CIDToGIDMap Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDCIDFontType2.java Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDCIDFontType2.java URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDCIDFontType2.java?rev=1916289=1916288=1916289=diff == --- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDCIDFontType2.java (original) +++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDCIDFontType2.java Thu Mar 14 07:28:38 2024 @@ -321,16 +321,13 @@ public class PDCIDFontType2 extends PDCI } else { -// "Identity" is the default CIDToGIDMap -if (cid < ttf.getNumberOfGlyphs()) +// "Identity" is the default for CFF-based OpenTypeFonts +if (otf != null && otf.isPostScript()) { return cid; } -else -{ -// out of range CIDs map to GID 0 -return 0; -} +// "Identity" is the default for TrueTypeFonts if the CID is within the range +return otf == null && cid < ttf.getNumberOfGlyphs() ? cid : 0; } } }
svn commit: r67886 - /dev/pdfbox/3.0.2/
Author: lehmi Date: Mon Mar 11 19:21:54 2024 New Revision: 67886 Log: provide 3.0.2 candidate Added: dev/pdfbox/3.0.2/ dev/pdfbox/3.0.2/RELEASE-NOTES.txt (with props) dev/pdfbox/3.0.2/debugger-app-3.0.2.jar (with props) dev/pdfbox/3.0.2/debugger-app-3.0.2.jar.asc (with props) dev/pdfbox/3.0.2/debugger-app-3.0.2.jar.sha512 dev/pdfbox/3.0.2/fontbox-3.0.2.jar (with props) dev/pdfbox/3.0.2/fontbox-3.0.2.jar.asc (with props) dev/pdfbox/3.0.2/fontbox-3.0.2.jar.sha512 dev/pdfbox/3.0.2/pdfbox-3.0.2-src.zip (with props) dev/pdfbox/3.0.2/pdfbox-3.0.2-src.zip.asc (with props) dev/pdfbox/3.0.2/pdfbox-3.0.2-src.zip.sha512 dev/pdfbox/3.0.2/pdfbox-3.0.2.jar (with props) dev/pdfbox/3.0.2/pdfbox-3.0.2.jar.asc (with props) dev/pdfbox/3.0.2/pdfbox-3.0.2.jar.sha512 dev/pdfbox/3.0.2/pdfbox-app-3.0.2.jar (with props) dev/pdfbox/3.0.2/pdfbox-app-3.0.2.jar.asc (with props) dev/pdfbox/3.0.2/pdfbox-app-3.0.2.jar.sha512 dev/pdfbox/3.0.2/pdfbox-debugger-3.0.2.jar (with props) dev/pdfbox/3.0.2/pdfbox-debugger-3.0.2.jar.asc (with props) dev/pdfbox/3.0.2/pdfbox-debugger-3.0.2.jar.sha512 dev/pdfbox/3.0.2/pdfbox-io-3.0.2.jar (with props) dev/pdfbox/3.0.2/pdfbox-io-3.0.2.jar.asc (with props) dev/pdfbox/3.0.2/pdfbox-io-3.0.2.jar.sha512 dev/pdfbox/3.0.2/pdfbox-tools-3.0.2.jar (with props) dev/pdfbox/3.0.2/pdfbox-tools-3.0.2.jar.asc (with props) dev/pdfbox/3.0.2/pdfbox-tools-3.0.2.jar.sha512 dev/pdfbox/3.0.2/preflight-3.0.2.jar (with props) dev/pdfbox/3.0.2/preflight-3.0.2.jar.asc (with props) dev/pdfbox/3.0.2/preflight-3.0.2.jar.sha512 dev/pdfbox/3.0.2/preflight-app-3.0.2.jar (with props) dev/pdfbox/3.0.2/preflight-app-3.0.2.jar.asc (with props) dev/pdfbox/3.0.2/preflight-app-3.0.2.jar.sha512 dev/pdfbox/3.0.2/xmpbox-3.0.2.jar (with props) dev/pdfbox/3.0.2/xmpbox-3.0.2.jar.asc (with props) dev/pdfbox/3.0.2/xmpbox-3.0.2.jar.sha512 Added: dev/pdfbox/3.0.2/RELEASE-NOTES.txt == --- dev/pdfbox/3.0.2/RELEASE-NOTES.txt (added) +++ dev/pdfbox/3.0.2/RELEASE-NOTES.txt Mon Mar 11 19:21:54 2024 @@ -0,0 +1,107 @@ +Release Notes -- Apache PDFBox -- Version 3.0.2 + +Introduction + + +The Apache PDFBox library is an open source Java tool for working with PDF documents. + +This is an incremental bugfix release based on the earlier 3.0.1 release. It contains +a couple of fixes and small improvements. + +A migration guide is available at https://pdfbox.apache.org/3.0/migration.html. It is +still a work in progress and we are happy to include any valuable feedback from our +community. + +For more details on these changes and all the other fixes and improvements +included in this release, please refer to the following issues on the +PDFBox issue tracker at https://issues.apache.org/jira/browse/PDFBOX. + +Bug + +[PDFBOX-2725] - [PATCH] Split pdf lose accessibility tags +[PDFBOX-5375] - Allow creating of PDFXObjectImage without accessing to the image stream +[PDFBOX-5704] - char not rendered +[PDFBOX-5714] - PDFBox 3.0 regression: duplicate references in dictionary values +[PDFBOX-5715] - Lines vanish when printing on MacOS +[PDFBOX-5717] - NullPointerException calling saveIncrementalForExternalSigning +[PDFBOX-5721] - The embedded font DroidSansFallbackFull reports an error when parsing, and finally uses lastResortFont, resulting in garbled fonts. +[PDFBOX-5722] - Wrong scope for maven dependencies +[PDFBOX-5723] - COSName caches already cached hashCode +[PDFBOX-5724] - CharStringCommand.equals() does not conform to the contract of Object.equals +[PDFBOX-5727] - Font operation takes a long time with 3.0.1 +[PDFBOX-5728] - NullPointerException in TTFSubsetter.buildPostTable() +[PDFBOX-5730] - The expected SubstFormat for ExtensionSubstFormat1 subtable is 108 but should be 1 +[PDFBOX-5732] - Problem converting PDF to image (java.awt.color.CMMException: Can not access specified profile) +[PDFBOX-5733] - lookupType is to be replaced by extensionLookupType in type 7 lookup table +[PDFBOX-5735] - Set the default value for PDNonTerminalField +[PDFBOX-5737] - java.lang.ArrayIndexOutOfBoundsException Bug Report +[PDFBOX-5738] - Wrong colors in PDF since PDFBOX-5488 +[PDFBOX-5742] - Split result PDFs broken +[PDFBOX-5744] - EOFException while readMultipleSubstitutionSubtable() +[PDFBOX-5745] - EOFException while readSingleLookupSubTable() +[PDFBOX-5748] - Cannot get overlayPDF working on command line interface +[PDFBOX-5751] - Convert to image exception +[PDFBOX-5752] - Font errors after copying a page to another document +[PDFBOX-5754] - PDF conversion in this format is very slow. Is there any room for optimization? +[PDFBOX-5757] - streamCacheCreateFunction not passed to PDFParser +[PDFBOX-5758] - ExceptionInInitializerError when unmapping is not supported +[PDFBOX-5760] - NPE
svn commit: r1916239 - in /pdfbox/branches/3.0: app/pom.xml debugger-app/pom.xml debugger/pom.xml examples/pom.xml fontbox/pom.xml io/pom.xml pdfbox/pom.xml pom.xml preflight-app/pom.xml preflight/pom
Author: lehmi Date: Mon Mar 11 19:17:59 2024 New Revision: 1916239 URL: http://svn.apache.org/viewvc?rev=1916239=rev Log: [maven-release-plugin] prepare for next development iteration Modified: pdfbox/branches/3.0/app/pom.xml pdfbox/branches/3.0/debugger-app/pom.xml pdfbox/branches/3.0/debugger/pom.xml pdfbox/branches/3.0/examples/pom.xml pdfbox/branches/3.0/fontbox/pom.xml pdfbox/branches/3.0/io/pom.xml pdfbox/branches/3.0/pdfbox/pom.xml pdfbox/branches/3.0/pom.xml pdfbox/branches/3.0/preflight-app/pom.xml pdfbox/branches/3.0/preflight/pom.xml pdfbox/branches/3.0/release/pom.xml pdfbox/branches/3.0/tools/pom.xml pdfbox/branches/3.0/xmpbox/pom.xml Modified: pdfbox/branches/3.0/app/pom.xml URL: http://svn.apache.org/viewvc/pdfbox/branches/3.0/app/pom.xml?rev=1916239=1916238=1916239=diff == --- pdfbox/branches/3.0/app/pom.xml (original) +++ pdfbox/branches/3.0/app/pom.xml Mon Mar 11 19:17:59 2024 @@ -23,7 +23,7 @@ org.apache.pdfbox pdfbox-parent -3.0.2 +3.0.3-SNAPSHOT ../pom.xml Modified: pdfbox/branches/3.0/debugger-app/pom.xml URL: http://svn.apache.org/viewvc/pdfbox/branches/3.0/debugger-app/pom.xml?rev=1916239=1916238=1916239=diff == --- pdfbox/branches/3.0/debugger-app/pom.xml (original) +++ pdfbox/branches/3.0/debugger-app/pom.xml Mon Mar 11 19:17:59 2024 @@ -23,7 +23,7 @@ org.apache.pdfbox pdfbox-parent -3.0.2 +3.0.3-SNAPSHOT ../pom.xml Modified: pdfbox/branches/3.0/debugger/pom.xml URL: http://svn.apache.org/viewvc/pdfbox/branches/3.0/debugger/pom.xml?rev=1916239=1916238=1916239=diff == --- pdfbox/branches/3.0/debugger/pom.xml (original) +++ pdfbox/branches/3.0/debugger/pom.xml Mon Mar 11 19:17:59 2024 @@ -23,7 +23,7 @@ org.apache.pdfbox pdfbox-parent -3.0.2 +3.0.3-SNAPSHOT ../pom.xml Modified: pdfbox/branches/3.0/examples/pom.xml URL: http://svn.apache.org/viewvc/pdfbox/branches/3.0/examples/pom.xml?rev=1916239=1916238=1916239=diff == --- pdfbox/branches/3.0/examples/pom.xml (original) +++ pdfbox/branches/3.0/examples/pom.xml Mon Mar 11 19:17:59 2024 @@ -23,7 +23,7 @@ org.apache.pdfbox pdfbox-parent -3.0.2 +3.0.3-SNAPSHOT ../pom.xml Modified: pdfbox/branches/3.0/fontbox/pom.xml URL: http://svn.apache.org/viewvc/pdfbox/branches/3.0/fontbox/pom.xml?rev=1916239=1916238=1916239=diff == --- pdfbox/branches/3.0/fontbox/pom.xml (original) +++ pdfbox/branches/3.0/fontbox/pom.xml Mon Mar 11 19:17:59 2024 @@ -21,7 +21,7 @@ org.apache.pdfbox pdfbox-parent -3.0.2 +3.0.3-SNAPSHOT ../pom.xml Modified: pdfbox/branches/3.0/io/pom.xml URL: http://svn.apache.org/viewvc/pdfbox/branches/3.0/io/pom.xml?rev=1916239=1916238=1916239=diff == --- pdfbox/branches/3.0/io/pom.xml (original) +++ pdfbox/branches/3.0/io/pom.xml Mon Mar 11 19:17:59 2024 @@ -23,7 +23,7 @@ org.apache.pdfbox pdfbox-parent -3.0.2 +3.0.3-SNAPSHOT ../pom.xml Modified: pdfbox/branches/3.0/pdfbox/pom.xml URL: http://svn.apache.org/viewvc/pdfbox/branches/3.0/pdfbox/pom.xml?rev=1916239=1916238=1916239=diff == --- pdfbox/branches/3.0/pdfbox/pom.xml (original) +++ pdfbox/branches/3.0/pdfbox/pom.xml Mon Mar 11 19:17:59 2024 @@ -23,7 +23,7 @@ org.apache.pdfbox pdfbox-parent -3.0.2 +3.0.3-SNAPSHOT ../pom.xml Modified: pdfbox/branches/3.0/pom.xml URL: http://svn.apache.org/viewvc/pdfbox/branches/3.0/pom.xml?rev=1916239=1916238=1916239=diff == --- pdfbox/branches/3.0/pom.xml (original) +++ pdfbox/branches/3.0/pom.xml Mon Mar 11 19:17:59 2024 @@ -30,7 +30,7 @@ org.apache.pdfbox pdfbox-parent pom - 3.0.2 + 3.0.3-SNAPSHOT Apache PDFBox parent 2002 @@ -46,9 +46,9 @@ - scm:svn:https://svn.apache.org/repos/asf/pdfbox/tags/3.0.2 - scm:svn:https://svn.apache.org/repos/asf/pdfbox/tags/3.0.2 - https://svn.apache.org/viewvc/pdfbox/tags/3.0.2 + scm:svn:https://svn.apache.org/repos/asf/pdfbox/branches/3.0 + scm:svn:https://svn.apache.org/repos/asf/pdfbox/branches/3.0 + https://svn.apache.org/viewvc/pdfbox/branches/3.0 Modified: pdfbox/branches/3.0/preflight-app/pom.xml URL: http://svn.apache.org/viewvc/pdfbox/branches/3.0/preflight-app/pom.xml?rev=1916239=1916238
svn commit: r1916237 - in /pdfbox/branches/3.0: app/pom.xml debugger-app/pom.xml debugger/pom.xml examples/pom.xml fontbox/pom.xml io/pom.xml pdfbox/pom.xml pom.xml preflight-app/pom.xml preflight/pom
Author: lehmi Date: Mon Mar 11 19:17:55 2024 New Revision: 1916237 URL: http://svn.apache.org/viewvc?rev=1916237=rev Log: [maven-release-plugin] prepare release 3.0.2 Modified: pdfbox/branches/3.0/app/pom.xml pdfbox/branches/3.0/debugger-app/pom.xml pdfbox/branches/3.0/debugger/pom.xml pdfbox/branches/3.0/examples/pom.xml pdfbox/branches/3.0/fontbox/pom.xml pdfbox/branches/3.0/io/pom.xml pdfbox/branches/3.0/pdfbox/pom.xml pdfbox/branches/3.0/pom.xml pdfbox/branches/3.0/preflight-app/pom.xml pdfbox/branches/3.0/preflight/pom.xml pdfbox/branches/3.0/release/pom.xml pdfbox/branches/3.0/tools/pom.xml pdfbox/branches/3.0/xmpbox/pom.xml Modified: pdfbox/branches/3.0/app/pom.xml URL: http://svn.apache.org/viewvc/pdfbox/branches/3.0/app/pom.xml?rev=1916237=1916236=1916237=diff == --- pdfbox/branches/3.0/app/pom.xml (original) +++ pdfbox/branches/3.0/app/pom.xml Mon Mar 11 19:17:55 2024 @@ -23,7 +23,7 @@ org.apache.pdfbox pdfbox-parent -3.0.2-SNAPSHOT +3.0.2 ../pom.xml Modified: pdfbox/branches/3.0/debugger-app/pom.xml URL: http://svn.apache.org/viewvc/pdfbox/branches/3.0/debugger-app/pom.xml?rev=1916237=1916236=1916237=diff == --- pdfbox/branches/3.0/debugger-app/pom.xml (original) +++ pdfbox/branches/3.0/debugger-app/pom.xml Mon Mar 11 19:17:55 2024 @@ -23,7 +23,7 @@ org.apache.pdfbox pdfbox-parent -3.0.2-SNAPSHOT +3.0.2 ../pom.xml Modified: pdfbox/branches/3.0/debugger/pom.xml URL: http://svn.apache.org/viewvc/pdfbox/branches/3.0/debugger/pom.xml?rev=1916237=1916236=1916237=diff == --- pdfbox/branches/3.0/debugger/pom.xml (original) +++ pdfbox/branches/3.0/debugger/pom.xml Mon Mar 11 19:17:55 2024 @@ -23,7 +23,7 @@ org.apache.pdfbox pdfbox-parent -3.0.2-SNAPSHOT +3.0.2 ../pom.xml Modified: pdfbox/branches/3.0/examples/pom.xml URL: http://svn.apache.org/viewvc/pdfbox/branches/3.0/examples/pom.xml?rev=1916237=1916236=1916237=diff == --- pdfbox/branches/3.0/examples/pom.xml (original) +++ pdfbox/branches/3.0/examples/pom.xml Mon Mar 11 19:17:55 2024 @@ -23,7 +23,7 @@ org.apache.pdfbox pdfbox-parent -3.0.2-SNAPSHOT +3.0.2 ../pom.xml Modified: pdfbox/branches/3.0/fontbox/pom.xml URL: http://svn.apache.org/viewvc/pdfbox/branches/3.0/fontbox/pom.xml?rev=1916237=1916236=1916237=diff == --- pdfbox/branches/3.0/fontbox/pom.xml (original) +++ pdfbox/branches/3.0/fontbox/pom.xml Mon Mar 11 19:17:55 2024 @@ -21,7 +21,7 @@ org.apache.pdfbox pdfbox-parent -3.0.2-SNAPSHOT +3.0.2 ../pom.xml Modified: pdfbox/branches/3.0/io/pom.xml URL: http://svn.apache.org/viewvc/pdfbox/branches/3.0/io/pom.xml?rev=1916237=1916236=1916237=diff == --- pdfbox/branches/3.0/io/pom.xml (original) +++ pdfbox/branches/3.0/io/pom.xml Mon Mar 11 19:17:55 2024 @@ -23,7 +23,7 @@ org.apache.pdfbox pdfbox-parent -3.0.2-SNAPSHOT +3.0.2 ../pom.xml Modified: pdfbox/branches/3.0/pdfbox/pom.xml URL: http://svn.apache.org/viewvc/pdfbox/branches/3.0/pdfbox/pom.xml?rev=1916237=1916236=1916237=diff == --- pdfbox/branches/3.0/pdfbox/pom.xml (original) +++ pdfbox/branches/3.0/pdfbox/pom.xml Mon Mar 11 19:17:55 2024 @@ -23,7 +23,7 @@ org.apache.pdfbox pdfbox-parent -3.0.2-SNAPSHOT +3.0.2 ../pom.xml Modified: pdfbox/branches/3.0/pom.xml URL: http://svn.apache.org/viewvc/pdfbox/branches/3.0/pom.xml?rev=1916237=1916236=1916237=diff == --- pdfbox/branches/3.0/pom.xml (original) +++ pdfbox/branches/3.0/pom.xml Mon Mar 11 19:17:55 2024 @@ -30,7 +30,7 @@ org.apache.pdfbox pdfbox-parent pom - 3.0.2-SNAPSHOT + 3.0.2 Apache PDFBox parent 2002 @@ -46,9 +46,9 @@ - scm:svn:https://svn.apache.org/repos/asf/pdfbox/branches/3.0 - scm:svn:https://svn.apache.org/repos/asf/pdfbox/branches/3.0 - https://svn.apache.org/viewvc/pdfbox/branches/3.0 + scm:svn:https://svn.apache.org/repos/asf/pdfbox/tags/3.0.2 + scm:svn:https://svn.apache.org/repos/asf/pdfbox/tags/3.0.2 + https://svn.apache.org/viewvc/pdfbox/tags/3.0.2 Modified: pdfbox/branches/3.0/preflight-app/pom.xml URL: http://svn.apache.org/viewvc/pdfbox/branches/3.0/preflight-app/pom.xml?rev=1916237=1916236=1916237=diff
svn commit: r1916238 - /pdfbox/tags/3.0.2/
Author: lehmi Date: Mon Mar 11 19:17:56 2024 New Revision: 1916238 URL: http://svn.apache.org/viewvc?rev=1916238=rev Log: [maven-release-plugin] copy for tag 3.0.2 Added: pdfbox/tags/3.0.2/ (props changed) - copied from r1916237, pdfbox/branches/3.0/ Propchange: pdfbox/tags/3.0.2/ -- --- svn:ignore (added) +++ svn:ignore Mon Mar 11 19:17:56 2024 @@ -0,0 +1,2 @@ +.* +target Propchange: pdfbox/tags/3.0.2/ -- --- svn:mergeinfo (added) +++ svn:mergeinfo Mon Mar 11 19:17:56 2024 @@ -0,0 +1,4 @@ +/pdfbox/branches/2.0:1760418,1761484,1762133,1762140,1763609,1776107,1778755,1779822,1780783,1780789,1782684,1784450,1792784,1795704,1795712,1799081-1799082,1814046,1814285,1814459,1824914,1825811,1825820,1825912,1844477,1844516,1844519,1844567,1850577,1857953,1858696,1858698,1860825,1867724,1868399,1868402,1871957,1878273 +/pdfbox/branches/issue4569:1861285,1861586,1871048-1871049,1872016,1872020,1872024,1872074 +/pdfbox/branches/no-awt:1618517-1621410 +/pdfbox/no-awt:1618514-1618516
svn commit: r1916235 - /pdfbox/branches/3.0/RELEASE-NOTES.txt
Author: lehmi Date: Mon Mar 11 18:33:51 2024 New Revision: 1916235 URL: http://svn.apache.org/viewvc?rev=1916235=rev Log: prepare for 3.0.2 release Modified: pdfbox/branches/3.0/RELEASE-NOTES.txt Modified: pdfbox/branches/3.0/RELEASE-NOTES.txt URL: http://svn.apache.org/viewvc/pdfbox/branches/3.0/RELEASE-NOTES.txt?rev=1916235=1916234=1916235=diff == --- pdfbox/branches/3.0/RELEASE-NOTES.txt (original) +++ pdfbox/branches/3.0/RELEASE-NOTES.txt Mon Mar 11 18:33:51 2024 @@ -1,11 +1,11 @@ -Release Notes -- Apache PDFBox -- Version 3.0.1 +Release Notes -- Apache PDFBox -- Version 3.0.2 Introduction The Apache PDFBox library is an open source Java tool for working with PDF documents. -This is an incremental bugfix release based on the earlier 3.0.0 release. It contains +This is an incremental bugfix release based on the earlier 3.0.1 release. It contains a couple of fixes and small improvements. A migration guide is available at https://pdfbox.apache.org/3.0/migration.html. It is @@ -16,55 +16,60 @@ For more details on these changes and al included in this release, please refer to the following issues on the PDFBox issue tracker at https://issues.apache.org/jira/browse/PDFBOX. -Sub-task - -[PDFBOX-5663] - Implement "about" dialog - Bug -[PDFBOX-5350] - Regression unicode mapping in Korean document -[PDFBOX-5649] - NPE in DomXmpParser.parseLiDescription -[PDFBOX-5654] - Avoid NPE when processing CFF2 based fonts -[PDFBOX-5658] - IllegalArgumentException: Dimensions (width=458477041 height=26) are too large -[PDFBOX-5662] - Can not see checkbox check -[PDFBOX-5665] - NPE when converting pdf to image. -[PDFBOX-5666] - error encountered in splitting pdf using ver 3.0.0 -[PDFBOX-5668] - NullPointerException in XMPMetadata.getSchema() -[PDFBOX-5672] - PDFToImage might not correctly detect unsupported image formats -[PDFBOX-5673] - Refactor Stream operations and operations on collections -[PDFBOX-5681] - ConcurrentModificationException in getObjectsByType() in 3.x -[PDFBOX-5682] - Long/permanent hang in PDFBox 3.x -[PDFBOX-5684] - Font cache isn't effective on my machine, always rebuilds -[PDFBOX-5687] - PDFBox 3.0 OSGi bundle requires sun.java2d.cmm.kcms package -[PDFBOX-5689] - Many new warnings "newGlyph ... newValue: ... is trying to override the oldValue" after upgrade to V3.0.0 -[PDFBOX-5694] - PDF to Image conversion results in different converted image -[PDFBOX-5696] - COSStream lost, becomes a COSDictionary -[PDFBOX-5702] - Text in a certain font is lost when converting pdf to image -[PDFBOX-5706] - Incorrect colors in image from PDFs (DCTDecode) -[PDFBOX-5707] - Avoid NPE when accessing the elements of a COSArray -[PDFBOX-5712] - Stackoverflow in split -[PDFBOX-5713] - PfbParser fails to parse PFB font with multiple binary records. -[PDFBOX-5718] - java.lang.IllegalArgumentException: Provided dictionary is not of type 'COSName{OCG}' +[PDFBOX-2725] - [PATCH] Split pdf lose accessibility tags +[PDFBOX-5375] - Allow creating of PDFXObjectImage without accessing to the image stream +[PDFBOX-5704] - char not rendered +[PDFBOX-5714] - PDFBox 3.0 regression: duplicate references in dictionary values +[PDFBOX-5715] - Lines vanish when printing on MacOS +[PDFBOX-5717] - NullPointerException calling saveIncrementalForExternalSigning +[PDFBOX-5721] - The embedded font DroidSansFallbackFull reports an error when parsing, and finally uses lastResortFont, resulting in garbled fonts. +[PDFBOX-5722] - Wrong scope for maven dependencies +[PDFBOX-5723] - COSName caches already cached hashCode +[PDFBOX-5724] - CharStringCommand.equals() does not conform to the contract of Object.equals +[PDFBOX-5727] - Font operation takes a long time with 3.0.1 +[PDFBOX-5728] - NullPointerException in TTFSubsetter.buildPostTable() +[PDFBOX-5730] - The expected SubstFormat for ExtensionSubstFormat1 subtable is 108 but should be 1 +[PDFBOX-5732] - Problem converting PDF to image (java.awt.color.CMMException: Can not access specified profile) +[PDFBOX-5733] - lookupType is to be replaced by extensionLookupType in type 7 lookup table +[PDFBOX-5735] - Set the default value for PDNonTerminalField +[PDFBOX-5737] - java.lang.ArrayIndexOutOfBoundsException Bug Report +[PDFBOX-5738] - Wrong colors in PDF since PDFBOX-5488 +[PDFBOX-5742] - Split result PDFs broken +[PDFBOX-5744] - EOFException while readMultipleSubstitutionSubtable() +[PDFBOX-5745] - EOFException while readSingleLookupSubTable() +[PDFBOX-5748] - Cannot get overlayPDF working on command line interface +[PDFBOX-5751] - Convert to image exception +[PDFBOX-5752] - Font errors after copying a page to another document +[PDFBOX-5754] - PDF conversion in this format is very slow. Is there any room for optimization? +[PDFBOX-5757] - streamCacheCreateFunction not passed to PDFParser +[PDFBOX-5758] - ExceptionInInitializerError when unmapping is no
svn commit: r1916209 - in /pdfbox/trunk/fontbox/src: main/java/org/apache/fontbox/cff/ test/java/org/apache/fontbox/cff/
Author: lehmi Date: Sun Mar 10 10:41:32 2024 New Revision: 1916209 URL: http://svn.apache.org/viewvc?rev=1916209=rev Log: PDFBOX-5725: simply the implementation of CharStringCommand as proposed by Axel Howind Modified: pdfbox/trunk/fontbox/src/main/java/org/apache/fontbox/cff/CharStringCommand.java pdfbox/trunk/fontbox/src/main/java/org/apache/fontbox/cff/Type1CharStringParser.java pdfbox/trunk/fontbox/src/main/java/org/apache/fontbox/cff/Type2CharString.java pdfbox/trunk/fontbox/src/test/java/org/apache/fontbox/cff/CharStringCommandTest.java Modified: pdfbox/trunk/fontbox/src/main/java/org/apache/fontbox/cff/CharStringCommand.java URL: http://svn.apache.org/viewvc/pdfbox/trunk/fontbox/src/main/java/org/apache/fontbox/cff/CharStringCommand.java?rev=1916209=1916208=1916209=diff == --- pdfbox/trunk/fontbox/src/main/java/org/apache/fontbox/cff/CharStringCommand.java (original) +++ pdfbox/trunk/fontbox/src/main/java/org/apache/fontbox/cff/CharStringCommand.java Sun Mar 10 10:41:32 2024 @@ -16,193 +16,151 @@ */ package org.apache.fontbox.cff; -import java.util.EnumMap; -import java.util.HashMap; -import java.util.Map; -import java.util.Objects; +import java.util.Arrays; /** * This class represents a CharStringCommand. * * @author Villu Ruusmann */ -public class CharStringCommand +public enum CharStringCommand { +HSTEM(Type1KeyWord.HSTEM, Type2KeyWord.HSTEM, 1), +VSTEM(Type1KeyWord.VSTEM, Type2KeyWord.VSTEM, 3), +VMOVETO(Type1KeyWord.VMOVETO, Type2KeyWord.VMOVETO,4), +RLINETO(Type1KeyWord.RLINETO, Type2KeyWord.RLINETO,5), +HLINETO(Type1KeyWord.HLINETO, Type2KeyWord.HLINETO,6), +VLINETO(Type1KeyWord.VLINETO, Type2KeyWord.VLINETO,7), +RRCURVETO(Type1KeyWord.RRCURVETO, Type2KeyWord.RRCURVETO,8), +CLOSEPATH(Type1KeyWord.CLOSEPATH, null,9), +CALLSUBR(Type1KeyWord.CALLSUBR, Type2KeyWord.CALLSUBR,10), +RET(Type1KeyWord.RET, Type2KeyWord.RET,11), +ESCAPE(Type1KeyWord.ESCAPE, Type2KeyWord.ESCAPE,12), +HSBW(Type1KeyWord.HSBW, null,13), +ENDCHAR(Type1KeyWord.ENDCHAR, Type2KeyWord.ENDCHAR,14), +HSTEMHM(null, Type2KeyWord.HSTEMHM,18), +HINTMASK(null, Type2KeyWord.HINTMASK,19), +CNTRMASK(null, Type2KeyWord.CNTRMASK,20), +RMOVETO(Type1KeyWord.RMOVETO, Type2KeyWord.RMOVETO,21), +HMOVETO(Type1KeyWord.HMOVETO, Type2KeyWord.HMOVETO,22), +VSTEMHM(null, Type2KeyWord.VSTEMHM,23), +RCURVELINE(null, Type2KeyWord.RCURVELINE,24), +RLINECURVE(null, Type2KeyWord.RLINECURVE,25), +VVCURVETO(null, Type2KeyWord.VVCURVETO,26), +HHCURVETO(null, Type2KeyWord.HHCURVETO,27), +SHORTINT(null, Type2KeyWord.SHORTINT,28), +CALLGSUBR(null, Type2KeyWord.CALLGSUBR,29), +VHCURVETO(Type1KeyWord.VHCURVETO, Type2KeyWord.VHCURVETO,30), +HVCURVETO(Type1KeyWord.HVCURVETO, Type2KeyWord.HVCURVETO,31), +DOTSECTION(Type1KeyWord.DOTSECTION, null,192), +VSTEM3(Type1KeyWord.VSTEM3, null,193), +HSTEM3(Type1KeyWord.HSTEM3, null,194), +AND(null, Type2KeyWord.AND,195), +OR(null, Type2KeyWord.OR,196), +NOT(null, Type2KeyWord.NOT,197), +SEAC(Type1KeyWord.SEAC, null,198), +SBW(Type1KeyWord.SBW, null,199), +ABS(null, Type2KeyWord.ABS,201), +ADD(null, Type2KeyWord.ADD,202), +SUB(null, Type2KeyWord.SUB,203), +DIV(Type1KeyWord.DIV, Type2KeyWord.DIV,204), +NEG(null, Type2KeyWord.NEG,206), +EQ(null, Type2KeyWord.EQ,207), +CALLOTHERSUBR(Type1KeyWord.CALLOTHERSUBR, null,208), +POP(Type1KeyWord.POP, null,209), +DROP(null, Type2KeyWord.DROP,210), +PUT(null, Type2KeyWord.PUT,212), +GET(null, Type2KeyWord.GET,213), +IFELSE(null, Type2KeyWord.IFELSE,214), +RANDOM(null, Type2KeyWord.RANDOM,215), +MUL(null, Type2KeyWord.MUL,216), +SQRT(null, Type2KeyWord.SQRT,218), +DUP(null, Type2KeyWord.DUP,219), +EXCH(null, Type2KeyWord.EXCH,220), +INDEX(null, Type2KeyWord.INDEX,221), +ROLL(null, Type2KeyWord.ROLL,222), +SETCURRENTPOINT(Type1KeyWord.SETCURRENTPOINT, null,225), +HFLEX(null, Type2KeyWord.HFLEX,226), +FLEX(null, Type2KeyWord.FLEX,227), +HFLEX1(null, Type2KeyWord.HFLEX1,228), +FLEX1(null, Type2KeyWord.FLEX1,229), +UNKNOWN(null, null, 99); + +private static final CharStringCommand[] COMMANDS_BY_VALUE; + +static +{ +int max = Arrays.stream(CharStringCommand.values()).mapToInt(CharStringCommand::getValue) +.max().orElseThrow(); +COMMANDS_BY_VALUE = new CharStringCommand[max + 1]; +Arrays.stream(CharStringCommand.values()).forEach(c -> COMMANDS_BY_VALUE[c.getValue()] = c); +} + private final Type1KeyWord type1KeyWord; private final Type2KeyWord type2KeyWord; +private final int value; +private final String stringValue; -private static final Map CHAR_STRING_COMMANDS = createMap(); - -public static final CharStringCommand COMMAND_CLOSEP
svn commit: r1916199 - /pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/cos/COSInputStream.java
Author: lehmi Date: Sat Mar 9 13:41:35 2024 New Revision: 1916199 URL: http://svn.apache.org/viewvc?rev=1916199=rev Log: PDFBOX-5783: remove duplicate filter list entries instead of throwing an exception Modified: pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/cos/COSInputStream.java Modified: pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/cos/COSInputStream.java URL: http://svn.apache.org/viewvc/pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/cos/COSInputStream.java?rev=1916199=1916198=1916199=diff == --- pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/cos/COSInputStream.java (original) +++ pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/cos/COSInputStream.java Sat Mar 9 13:41:35 2024 @@ -28,6 +28,8 @@ import java.util.HashSet; import java.util.List; import java.util.Set; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; import org.apache.pdfbox.filter.DecodeOptions; import org.apache.pdfbox.filter.DecodeResult; import org.apache.pdfbox.filter.Filter; @@ -43,6 +45,8 @@ import org.apache.pdfbox.io.ScratchFile; */ public final class COSInputStream extends FilterInputStream { +private static final Log LOG = LogFactory.getLog(COSInputStream.class); + /** * Creates a new COSInputStream from an encoded input stream. * @@ -74,7 +78,17 @@ public final class COSInputStream extend Set filterSet = new HashSet(filters); if (filterSet.size() != filters.size()) { -throw new IOException("Duplicate"); +List reducedFilterList = new ArrayList(); +for (Filter filter : filters) +{ +if (!reducedFilterList.contains(filter)) +{ +reducedFilterList.add(filter); +} +} +// replace origin list with the reduced one +filters = reducedFilterList; +LOG.warn("Removed duplicated filter entries"); } } // apply filters
svn commit: r1916198 - /pdfbox/branches/3.0/pdfbox/src/main/java/org/apache/pdfbox/filter/Filter.java
Author: lehmi Date: Sat Mar 9 13:36:52 2024 New Revision: 1916198 URL: http://svn.apache.org/viewvc?rev=1916198=rev Log: PDFBOX-5783: remove duplicate filter list entries instead of throwing an exception Modified: pdfbox/branches/3.0/pdfbox/src/main/java/org/apache/pdfbox/filter/Filter.java Modified: pdfbox/branches/3.0/pdfbox/src/main/java/org/apache/pdfbox/filter/Filter.java URL: http://svn.apache.org/viewvc/pdfbox/branches/3.0/pdfbox/src/main/java/org/apache/pdfbox/filter/Filter.java?rev=1916198=1916197=1916198=diff == --- pdfbox/branches/3.0/pdfbox/src/main/java/org/apache/pdfbox/filter/Filter.java (original) +++ pdfbox/branches/3.0/pdfbox/src/main/java/org/apache/pdfbox/filter/Filter.java Sat Mar 9 13:36:52 2024 @@ -19,6 +19,7 @@ package org.apache.pdfbox.filter; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; +import java.util.ArrayList; import java.util.HashSet; import java.util.Iterator; import java.util.List; @@ -216,7 +217,17 @@ public abstract class Filter Set filterSet = new HashSet<>(filterList); if (filterSet.size() != filterList.size()) { -throw new IOException("Duplicate"); +List reducedFilterList = new ArrayList<>(); +for (Filter filter : filterList) +{ +if (!reducedFilterList.contains(filter)) +{ +reducedFilterList.add(filter); +} +} +// replace origin list with the reduced one +filterList = reducedFilterList; +LOG.warn("Removed duplicated filter entries"); } } InputStream input = encoded;
svn commit: r1916197 - /pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/filter/Filter.java
Author: lehmi Date: Sat Mar 9 13:36:31 2024 New Revision: 1916197 URL: http://svn.apache.org/viewvc?rev=1916197=rev Log: PDFBOX-5783: remove duplicate filter list entries instead of throwing an exception Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/filter/Filter.java Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/filter/Filter.java URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/filter/Filter.java?rev=1916197=1916196=1916197=diff == --- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/filter/Filter.java (original) +++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/filter/Filter.java Sat Mar 9 13:36:31 2024 @@ -19,6 +19,7 @@ package org.apache.pdfbox.filter; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; +import java.util.ArrayList; import java.util.HashSet; import java.util.Iterator; import java.util.List; @@ -216,7 +217,17 @@ public abstract class Filter Set filterSet = new HashSet<>(filterList); if (filterSet.size() != filterList.size()) { -throw new IOException("Duplicate"); +List reducedFilterList = new ArrayList<>(); +for (Filter filter : filterList) +{ +if (!reducedFilterList.contains(filter)) +{ +reducedFilterList.add(filter); +} +} +// replace origin list with the reduced one +filterList = reducedFilterList; +LOG.warn("Removed duplicated filter entries"); } } InputStream input = encoded;
(pdfbox-docs) branch asf-site updated: Site checkin for project Apache PDFBox Website
This is an automated email from the ASF dual-hosted git repository. lehmi pushed a commit to branch asf-site in repository https://gitbox.apache.org/repos/asf/pdfbox-docs.git The following commit(s) were added to refs/heads/asf-site by this push: new 63d88ada Site checkin for project Apache PDFBox Website 63d88ada is described below commit 63d88adac6d067f16ed816a8017810b44fdca0c9 Author: Andreas Lehmkühler AuthorDate: Tue Mar 5 08:13:47 2024 +0100 Site checkin for project Apache PDFBox Website --- content/3.0/commandline.html | 2 +- content/mailinglists.html| 5 + 2 files changed, 2 insertions(+), 5 deletions(-) diff --git a/content/3.0/commandline.html b/content/3.0/commandline.html index 7059f1c9..dfb268c8 100644 --- a/content/3.0/commandline.html +++ b/content/3.0/commandline.html @@ -385,7 +385,7 @@ PDFBox tools as Java applications. OverlayPDF This application will overlay one document with the content of another document -Usage: java -jar pdfbox-app-3.y.z.jar overlayPDF [OPTIONS] -i=infile -o=outfile +Usage: java -jar pdfbox-app-3.y.z.jar overlay [OPTIONS] -i=infile -o=outfile diff --git a/content/mailinglists.html b/content/mailinglists.html index 510ce858..61b68d51 100644 --- a/content/mailinglists.html +++ b/content/mailinglists.html @@ -164,6 +164,7 @@ on the Users Mailing List. the Developers Mailing List is the place to be. If you like to keep track of what's being changed inside the project, you can subscribe to the Commit Mailing List. +If you have any issues with subscribing to one of the lists use the Help link to get support. Please use the Users Mailing List if you are unsure which list to use @@ -174,7 +175,6 @@ to the Commit Mailing List. Unsubscribe Help Archive -MarkMail @@ -185,7 +185,6 @@ to the Commit Mailing List. mailto:users-unsubscr...@pdfbox.apache.org;>Unsubscribe mailto:users-h...@pdfbox.apache.org;>Help https://lists.apache.org/list.html?us...@pdfbox.apache.org;>Archive -http://pdfbox-users.markmail.org/;>MarkMail Developers @@ -194,7 +193,6 @@ to the Commit Mailing List. mailto:dev-unsubscr...@pdfbox.apache.org;>Unsubscribe mailto:dev-h...@pdfbox.apache.org;>Help https://lists.apache.org/list.html?d...@pdfbox.apache.org;>Archive -http://pdfbox-dev.markmail.org/;>MarkMail Commits List @@ -203,7 +201,6 @@ to the Commit Mailing List. mailto:commits-unsubscr...@pdfbox.apache.org;>Unsubscribe mailto:commits-h...@pdfbox.apache.org;>Help https://lists.apache.org/list.html?commits@pdfbox.apache.org;>Archive -http://pdfbox-commits.markmail.org/;>MarkMail
(pdfbox-docs) branch master updated: PDFBOX-3330: markmail doesn't exist anymore, clarify help link
This is an automated email from the ASF dual-hosted git repository. lehmi pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/pdfbox-docs.git The following commit(s) were added to refs/heads/master by this push: new e85c6b6b PDFBOX-3330: markmail doesn't exist anymore, clarify help link e85c6b6b is described below commit e85c6b6bd591cd91a86c160a28bbe6a18992deb7 Author: Andreas Lehmkühler AuthorDate: Tue Mar 5 08:12:53 2024 +0100 PDFBOX-3330: markmail doesn't exist anymore, clarify help link --- content/mailinglists.md | 12 +++- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/content/mailinglists.md b/content/mailinglists.md index cb36a32a..476df9f4 100644 --- a/content/mailinglists.md +++ b/content/mailinglists.md @@ -36,10 +36,12 @@ the **Developers Mailing List** is the place to be. If you like to keep track of what's being changed inside the project, you can subscribe to the **Commit Mailing List**. +If you have any issues with subscribing to one of the lists use the **Help** link to get support. + Please use the Users Mailing List if you are unsure which list to use -| Name | Address | Subscribe | Unsubscribe | Help | Archive | MarkMail | -| --- | --- | --- | ---| ---| --- | --- | -| Users | us...@pdfbox.apache.org | [Subscribe](mailto:users-subscr...@pdfbox.apache.org) | [Unsubscribe](mailto:users-unsubscr...@pdfbox.apache.org) | [Help](mailto:users-h...@pdfbox.apache.org) | [Archive](https://lists.apache.org/list.html?us...@pdfbox.apache.org) | [MarkMail](http://pdfbox-users.markmail.org/) | -| Developers | d...@pdfbox.apache.org | [Subscribe](mailto:dev-subscr...@pdfbox.apache.org) | [Unsubscribe](mailto:dev-unsubscr...@pdfbox.apache.org) | [Help](mailto:dev-h...@pdfbox.apache.org) | [Archive](https://lists.apache.org/list.html?d...@pdfbox.apache.org) | [MarkMail](http://pdfbox-dev.markmail.org/) | -| Commits List | commits@pdfbox.apache.org | [Subscribe](mailto:commits-subscr...@pdfbox.apache.org) | [Unsubscribe](mailto:commits-unsubscr...@pdfbox.apache.org) | [Help](mailto:commits-h...@pdfbox.apache.org) | [Archive](https://lists.apache.org/list.html?commits@pdfbox.apache.org) | [MarkMail](http://pdfbox-commits.markmail.org/) | +| Name | Address | Subscribe | Unsubscribe | Help | Archive | +| --- | --- | --- | ---| ---| --- | +| Users | us...@pdfbox.apache.org | [Subscribe](mailto:users-subscr...@pdfbox.apache.org) | [Unsubscribe](mailto:users-unsubscr...@pdfbox.apache.org) | [Help](mailto:users-h...@pdfbox.apache.org) | [Archive](https://lists.apache.org/list.html?us...@pdfbox.apache.org) | +| Developers | d...@pdfbox.apache.org | [Subscribe](mailto:dev-subscr...@pdfbox.apache.org) | [Unsubscribe](mailto:dev-unsubscr...@pdfbox.apache.org) | [Help](mailto:dev-h...@pdfbox.apache.org) | [Archive](https://lists.apache.org/list.html?d...@pdfbox.apache.org) | +| Commits List | commits@pdfbox.apache.org | [Subscribe](mailto:commits-subscr...@pdfbox.apache.org) | [Unsubscribe](mailto:commits-unsubscr...@pdfbox.apache.org) | [Help](mailto:commits-h...@pdfbox.apache.org) | [Archive](https://lists.apache.org/list.html?commits@pdfbox.apache.org) |
svn commit: r1916094 - /pdfbox/branches/3.0/pdfbox/src/main/java/org/apache/pdfbox/pdfwriter/COSWriter.java
Author: lehmi Date: Sun Mar 3 12:50:08 2024 New Revision: 1916094 URL: http://svn.apache.org/viewvc?rev=1916094=rev Log: PDFBOX-5714: sonar fix Modified: pdfbox/branches/3.0/pdfbox/src/main/java/org/apache/pdfbox/pdfwriter/COSWriter.java Modified: pdfbox/branches/3.0/pdfbox/src/main/java/org/apache/pdfbox/pdfwriter/COSWriter.java URL: http://svn.apache.org/viewvc/pdfbox/branches/3.0/pdfbox/src/main/java/org/apache/pdfbox/pdfwriter/COSWriter.java?rev=1916094=1916093=1916094=diff == --- pdfbox/branches/3.0/pdfbox/src/main/java/org/apache/pdfbox/pdfwriter/COSWriter.java (original) +++ pdfbox/branches/3.0/pdfbox/src/main/java/org/apache/pdfbox/pdfwriter/COSWriter.java Sun Mar 3 12:50:08 2024 @@ -183,8 +183,6 @@ public class COSWriter implements ICOSVi // the current object number private long number = 0; -// indicates whether existing object keys should be reused or not -private boolean reuseObjectNumbers = true; // maps the object to the keys generated in the writer // these are used for indirect references in other objects @@ -272,9 +270,6 @@ public class COSWriter implements ICOSVi // write to buffer instead of output setOutput(new ByteArrayOutputStream()); setStandardOutput(new COSStandardOutputStream(output, inputData.length())); -// don't reuse object numbers to avoid overlapping keys -// as inputData already contains a lot of objects -reuseObjectNumbers = false; // disable compressed object streams compressParameters = CompressParameters.NO_COMPRESSION; incrementalInput = inputData;
svn propchange: r1916093 - svn:log
Author: lehmi Revision: 1916093 Modified property: svn:log Modified: svn:log at Sun Mar 3 12:49:51 2024 -- --- svn:log (original) +++ svn:log Sun Mar 3 12:49:51 2024 @@ -0,0 +1 @@ +PDFBOX-5714: sonar fix
svn commit: r1916093 - /pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdfwriter/COSWriter.java
Author: lehmi Date: Sun Mar 3 12:48:02 2024 New Revision: 1916093 URL: http://svn.apache.org/viewvc?rev=1916093=rev Log: (empty) Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdfwriter/COSWriter.java Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdfwriter/COSWriter.java URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdfwriter/COSWriter.java?rev=1916093=1916092=1916093=diff == --- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdfwriter/COSWriter.java (original) +++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdfwriter/COSWriter.java Sun Mar 3 12:48:02 2024 @@ -182,8 +182,6 @@ public class COSWriter implements ICOSVi // the current object number private long number = 0; -// indicates whether existing object keys should be reused or not -private boolean reuseObjectNumbers = true; // maps the object to the keys generated in the writer // these are used for indirect references in other objects @@ -271,9 +269,6 @@ public class COSWriter implements ICOSVi // write to buffer instead of output setOutput(new ByteArrayOutputStream()); setStandardOutput(new COSStandardOutputStream(output, inputData.length())); -// don't reuse object numbers to avoid overlapping keys -// as inputData already contains a lot of objects -reuseObjectNumbers = false; // disable compressed object streams compressParameters = CompressParameters.NO_COMPRESSION; incrementalInput = inputData;
svn commit: r1916079 - /pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdfwriter/compress/COSWriterCompressionPool.java
Author: lehmi Date: Sat Mar 2 16:44:51 2024 New Revision: 1916079 URL: http://svn.apache.org/viewvc?rev=1916079=rev Log: PDFBOX-5752: eliminate overlapping object keys after importing some external content Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdfwriter/compress/COSWriterCompressionPool.java Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdfwriter/compress/COSWriterCompressionPool.java URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdfwriter/compress/COSWriterCompressionPool.java?rev=1916079=1916078=1916079=diff == --- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdfwriter/compress/COSWriterCompressionPool.java (original) +++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdfwriter/compress/COSWriterCompressionPool.java Sat Mar 2 16:44:51 2024 @@ -127,6 +127,12 @@ public class COSWriterCompressionPool { return current; } +// check if the key of the indirect object matches the key of the referenced object +// otherwise update the key +if (!actualKey.equals(key) && base instanceof COSObject) +{ +base.setKey(actualKey); +} topLevelObjects.add(actualKey); return current; } @@ -137,7 +143,12 @@ public class COSWriterCompressionPool { return current; } - +// check if the key of the indirect object matches the key of the referenced object +// otherwise update the key +if (!actualKey.equals(key) && base instanceof COSObject) +{ +base.setKey(actualKey); +} // Append it to an object stream. this.objectStreamObjects.add(actualKey); return current; @@ -194,7 +205,13 @@ public class COSWriterCompressionPool COSObject cosObject = (COSObject) value; if (cosObject.getKey() != null && objectPool.contains(cosObject.getKey())) { -continue; +// check if the stored object matches the referenced object otherwise replace the key with a new one +// there may differences if some imported content uses the same object numbers than the target pdf +if (objectPool.getObject(cosObject.getKey()).equals(cosObject.getObject())) +{ +continue; +} +cosObject.setKey(null); } if (cosObject.getObject() != null) {
svn commit: r1916065 - /pdfbox/branches/3.0/pdfbox/src/main/java/org/apache/pdfbox/pdfwriter/compress/COSWriterCompressionPool.java
Author: lehmi Date: Fri Mar 1 07:25:11 2024 New Revision: 1916065 URL: http://svn.apache.org/viewvc?rev=1916065=rev Log: PDFBOX-5752: eliminate overlapping object keys after importing some external content Modified: pdfbox/branches/3.0/pdfbox/src/main/java/org/apache/pdfbox/pdfwriter/compress/COSWriterCompressionPool.java Modified: pdfbox/branches/3.0/pdfbox/src/main/java/org/apache/pdfbox/pdfwriter/compress/COSWriterCompressionPool.java URL: http://svn.apache.org/viewvc/pdfbox/branches/3.0/pdfbox/src/main/java/org/apache/pdfbox/pdfwriter/compress/COSWriterCompressionPool.java?rev=1916065=1916064=1916065=diff == --- pdfbox/branches/3.0/pdfbox/src/main/java/org/apache/pdfbox/pdfwriter/compress/COSWriterCompressionPool.java (original) +++ pdfbox/branches/3.0/pdfbox/src/main/java/org/apache/pdfbox/pdfwriter/compress/COSWriterCompressionPool.java Fri Mar 1 07:25:11 2024 @@ -127,6 +127,12 @@ public class COSWriterCompressionPool { return current; } +// check if the key of the indirect object matches the key of the referenced object +// otherwise update the key +if (!actualKey.equals(key) && base instanceof COSObject) +{ +base.setKey(actualKey); +} topLevelObjects.add(actualKey); return current; } @@ -137,6 +143,12 @@ public class COSWriterCompressionPool { return current; } +// check if the key of the indirect object matches the key of the referenced object +// otherwise update the key +if (!actualKey.equals(key) && base instanceof COSObject) +{ +base.setKey(actualKey); +} // Append it to an object stream. this.objectStreamObjects.add(actualKey); @@ -194,7 +206,13 @@ public class COSWriterCompressionPool COSObject cosObject = (COSObject) value; if (cosObject.getKey() != null && objectPool.contains(cosObject.getKey())) { -continue; +// check if the stored object matches the referenced object otherwise replace the key with a new one +// there may differences if some imported content uses the same object numbers than the target pdf +if (objectPool.getObject(cosObject.getKey()).equals(cosObject.getObject())) +{ +continue; +} +cosObject.setKey(null); } if (cosObject.getObject() != null) {
svn commit: r1915941 - /pdfbox/branches/3.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/encoding/Encoding.java
Author: lehmi Date: Thu Feb 22 07:06:28 2024 New Revision: 1915941 URL: http://svn.apache.org/viewvc?rev=1915941=rev Log: PDFBOX-5660: simplify as proposed by DvonHolten, closes #186 Modified: pdfbox/branches/3.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/encoding/Encoding.java Modified: pdfbox/branches/3.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/encoding/Encoding.java URL: http://svn.apache.org/viewvc/pdfbox/branches/3.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/encoding/Encoding.java?rev=1915941=1915940=1915941=diff == --- pdfbox/branches/3.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/encoding/Encoding.java (original) +++ pdfbox/branches/3.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/encoding/Encoding.java Thu Feb 22 07:06:28 2024 @@ -165,12 +165,7 @@ public abstract class Encoding implement */ public String getName(int code) { - String name = codeToName.get(code); - if (name != null) - { - return name; - } - return ".notdef"; +return codeToName.getOrDefault(code, ".notdef"); } /**
svn commit: r1915940 - /pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/encoding/Encoding.java
Author: lehmi Date: Thu Feb 22 07:03:36 2024 New Revision: 1915940 URL: http://svn.apache.org/viewvc?rev=1915940=rev Log: PDFBOX-5660: simplify as proposed by DvonHolten Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/encoding/Encoding.java Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/encoding/Encoding.java URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/encoding/Encoding.java?rev=1915940=1915939=1915940=diff == --- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/encoding/Encoding.java (original) +++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/encoding/Encoding.java Thu Feb 22 07:03:36 2024 @@ -165,12 +165,7 @@ public abstract class Encoding implement */ public String getName(int code) { - String name = codeToName.get(code); - if (name != null) - { - return name; - } - return ".notdef"; +return codeToName.getOrDefault(code, ".notdef"); } /**
svn commit: r1915939 - /pdfbox/branches/3.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/encoding/MacOSRomanEncoding.java
Author: lehmi Date: Thu Feb 22 06:55:40 2024 New Revision: 1915939 URL: http://svn.apache.org/viewvc?rev=1915939=rev Log: PDFBOX-5773: add missing leading "0" of octal values as pointed out by DvonHolten Modified: pdfbox/branches/3.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/encoding/MacOSRomanEncoding.java Modified: pdfbox/branches/3.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/encoding/MacOSRomanEncoding.java URL: http://svn.apache.org/viewvc/pdfbox/branches/3.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/encoding/MacOSRomanEncoding.java?rev=1915939=1915938=1915939=diff == --- pdfbox/branches/3.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/encoding/MacOSRomanEncoding.java (original) +++ pdfbox/branches/3.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/encoding/MacOSRomanEncoding.java Thu Feb 22 06:55:40 2024 @@ -29,22 +29,22 @@ public class MacOSRomanEncoding extends * on top of {@link MacRomanEncoding}. */ private static final Object[][] MAC_OS_ROMAN_ENCODING_TABLE = { -{255, "notequal"}, -{260, "infinity"}, -{262, "lessequal"}, -{263, "greaterequal"}, -{266, "partialdiff"}, -{267, "summation"}, -{270, "product"}, -{271, "pi"}, -{272, "integral"}, -{275, "Omega"}, -{303, "radical"}, -{305, "approxequal"}, -{306, "Delta"}, -{327, "lozenge"}, -{333, "Euro"}, -{360, "apple"} +{ 0255, "notequal" }, // +{ 0260, "infinity" }, // +{ 0262, "lessequal" }, // +{ 0263, "greaterequal" }, // +{ 0266, "partialdiff" }, // +{ 0267, "summation" }, // +{ 0270, "product" }, // +{ 0271, "pi" }, // +{ 0272, "integral" }, // +{ 0275, "Omega" }, // +{ 0303, "radical" }, // +{ 0305, "approxequal" }, // +{ 0306, "Delta" }, // +{ 0327, "lozenge" }, // +{ 0333, "Euro" }, // +{ 0360, "apple" } }; /**
svn commit: r1915938 - /pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/encoding/MacOSRomanEncoding.java
Author: lehmi Date: Thu Feb 22 06:55:23 2024 New Revision: 1915938 URL: http://svn.apache.org/viewvc?rev=1915938=rev Log: PDFBOX-5773: add missing leading "0" of octal values as pointed out by DvonHolten Modified: pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/encoding/MacOSRomanEncoding.java Modified: pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/encoding/MacOSRomanEncoding.java URL: http://svn.apache.org/viewvc/pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/encoding/MacOSRomanEncoding.java?rev=1915938=1915937=1915938=diff == --- pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/encoding/MacOSRomanEncoding.java (original) +++ pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/encoding/MacOSRomanEncoding.java Thu Feb 22 06:55:23 2024 @@ -29,22 +29,22 @@ public class MacOSRomanEncoding extends * on top of {@link MacRomanEncoding}. */ private static final Object[][] MAC_OS_ROMAN_ENCODING_TABLE = { -{255, "notequal"}, -{260, "infinity"}, -{262, "lessequal"}, -{263, "greaterequal"}, -{266, "partialdiff"}, -{267, "summation"}, -{270, "product"}, -{271, "pi"}, -{272, "integral"}, -{275, "Omega"}, -{303, "radical"}, -{305, "approxequal"}, -{306, "Delta"}, -{327, "lozenge"}, -{333, "Euro"}, -{360, "apple"} +{ 0255, "notequal" }, // +{ 0260, "infinity" }, // +{ 0262, "lessequal" }, // +{ 0263, "greaterequal" }, // +{ 0266, "partialdiff" }, // +{ 0267, "summation" }, // +{ 0270, "product" }, // +{ 0271, "pi" }, // +{ 0272, "integral" }, // +{ 0275, "Omega" }, // +{ 0303, "radical" }, // +{ 0305, "approxequal" }, // +{ 0306, "Delta" }, // +{ 0327, "lozenge" }, // +{ 0333, "Euro" }, // +{ 0360, "apple" } }; /**
svn commit: r1915937 - /pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/encoding/MacOSRomanEncoding.java
Author: lehmi Date: Thu Feb 22 06:55:10 2024 New Revision: 1915937 URL: http://svn.apache.org/viewvc?rev=1915937=rev Log: PDFBOX-5773: add missing leading "0" of octal values as pointed out by DvonHolten Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/encoding/MacOSRomanEncoding.java Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/encoding/MacOSRomanEncoding.java URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/encoding/MacOSRomanEncoding.java?rev=1915937=1915936=1915937=diff == --- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/encoding/MacOSRomanEncoding.java (original) +++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/encoding/MacOSRomanEncoding.java Thu Feb 22 06:55:10 2024 @@ -29,22 +29,22 @@ public class MacOSRomanEncoding extends * on top of {@link MacRomanEncoding}. */ private static final Object[][] MAC_OS_ROMAN_ENCODING_TABLE = { -{255, "notequal"}, -{260, "infinity"}, -{262, "lessequal"}, -{263, "greaterequal"}, -{266, "partialdiff"}, -{267, "summation"}, -{270, "product"}, -{271, "pi"}, -{272, "integral"}, -{275, "Omega"}, -{303, "radical"}, -{305, "approxequal"}, -{306, "Delta"}, -{327, "lozenge"}, -{333, "Euro"}, -{360, "apple"} +{ 0255, "notequal" }, // +{ 0260, "infinity" }, // +{ 0262, "lessequal" }, // +{ 0263, "greaterequal" }, // +{ 0266, "partialdiff" }, // +{ 0267, "summation" }, // +{ 0270, "product" }, // +{ 0271, "pi" }, // +{ 0272, "integral" }, // +{ 0275, "Omega" }, // +{ 0303, "radical" }, // +{ 0305, "approxequal" }, // +{ 0306, "Delta" }, // +{ 0327, "lozenge" }, // +{ 0333, "Euro" }, // +{ 0360, "apple" } }; /**
svn commit: r1915737 - /pdfbox/branches/3.0/pdfbox/src/main/java/org/apache/pdfbox/pdfwriter/COSWriter.java
Author: lehmi Date: Mon Feb 12 07:39:34 2024 New Revision: 1915737 URL: http://svn.apache.org/viewvc?rev=1915737=rev Log: PDFBOX-5660: close input stream Modified: pdfbox/branches/3.0/pdfbox/src/main/java/org/apache/pdfbox/pdfwriter/COSWriter.java Modified: pdfbox/branches/3.0/pdfbox/src/main/java/org/apache/pdfbox/pdfwriter/COSWriter.java URL: http://svn.apache.org/viewvc/pdfbox/branches/3.0/pdfbox/src/main/java/org/apache/pdfbox/pdfwriter/COSWriter.java?rev=1915737=1915736=1915737=diff == --- pdfbox/branches/3.0/pdfbox/src/main/java/org/apache/pdfbox/pdfwriter/COSWriter.java (original) +++ pdfbox/branches/3.0/pdfbox/src/main/java/org/apache/pdfbox/pdfwriter/COSWriter.java Mon Feb 12 07:39:34 2024 @@ -860,9 +860,12 @@ public class COSWriter implements ICOSVi private void doWriteIncrement() throws IOException { // write existing PDF -IOUtils.copy(new RandomAccessInputStream(incrementalInput), incrementalOutput); -// write the actual incremental update -incrementalOutput.write(((ByteArrayOutputStream) output).toByteArray()); +try (RandomAccessInputStream input = new RandomAccessInputStream(incrementalInput)) +{ +IOUtils.copy(input, incrementalOutput); +// write the actual incremental update +incrementalOutput.write(((ByteArrayOutputStream) output).toByteArray()); +} } private void doWriteSignature() throws IOException
svn commit: r1915738 - /pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdfwriter/COSWriter.java
Author: lehmi Date: Mon Feb 12 07:39:43 2024 New Revision: 1915738 URL: http://svn.apache.org/viewvc?rev=1915738=rev Log: PDFBOX-5660: close input stream Modified: pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdfwriter/COSWriter.java Modified: pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdfwriter/COSWriter.java URL: http://svn.apache.org/viewvc/pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdfwriter/COSWriter.java?rev=1915738=1915737=1915738=diff == --- pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdfwriter/COSWriter.java (original) +++ pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdfwriter/COSWriter.java Mon Feb 12 07:39:43 2024 @@ -736,7 +736,9 @@ public class COSWriter implements ICOSVi private void doWriteIncrement() throws IOException { // write existing PDF -IOUtils.copy(new RandomAccessInputStream(incrementalInput), incrementalOutput); +RandomAccessInputStream input = new RandomAccessInputStream(incrementalInput); +IOUtils.copy(input, incrementalOutput); +input.close(); // write the actual incremental update incrementalOutput.write(((ByteArrayOutputStream) output).toByteArray()); }
svn commit: r1915736 - /pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdfwriter/COSWriter.java
Author: lehmi Date: Mon Feb 12 07:39:24 2024 New Revision: 1915736 URL: http://svn.apache.org/viewvc?rev=1915736=rev Log: PDFBOX-5660: close input stream Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdfwriter/COSWriter.java Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdfwriter/COSWriter.java URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdfwriter/COSWriter.java?rev=1915736=1915735=1915736=diff == --- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdfwriter/COSWriter.java (original) +++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdfwriter/COSWriter.java Mon Feb 12 07:39:24 2024 @@ -859,10 +859,12 @@ public class COSWriter implements ICOSVi private void doWriteIncrement() throws IOException { // write existing PDF -InputStream input = new RandomAccessInputStream(incrementalInput); -input.transferTo(incrementalOutput); -// write the actual incremental update -incrementalOutput.write(((ByteArrayOutputStream) output).toByteArray()); +try (InputStream input = new RandomAccessInputStream(incrementalInput)) +{ +input.transferTo(incrementalOutput); +// write the actual incremental update +incrementalOutput.write(((ByteArrayOutputStream) output).toByteArray()); +} } private void doWriteSignature() throws IOException
svn commit: r1915735 - /pdfbox/branches/3.0/pdfbox/src/main/java/org/apache/pdfbox/pdfwriter/COSWriter.java
Author: lehmi Date: Mon Feb 12 07:25:43 2024 New Revision: 1915735 URL: http://svn.apache.org/viewvc?rev=1915735=rev Log: PDFBOX-5714: fix key replacement, avoid NPE Modified: pdfbox/branches/3.0/pdfbox/src/main/java/org/apache/pdfbox/pdfwriter/COSWriter.java Modified: pdfbox/branches/3.0/pdfbox/src/main/java/org/apache/pdfbox/pdfwriter/COSWriter.java URL: http://svn.apache.org/viewvc/pdfbox/branches/3.0/pdfbox/src/main/java/org/apache/pdfbox/pdfwriter/COSWriter.java?rev=1915735=1915734=1915735=diff == --- pdfbox/branches/3.0/pdfbox/src/main/java/org/apache/pdfbox/pdfwriter/COSWriter.java (original) +++ pdfbox/branches/3.0/pdfbox/src/main/java/org/apache/pdfbox/pdfwriter/COSWriter.java Mon Feb 12 07:25:43 2024 @@ -1070,39 +1070,37 @@ public class COSWriter implements ICOSVi */ private COSObjectKey getObjectKey( COSBase obj ) { -COSBase actual = obj; -if( actual instanceof COSObject ) +COSObjectKey key = obj.getKey(); +COSBase actual; +if (obj instanceof COSObject) { actual = ((COSObject) obj).getObject(); -if (reuseObjectNumbers) +if (actual == null) { -COSObjectKey key = obj.getKey(); -if (key != null) -{ -COSObjectKey actualKey = actual != null ? actual.getKey() : null; -// check if the key of the referenced object and the indirect object is the same -if (actualKey != null && !key.equals(actualKey)) -{ -// update the object key of the indirect object -key = actualKey; -obj.setKey(key); -} -objectKeys.put(obj, key); -return key; -} +objectKeys.put(obj, key); +return key; } } -// PDFBOX-4540: because objectKeys is accessible from outside, it is possible -// that a COSObject obj is already in the objectKeys map. -COSObjectKey newKey = objectKeys.computeIfAbsent(actual, +else +{ +actual = obj; +} +COSObjectKey actualKey = objectKeys.computeIfAbsent(actual, k -> new COSObjectKey(++number, 0)); -COSObjectKey actualKey = actual.getKey(); -// if the returned key is new update the existing key of the given object -if (actualKey != null && !actualKey.equals(newKey)) +// check if the returned key and the origin key of the given object are the same +if (key == null || (actualKey != null && !key.equals(actualKey))) { -actual.setKey(newKey); +// update the object key given object/referenced object +key = actualKey; +actual.setKey(actualKey); +if (obj instanceof COSObject) +{ +// update the object key of the indirect object +obj.setKey(key); +objectKeys.put(obj, key); +} } -return newKey; +return key; } @Override
svn commit: r1915734 - /pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdfwriter/COSWriter.java
Author: lehmi Date: Mon Feb 12 07:18:50 2024 New Revision: 1915734 URL: http://svn.apache.org/viewvc?rev=1915734=rev Log: PDFBOX-5714: remove System.out Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdfwriter/COSWriter.java Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdfwriter/COSWriter.java URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdfwriter/COSWriter.java?rev=1915734=1915733=1915734=diff == --- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdfwriter/COSWriter.java (original) +++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdfwriter/COSWriter.java Mon Feb 12 07:18:50 2024 @@ -1091,10 +1091,6 @@ public class COSWriter implements ICOSVi // check if the returned key and the origin key of the given object are the same if (key == null || (actualKey != null && !key.equals(actualKey))) { -if (key != null) -System.out.println("key fixed: " + key + " -> " + actualKey); -else -System.out.println("key initialized: " + actualKey); // update the object key given object/referenced object key = actualKey; actual.setKey(actualKey);
svn commit: r1915733 - /pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdfwriter/COSWriter.java
Author: lehmi Date: Mon Feb 12 07:17:44 2024 New Revision: 1915733 URL: http://svn.apache.org/viewvc?rev=1915733=rev Log: PDFBOX-5714: fix key replacement, avoid NPE Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdfwriter/COSWriter.java Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdfwriter/COSWriter.java URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdfwriter/COSWriter.java?rev=1915733=1915732=1915733=diff == --- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdfwriter/COSWriter.java (original) +++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdfwriter/COSWriter.java Mon Feb 12 07:17:44 2024 @@ -1071,39 +1071,41 @@ public class COSWriter implements ICOSVi */ private COSObjectKey getObjectKey( COSBase obj ) { -COSBase actual = obj; -if( actual instanceof COSObject ) +COSObjectKey key = obj.getKey(); +COSBase actual; +if (obj instanceof COSObject) { actual = ((COSObject) obj).getObject(); -if (reuseObjectNumbers) +if (actual == null) { -COSObjectKey key = obj.getKey(); -if (key != null) -{ -COSObjectKey actualKey = actual != null ? actual.getKey() : null; -// check if the key of the referenced object and the indirect object is the same -if (actualKey != null && !key.equals(actualKey)) -{ -// update the object key of the indirect object -key = actualKey; -obj.setKey(key); -} -objectKeys.put(obj, key); -return key; -} +objectKeys.put(obj, key); +return key; } } -// PDFBOX-4540: because objectKeys is accessible from outside, it is possible -// that a COSObject obj is already in the objectKeys map. -COSObjectKey newKey = objectKeys.computeIfAbsent(actual, +else +{ +actual = obj; +} +COSObjectKey actualKey = objectKeys.computeIfAbsent(actual, k -> new COSObjectKey(++number, 0)); -COSObjectKey actualKey = actual.getKey(); -// if the returned key is new update the existing key of the given object -if (actualKey != null && !actualKey.equals(newKey)) +// check if the returned key and the origin key of the given object are the same +if (key == null || (actualKey != null && !key.equals(actualKey))) { -actual.setKey(newKey); +if (key != null) +System.out.println("key fixed: " + key + " -> " + actualKey); +else +System.out.println("key initialized: " + actualKey); +// update the object key given object/referenced object +key = actualKey; +actual.setKey(actualKey); +if (obj instanceof COSObject) +{ +// update the object key of the indirect object +obj.setKey(key); +objectKeys.put(obj, key); +} } -return newKey; +return key; } @Override
svn commit: r1915676 - in /pdfbox/branches/3.0/io/src: main/java/org/apache/pdfbox/io/RandomAccessReadBuffer.java test/java/org/apache/pdfbox/io/RandomAccessReadBufferTest.java
Author: lehmi Date: Fri Feb 9 06:45:03 2024 New Revision: 1915676 URL: http://svn.apache.org/viewvc?rev=1915676=rev Log: PDFBOX-5764: use limit instead of capacity to initialize the chunksize as proposed by David Klika Modified: pdfbox/branches/3.0/io/src/main/java/org/apache/pdfbox/io/RandomAccessReadBuffer.java pdfbox/branches/3.0/io/src/test/java/org/apache/pdfbox/io/RandomAccessReadBufferTest.java Modified: pdfbox/branches/3.0/io/src/main/java/org/apache/pdfbox/io/RandomAccessReadBuffer.java URL: http://svn.apache.org/viewvc/pdfbox/branches/3.0/io/src/main/java/org/apache/pdfbox/io/RandomAccessReadBuffer.java?rev=1915676=1915675=1915676=diff == --- pdfbox/branches/3.0/io/src/main/java/org/apache/pdfbox/io/RandomAccessReadBuffer.java (original) +++ pdfbox/branches/3.0/io/src/main/java/org/apache/pdfbox/io/RandomAccessReadBuffer.java Fri Feb 9 06:45:03 2024 @@ -90,7 +90,7 @@ public class RandomAccessReadBuffer impl */ public RandomAccessReadBuffer(ByteBuffer input) { -chunkSize = input.capacity(); +chunkSize = input.limit(); size = chunkSize; currentBuffer = input; bufferList = new ArrayList<>(1); Modified: pdfbox/branches/3.0/io/src/test/java/org/apache/pdfbox/io/RandomAccessReadBufferTest.java URL: http://svn.apache.org/viewvc/pdfbox/branches/3.0/io/src/test/java/org/apache/pdfbox/io/RandomAccessReadBufferTest.java?rev=1915676=1915675=1915676=diff == --- pdfbox/branches/3.0/io/src/test/java/org/apache/pdfbox/io/RandomAccessReadBufferTest.java (original) +++ pdfbox/branches/3.0/io/src/test/java/org/apache/pdfbox/io/RandomAccessReadBufferTest.java Fri Feb 9 06:45:03 2024 @@ -28,7 +28,7 @@ import java.io.OutputStream; import java.net.URI; import java.net.URISyntaxException; - +import java.nio.ByteBuffer; import java.nio.file.Files; import java.nio.file.Path; @@ -256,4 +256,24 @@ class RandomAccessReadBufferTest } } +/** + * PDFBOX-5764: constructor has to use the limit of the given buffer as chunksize instead of the capacity. + * + * @throws IOException + */ +@Test +void testPDFBOX5764() throws IOException +{ +int bufferSize = 4096; +int limit = 2048; +ByteBuffer buffer = ByteBuffer.wrap(new byte[bufferSize]); +buffer.limit(limit); +try (RandomAccessRead rar = new RandomAccessReadBuffer(buffer)) +{ +byte[] buf = new byte[bufferSize]; +int bytesRead = rar.read(buf); +assertEquals(limit, bytesRead); +} +} + }
svn commit: r1915675 - in /pdfbox/trunk/io/src: main/java/org/apache/pdfbox/io/RandomAccessReadBuffer.java test/java/org/apache/pdfbox/io/RandomAccessReadBufferTest.java
Author: lehmi Date: Fri Feb 9 06:44:43 2024 New Revision: 1915675 URL: http://svn.apache.org/viewvc?rev=1915675=rev Log: PDFBOX-5764: use limit instead of capacity to initialize the chunksize as proposed by David Klika Modified: pdfbox/trunk/io/src/main/java/org/apache/pdfbox/io/RandomAccessReadBuffer.java pdfbox/trunk/io/src/test/java/org/apache/pdfbox/io/RandomAccessReadBufferTest.java Modified: pdfbox/trunk/io/src/main/java/org/apache/pdfbox/io/RandomAccessReadBuffer.java URL: http://svn.apache.org/viewvc/pdfbox/trunk/io/src/main/java/org/apache/pdfbox/io/RandomAccessReadBuffer.java?rev=1915675=1915674=1915675=diff == --- pdfbox/trunk/io/src/main/java/org/apache/pdfbox/io/RandomAccessReadBuffer.java (original) +++ pdfbox/trunk/io/src/main/java/org/apache/pdfbox/io/RandomAccessReadBuffer.java Fri Feb 9 06:44:43 2024 @@ -90,7 +90,7 @@ public class RandomAccessReadBuffer impl */ public RandomAccessReadBuffer(ByteBuffer input) { -chunkSize = input.capacity(); +chunkSize = input.limit(); size = chunkSize; currentBuffer = input; bufferList = new ArrayList<>(1); Modified: pdfbox/trunk/io/src/test/java/org/apache/pdfbox/io/RandomAccessReadBufferTest.java URL: http://svn.apache.org/viewvc/pdfbox/trunk/io/src/test/java/org/apache/pdfbox/io/RandomAccessReadBufferTest.java?rev=1915675=1915674=1915675=diff == --- pdfbox/trunk/io/src/test/java/org/apache/pdfbox/io/RandomAccessReadBufferTest.java (original) +++ pdfbox/trunk/io/src/test/java/org/apache/pdfbox/io/RandomAccessReadBufferTest.java Fri Feb 9 06:44:43 2024 @@ -28,7 +28,7 @@ import java.io.OutputStream; import java.net.URI; import java.net.URISyntaxException; - +import java.nio.ByteBuffer; import java.nio.file.Files; import java.nio.file.Path; @@ -256,4 +256,24 @@ class RandomAccessReadBufferTest } } +/** + * PDFBOX-5764: constructor has to use the limit of the given buffer as chunksize instead of the capacity. + * + * @throws IOException + */ +@Test +void testPDFBOX5764() throws IOException +{ +int bufferSize = 4096; +int limit = 2048; +ByteBuffer buffer = ByteBuffer.wrap(new byte[bufferSize]); +buffer.limit(limit); +try (RandomAccessRead rar = new RandomAccessReadBuffer(buffer)) +{ +byte[] buf = new byte[bufferSize]; +int bytesRead = rar.read(buf); +assertEquals(limit, bytesRead); +} +} + }
svn commit: r1915421 - /pdfbox/branches/3.0/pdfbox/src/main/java/org/apache/pdfbox/pdfwriter/COSWriter.java
Author: lehmi Date: Sat Jan 27 10:42:47 2024 New Revision: 1915421 URL: http://svn.apache.org/viewvc?rev=1915421=rev Log: PDFBOX-5714: update key of indirect objects if the key of the referenced object was replaced Modified: pdfbox/branches/3.0/pdfbox/src/main/java/org/apache/pdfbox/pdfwriter/COSWriter.java Modified: pdfbox/branches/3.0/pdfbox/src/main/java/org/apache/pdfbox/pdfwriter/COSWriter.java URL: http://svn.apache.org/viewvc/pdfbox/branches/3.0/pdfbox/src/main/java/org/apache/pdfbox/pdfwriter/COSWriter.java?rev=1915421=1915420=1915421=diff == --- pdfbox/branches/3.0/pdfbox/src/main/java/org/apache/pdfbox/pdfwriter/COSWriter.java (original) +++ pdfbox/branches/3.0/pdfbox/src/main/java/org/apache/pdfbox/pdfwriter/COSWriter.java Sat Jan 27 10:42:47 2024 @@ -1073,20 +1073,36 @@ public class COSWriter implements ICOSVi COSBase actual = obj; if( actual instanceof COSObject ) { +actual = ((COSObject) obj).getObject(); if (reuseObjectNumbers) { COSObjectKey key = obj.getKey(); if (key != null) { +COSObjectKey actualKey = actual != null ? actual.getKey() : null; +// check if the key of the referenced object and the indirect object is the same +if (actualKey != null && !key.equals(actualKey)) +{ +// update the object key of the indirect object +key = actualKey; +obj.setKey(key); +} objectKeys.put(obj, key); return key; } } -actual = ((COSObject) obj).getObject(); } // PDFBOX-4540: because objectKeys is accessible from outside, it is possible // that a COSObject obj is already in the objectKeys map. -return objectKeys.computeIfAbsent(actual, k -> new COSObjectKey(++number, 0)); +COSObjectKey newKey = objectKeys.computeIfAbsent(actual, +k -> new COSObjectKey(++number, 0)); +COSObjectKey actualKey = actual.getKey(); +// if the returned key is new update the existing key of the given object +if (actualKey != null && !actualKey.equals(newKey)) +{ +actual.setKey(newKey); +} +return newKey; } @Override
svn commit: r1915420 - /pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdfwriter/COSWriter.java
Author: lehmi Date: Sat Jan 27 10:42:31 2024 New Revision: 1915420 URL: http://svn.apache.org/viewvc?rev=1915420=rev Log: PDFBOX-5714: update key of indirect objects if the key of the referenced object was replaced Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdfwriter/COSWriter.java Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdfwriter/COSWriter.java URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdfwriter/COSWriter.java?rev=1915420=1915419=1915420=diff == --- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdfwriter/COSWriter.java (original) +++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdfwriter/COSWriter.java Sat Jan 27 10:42:31 2024 @@ -1074,20 +1074,36 @@ public class COSWriter implements ICOSVi COSBase actual = obj; if( actual instanceof COSObject ) { +actual = ((COSObject) obj).getObject(); if (reuseObjectNumbers) { COSObjectKey key = obj.getKey(); if (key != null) { +COSObjectKey actualKey = actual != null ? actual.getKey() : null; +// check if the key of the referenced object and the indirect object is the same +if (actualKey != null && !key.equals(actualKey)) +{ +// update the object key of the indirect object +key = actualKey; +obj.setKey(key); +} objectKeys.put(obj, key); return key; } } -actual = ((COSObject) obj).getObject(); } // PDFBOX-4540: because objectKeys is accessible from outside, it is possible // that a COSObject obj is already in the objectKeys map. -return objectKeys.computeIfAbsent(actual, k -> new COSObjectKey(++number, 0)); +COSObjectKey newKey = objectKeys.computeIfAbsent(actual, +k -> new COSObjectKey(++number, 0)); +COSObjectKey actualKey = actual.getKey(); +// if the returned key is new update the existing key of the given object +if (actualKey != null && !actualKey.equals(newKey)) +{ +actual.setKey(newKey); +} +return newKey; } @Override
svn commit: r1915352 - /pdfbox/branches/3.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDFontFactory.java
Author: lehmi Date: Sun Jan 21 16:05:13 2024 New Revision: 1915352 URL: http://svn.apache.org/viewvc?rev=1915352=rev Log: PDFBOX-5704: detect and fix wrong CID font subtype inspired by the implementation of pdf.js as proposed by Mike Li on dev@ Modified: pdfbox/branches/3.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDFontFactory.java Modified: pdfbox/branches/3.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDFontFactory.java URL: http://svn.apache.org/viewvc/pdfbox/branches/3.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDFontFactory.java?rev=1915352=1915351=1915352=diff == --- pdfbox/branches/3.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDFontFactory.java (original) +++ pdfbox/branches/3.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDFontFactory.java Sun Jan 21 16:05:13 2024 @@ -17,9 +17,16 @@ package org.apache.pdfbox.pdmodel.font; import java.io.IOException; +import java.nio.charset.StandardCharsets; +import java.util.Arrays; +import java.util.List; +import org.apache.pdfbox.cos.COSArray; +import org.apache.pdfbox.cos.COSBase; import org.apache.pdfbox.cos.COSDictionary; import org.apache.pdfbox.cos.COSName; +import org.apache.pdfbox.cos.COSStream; +import org.apache.pdfbox.io.RandomAccessRead; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.apache.pdfbox.pdmodel.ResourceCache; @@ -32,6 +39,12 @@ public final class PDFontFactory { private static final Log LOG = LogFactory.getLog(PDFontFactory.class); +private static final String FONT_TYPE1C = "Type1C"; +private static final String FONT_OPEN_TYPE = "OTTO"; +private static final String FONT_TTF_COLLECTION = "ttcf"; +private static final String FONT_TRUE_TYPE = "true"; +private static final byte[] TTF_HEADER = new byte[] { 0, 1, 0, 0 }; + private PDFontFactory() { } @@ -48,6 +61,58 @@ public final class PDFontFactory return createFont(dictionary, null); } +private static class FontType +{ +private static final List cidType0Types // += Arrays.asList(COSName.TYPE1.getName(), FONT_TYPE1C); +private static final List cidType2Types // += Arrays.asList(COSName.TRUE_TYPE.getName(), COSName.OPEN_TYPE.getName()); +private final COSName type; +private final COSName subtype; + +public FontType(COSName type, String subtypeString) +{ +this.type = type; +if (cidType0Types.contains(subtypeString)) +{ +subtype = COSName.CID_FONT_TYPE0; +} +else if (cidType2Types.contains(subtypeString)) +{ +subtype = COSName.CID_FONT_TYPE2; +} +else +{ +subtype = null; +} +} + +public FontType(COSName type, COSName subtype) +{ +this.type = type; +this.subtype = subtype; +} + +public FontType(COSName type) +{ +this(type, (COSName) null); +} + +public COSName getSubtype() +{ +return subtype; +} + +public boolean isCIDSubtype(COSName cidSubtype) +{ +if (!COSName.TYPE0.equals(type)) +{ +return false; +} +return subtype != null && subtype.equals(cidSubtype); +} +} + /** * Creates a new PDFont instance with the appropriate subclass. * @@ -93,6 +158,18 @@ public final class PDFontFactory } else if (COSName.TYPE0.equals(subType)) { +COSDictionary fontDescriptor = getFontDescriptor(dictionary); +FontType fontTypeFromFont = getFontTypeFromFont(fontDescriptor, subType); +if (fontTypeFromFont != null) +{ +COSDictionary descendantFont = getDescendantFont(dictionary); +COSName descFontType = descendantFont != null +? descendantFont.getCOSName(COSName.SUBTYPE) : null; +if (descFontType != null && !fontTypeFromFont.isCIDSubtype(descFontType)) +{ +fixType0Subtype(descendantFont, fontDescriptor, fontTypeFromFont.getSubtype()); +} +} return new PDType0Font(dictionary); } else if (COSName.CID_FONT_TYPE0.equals(subType)) @@ -112,6 +189,172 @@ public final class PDFontFactory } } +private static void fixType0Subtype(COSDictionary descendantFont, COSDictionary fontDescriptor, +COSName newSubType) +{ +LOG.warn("Try to fix different descendant font types for font " ++ fontDescriptor.getNameAsString(COSName.