Author: lehmi
Date: Sun Jul 26 15:10:31 2026
New Revision: 1936599
Log:
PDFBOX-6226: cache byte representation of the name of an operator so that it
doesn't have to be converted every time it is written to a pdf.
Added:
pdfbox/trunk/pdfbox/src/test/java/org/apache/pdfbox/pdfwriter/OperatorNameTest.java
(contents, props changed)
Modified:
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/contentstream/operator/OperatorName.java
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdfwriter/ContentStreamWriter.java
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/PDAbstractContentStream.java
Modified:
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/contentstream/operator/OperatorName.java
==============================================================================
---
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/contentstream/operator/OperatorName.java
Sun Jul 26 12:45:03 2026 (r1936598)
+++
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/contentstream/operator/OperatorName.java
Sun Jul 26 15:10:31 2026 (r1936599)
@@ -16,9 +16,12 @@
*/
package org.apache.pdfbox.contentstream.operator;
+import java.nio.charset.StandardCharsets;
+import java.util.Map;
+import java.util.concurrent.ConcurrentHashMap;
+
public final class OperatorName
{
-
// non stroking color
public static final String NON_STROKING_COLOR = "sc";
public static final String NON_STROKING_COLOR_N = "scn";
@@ -108,6 +111,166 @@ public final class OperatorName
public static final String BEGIN_COMPATIBILITY_SECTION = "BX";
public static final String END_COMPATIBILITY_SECTION = "EX";
+ private static final Map<String, byte[]> nameAsBytes = new
ConcurrentHashMap<>();
+
+ static
+ {
+ // non stroking color
+ nameAsBytes.put(NON_STROKING_COLOR, //
+ NON_STROKING_COLOR.getBytes(StandardCharsets.US_ASCII));
+ nameAsBytes.put(NON_STROKING_COLOR_N, //
+ NON_STROKING_COLOR_N.getBytes(StandardCharsets.US_ASCII));
+ nameAsBytes.put(NON_STROKING_RGB, //
+ NON_STROKING_RGB.getBytes(StandardCharsets.US_ASCII));
+ nameAsBytes.put(NON_STROKING_GRAY, //
+ NON_STROKING_GRAY.getBytes(StandardCharsets.US_ASCII));
+ nameAsBytes.put(NON_STROKING_CMYK, //
+ NON_STROKING_CMYK.getBytes(StandardCharsets.US_ASCII));
+ nameAsBytes.put(NON_STROKING_COLORSPACE, //
+ NON_STROKING_COLORSPACE.getBytes(StandardCharsets.US_ASCII));
+ // stroking color
+ nameAsBytes.put(STROKING_COLOR, //
+ STROKING_COLOR.getBytes(StandardCharsets.US_ASCII));
+ nameAsBytes.put(STROKING_COLOR_N, //
+ STROKING_COLOR_N.getBytes(StandardCharsets.US_ASCII));
+ nameAsBytes.put(STROKING_COLOR_RGB, //
+ STROKING_COLOR_RGB.getBytes(StandardCharsets.US_ASCII));
+ nameAsBytes.put(STROKING_COLOR_GRAY, //
+ STROKING_COLOR_GRAY.getBytes(StandardCharsets.US_ASCII));
+ nameAsBytes.put(STROKING_COLOR_CMYK, //
+ STROKING_COLOR_CMYK.getBytes(StandardCharsets.US_ASCII));
+ nameAsBytes.put(STROKING_COLORSPACE, //
+ STROKING_COLORSPACE.getBytes(StandardCharsets.US_ASCII));
+ // marked content
+ nameAsBytes.put(BEGIN_MARKED_CONTENT_SEQ, //
+ BEGIN_MARKED_CONTENT_SEQ.getBytes(StandardCharsets.US_ASCII));
+ nameAsBytes.put(BEGIN_MARKED_CONTENT, //
+ BEGIN_MARKED_CONTENT.getBytes(StandardCharsets.US_ASCII));
+ nameAsBytes.put(END_MARKED_CONTENT, //
+ END_MARKED_CONTENT.getBytes(StandardCharsets.US_ASCII));
+ nameAsBytes.put(MARKED_CONTENT_POINT_WITH_PROPS, //
+
MARKED_CONTENT_POINT_WITH_PROPS.getBytes(StandardCharsets.US_ASCII));
+ nameAsBytes.put(MARKED_CONTENT_POINT, //
+ MARKED_CONTENT_POINT.getBytes(StandardCharsets.US_ASCII));
+ nameAsBytes.put(DRAW_OBJECT, //
+ DRAW_OBJECT.getBytes(StandardCharsets.US_ASCII));
+ // state
+ nameAsBytes.put(CONCAT, //
+ CONCAT.getBytes(StandardCharsets.US_ASCII));
+ nameAsBytes.put(RESTORE, //
+ RESTORE.getBytes(StandardCharsets.US_ASCII));
+ nameAsBytes.put(SAVE, //
+ SAVE.getBytes(StandardCharsets.US_ASCII));
+ nameAsBytes.put(SET_FLATNESS, //
+ SET_FLATNESS.getBytes(StandardCharsets.US_ASCII));
+ nameAsBytes.put(SET_GRAPHICS_STATE_PARAMS, //
+ SET_GRAPHICS_STATE_PARAMS.getBytes(StandardCharsets.US_ASCII));
+ nameAsBytes.put(SET_LINE_CAPSTYLE, //
+ SET_LINE_CAPSTYLE.getBytes(StandardCharsets.US_ASCII));
+ nameAsBytes.put(SET_LINE_DASHPATTERN, //
+ SET_LINE_DASHPATTERN.getBytes(StandardCharsets.US_ASCII));
+ nameAsBytes.put(SET_LINE_JOINSTYLE, //
+ SET_LINE_JOINSTYLE.getBytes(StandardCharsets.US_ASCII));
+ nameAsBytes.put(SET_LINE_MITERLIMIT, //
+ SET_LINE_MITERLIMIT.getBytes(StandardCharsets.US_ASCII));
+ nameAsBytes.put(SET_LINE_WIDTH, //
+ SET_LINE_WIDTH.getBytes(StandardCharsets.US_ASCII));
+ nameAsBytes.put(SET_MATRIX, //
+ SET_MATRIX.getBytes(StandardCharsets.US_ASCII));
+ nameAsBytes.put(SET_RENDERINGINTENT, //
+ SET_RENDERINGINTENT.getBytes(StandardCharsets.US_ASCII));
+ // graphics
+ nameAsBytes.put(APPEND_RECT, //
+ APPEND_RECT.getBytes(StandardCharsets.US_ASCII));
+ nameAsBytes.put(BEGIN_INLINE_IMAGE, //
+ BEGIN_INLINE_IMAGE.getBytes(StandardCharsets.US_ASCII));
+ nameAsBytes.put(BEGIN_INLINE_IMAGE_DATA, //
+ BEGIN_INLINE_IMAGE_DATA.getBytes(StandardCharsets.US_ASCII));
+ nameAsBytes.put(END_INLINE_IMAGE, //
+ END_INLINE_IMAGE.getBytes(StandardCharsets.US_ASCII));
+ nameAsBytes.put(CLIP_EVEN_ODD, //
+ CLIP_EVEN_ODD.getBytes(StandardCharsets.US_ASCII));
+ nameAsBytes.put(CLIP_NON_ZERO, //
+ CLIP_NON_ZERO.getBytes(StandardCharsets.US_ASCII));
+ nameAsBytes.put(CLOSE_AND_STROKE, //
+ CLOSE_AND_STROKE.getBytes(StandardCharsets.US_ASCII));
+ nameAsBytes.put(CLOSE_FILL_EVEN_ODD_AND_STROKE, //
+
CLOSE_FILL_EVEN_ODD_AND_STROKE.getBytes(StandardCharsets.US_ASCII));
+ nameAsBytes.put(CLOSE_FILL_NON_ZERO_AND_STROKE, //
+
CLOSE_FILL_NON_ZERO_AND_STROKE.getBytes(StandardCharsets.US_ASCII));
+ nameAsBytes.put(CLOSE_PATH, //
+ CLOSE_PATH.getBytes(StandardCharsets.US_ASCII));
+ nameAsBytes.put(CURVE_TO, //
+ CURVE_TO.getBytes(StandardCharsets.US_ASCII));
+ nameAsBytes.put(CURVE_TO_REPLICATE_FINAL_POINT, //
+
CURVE_TO_REPLICATE_FINAL_POINT.getBytes(StandardCharsets.US_ASCII));
+ nameAsBytes.put(CURVE_TO_REPLICATE_INITIAL_POINT, //
+
CURVE_TO_REPLICATE_INITIAL_POINT.getBytes(StandardCharsets.US_ASCII));
+ nameAsBytes.put(ENDPATH, //
+ ENDPATH.getBytes(StandardCharsets.US_ASCII));
+ nameAsBytes.put(FILL_EVEN_ODD_AND_STROKE, //
+ FILL_EVEN_ODD_AND_STROKE.getBytes(StandardCharsets.US_ASCII));
+ nameAsBytes.put(FILL_EVEN_ODD, //
+ FILL_EVEN_ODD.getBytes(StandardCharsets.US_ASCII));
+ nameAsBytes.put(FILL_NON_ZERO_AND_STROKE, //
+ FILL_NON_ZERO_AND_STROKE.getBytes(StandardCharsets.US_ASCII));
+ nameAsBytes.put(FILL_NON_ZERO, //
+ FILL_NON_ZERO.getBytes(StandardCharsets.US_ASCII));
+ nameAsBytes.put(LEGACY_FILL_NON_ZERO, //
+ LEGACY_FILL_NON_ZERO.getBytes(StandardCharsets.US_ASCII));
+ nameAsBytes.put(LINE_TO, //
+ LINE_TO.getBytes(StandardCharsets.US_ASCII));
+ nameAsBytes.put(MOVE_TO, //
+ MOVE_TO.getBytes(StandardCharsets.US_ASCII));
+ nameAsBytes.put(SHADING_FILL, //
+ SHADING_FILL.getBytes(StandardCharsets.US_ASCII));
+ nameAsBytes.put(STROKE_PATH, //
+ STROKE_PATH.getBytes(StandardCharsets.US_ASCII));
+ // text
+ nameAsBytes.put(BEGIN_TEXT, //
+ BEGIN_TEXT.getBytes(StandardCharsets.US_ASCII));
+ nameAsBytes.put(END_TEXT, //
+ END_TEXT.getBytes(StandardCharsets.US_ASCII));
+ nameAsBytes.put(MOVE_TEXT, //
+ MOVE_TEXT.getBytes(StandardCharsets.US_ASCII));
+ nameAsBytes.put(MOVE_TEXT_SET_LEADING, //
+ MOVE_TEXT_SET_LEADING.getBytes(StandardCharsets.US_ASCII));
+ nameAsBytes.put(NEXT_LINE, //
+ NEXT_LINE.getBytes(StandardCharsets.US_ASCII));
+ nameAsBytes.put(SET_CHAR_SPACING, //
+ SET_CHAR_SPACING.getBytes(StandardCharsets.US_ASCII));
+ nameAsBytes.put(SET_FONT_AND_SIZE, //
+ SET_FONT_AND_SIZE.getBytes(StandardCharsets.US_ASCII));
+ nameAsBytes.put(SET_TEXT_HORIZONTAL_SCALING, //
+
SET_TEXT_HORIZONTAL_SCALING.getBytes(StandardCharsets.US_ASCII));
+ nameAsBytes.put(SET_TEXT_LEADING, //
+ SET_TEXT_LEADING.getBytes(StandardCharsets.US_ASCII));
+ nameAsBytes.put(SET_TEXT_RENDERINGMODE, //
+ SET_TEXT_RENDERINGMODE.getBytes(StandardCharsets.US_ASCII));
+ nameAsBytes.put(SET_TEXT_RISE, //
+ SET_TEXT_RISE.getBytes(StandardCharsets.US_ASCII));
+ nameAsBytes.put(SET_WORD_SPACING, //
+ SET_WORD_SPACING.getBytes(StandardCharsets.US_ASCII));
+ nameAsBytes.put(SHOW_TEXT, //
+ SHOW_TEXT.getBytes(StandardCharsets.US_ASCII));
+ nameAsBytes.put(SHOW_TEXT_ADJUSTED, //
+ SHOW_TEXT_ADJUSTED.getBytes(StandardCharsets.US_ASCII));
+ nameAsBytes.put(SHOW_TEXT_LINE, //
+ SHOW_TEXT_LINE.getBytes(StandardCharsets.US_ASCII));
+ nameAsBytes.put(SHOW_TEXT_LINE_AND_SPACE, //
+ SHOW_TEXT_LINE_AND_SPACE.getBytes(StandardCharsets.US_ASCII));
+ // type3 font
+ nameAsBytes.put(TYPE3_D0, //
+ TYPE3_D0.getBytes(StandardCharsets.US_ASCII));
+ nameAsBytes.put(TYPE3_D1, //
+ TYPE3_D1.getBytes(StandardCharsets.US_ASCII));
+ // compatibility section
+ nameAsBytes.put(BEGIN_COMPATIBILITY_SECTION, //
+
BEGIN_COMPATIBILITY_SECTION.getBytes(StandardCharsets.US_ASCII));
+ nameAsBytes.put(END_COMPATIBILITY_SECTION, //
+ END_COMPATIBILITY_SECTION.getBytes(StandardCharsets.US_ASCII));
+ }
+
/**
* private constructor
*/
@@ -115,4 +278,19 @@ public final class OperatorName
{
}
+ /**
+ * Returns the ASCII representation of the given operator name as byte
array.
+ *
+ * @param operatorName the name of the operator.
+ * @return the ASCII representation of the operator name as byte array.
+ */
+ public static byte[] getNameAsBytes(String operatorName)
+ {
+ byte[] stringBytes = nameAsBytes.get(operatorName);
+ if (stringBytes == null)
+ {
+ throw new IllegalArgumentException("unknown operator " +
operatorName);
+ }
+ return stringBytes;
+ }
}
Modified:
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdfwriter/ContentStreamWriter.java
==============================================================================
---
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdfwriter/ContentStreamWriter.java
Sun Jul 26 12:45:03 2026 (r1936598)
+++
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdfwriter/ContentStreamWriter.java
Sun Jul 26 15:10:31 2026 (r1936599)
@@ -132,7 +132,7 @@ public class ContentStreamWriter
{
if (op.getName().equals(OperatorName.BEGIN_INLINE_IMAGE))
{
-
output.write(OperatorName.BEGIN_INLINE_IMAGE.getBytes(StandardCharsets.ISO_8859_1));
+
output.write(OperatorName.getNameAsBytes(OperatorName.BEGIN_INLINE_IMAGE));
output.write(EOL);
COSDictionary dic = op.getImageParameters();
for (COSName key : dic.keySet())
@@ -143,16 +143,16 @@ public class ContentStreamWriter
writeObject(value);
output.write(EOL);
}
-
output.write(OperatorName.BEGIN_INLINE_IMAGE_DATA.getBytes(StandardCharsets.ISO_8859_1));
+
output.write(OperatorName.getNameAsBytes(OperatorName.BEGIN_INLINE_IMAGE_DATA));
output.write(EOL);
output.write(op.getImageData());
output.write(EOL);
-
output.write(OperatorName.END_INLINE_IMAGE.getBytes(StandardCharsets.ISO_8859_1));
+
output.write(OperatorName.getNameAsBytes(OperatorName.END_INLINE_IMAGE));
output.write(EOL);
}
else
{
- output.write(op.getName().getBytes(StandardCharsets.ISO_8859_1));
+ output.write(OperatorName.getNameAsBytes(op.getName()));
output.write(EOL);
}
}
Modified:
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/PDAbstractContentStream.java
==============================================================================
---
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/PDAbstractContentStream.java
Sun Jul 26 12:45:03 2026 (r1936598)
+++
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/PDAbstractContentStream.java
Sun Jul 26 15:10:31 2026 (r1936599)
@@ -78,6 +78,10 @@ abstract class PDAbstractContentStream i
{
private static final Logger LOG =
LogManager.getLogger(PDAbstractContentStream.class);
+ private static final byte[] ASCII_SPACE = new byte[] { 0x20 };
+ private static final byte[] ASCII_LEFT_SQUARE_BRACKET = new byte[] { 0x5B
};
+ private static final byte[] ASCII_RIGHT_SQUARE_BRACKET_SPACE = new byte[]
{ 0x5D, 0x20 };
+
protected final PDDocument document; // may be null
protected final OutputStream outputStream;
@@ -264,7 +268,7 @@ abstract class PDAbstractContentStream i
throw new IllegalStateException("Must call setFont() before
showTextWithPositioning()");
}
- write("[");
+ writeBytes(ASCII_LEFT_SQUARE_BRACKET);
for (Object obj : textWithPositioningArray)
{
if (obj instanceof String)
@@ -280,7 +284,7 @@ abstract class PDAbstractContentStream i
throw new IllegalArgumentException("Argument must consist of
array of Float and String types");
}
}
- write("] ");
+ writeBytes(ASCII_RIGHT_SQUARE_BRACKET_SPACE);
writeOperator(OperatorName.SHOW_TEXT_ADJUSTED);
}
@@ -295,8 +299,7 @@ abstract class PDAbstractContentStream i
@Override
public void showGlyphsWithPositioning(GlyphsAndPositions
glyphsAndPositions) throws IOException
{
- write("[");
-
+ writeBytes(ASCII_LEFT_SQUARE_BRACKET);
for (Object obj : glyphsAndPositions.toArray())
{
if (obj instanceof GlyphsAndPositions.GlyphSubList)
@@ -317,7 +320,7 @@ abstract class PDAbstractContentStream i
throw new IllegalArgumentException("Argument must consist of
array of Float and GlyphsAndPositions.GlyphSubList types, not " +
obj.getClass().getName());
}
}
- write("] ");
+ writeBytes(ASCII_RIGHT_SQUARE_BRACKET_SPACE);
writeOperator(OperatorName.SHOW_TEXT_ADJUSTED);
}
@@ -351,7 +354,7 @@ abstract class PDAbstractContentStream i
else
{
showTextInternal(text);
- write(" ");
+ writeBytes(ASCII_SPACE);
writeOperator(OperatorName.SHOW_TEXT);
}
}
@@ -367,7 +370,7 @@ abstract class PDAbstractContentStream i
public void showGlyphCodes(int[] glyphCodes) throws IOException
{
writeTextPDType0Font(glyphCodes);
- write(" ");
+ writeBytes(ASCII_SPACE);
writeOperator(OperatorName.SHOW_TEXT);
}
@@ -1427,12 +1430,12 @@ abstract class PDAbstractContentStream i
*/
public void setLineDashPattern(float[] pattern, float phase) throws
IOException
{
- write("[");
+ writeBytes(ASCII_LEFT_SQUARE_BRACKET);
for (float value : pattern)
{
writeOperand(value);
}
- write("] ");
+ writeBytes(ASCII_RIGHT_SQUARE_BRACKET_SPACE);
writeOperand(phase);
writeOperator(OperatorName.SET_LINE_DASHPATTERN);
}
@@ -1630,14 +1633,14 @@ abstract class PDAbstractContentStream i
}
/**
- * Writes a string to the content stream as ASCII.
+ * Writes an operator to the content stream as ASCII.
*
- * @param text the text to be added to the content stream followed by a
newline
+ * @param operatorname the name of the operator to be added to the content
stream followed by a newline
* @throws IOException If the underlying stream has a problem being
written to.
*/
- protected void writeOperator(String text) throws IOException
+ protected void writeOperator(String operatorname) throws IOException
{
- write(text);
+ writeBytes(OperatorName.getNameAsBytes(operatorname));
writeLine();
}
Added:
pdfbox/trunk/pdfbox/src/test/java/org/apache/pdfbox/pdfwriter/OperatorNameTest.java
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++
pdfbox/trunk/pdfbox/src/test/java/org/apache/pdfbox/pdfwriter/OperatorNameTest.java
Sun Jul 26 15:10:31 2026 (r1936599)
@@ -0,0 +1,207 @@
+package org.apache.pdfbox.pdfwriter;
+
+import static org.junit.jupiter.api.Assertions.assertArrayEquals;
+
+import java.nio.charset.StandardCharsets;
+
+import org.apache.pdfbox.contentstream.operator.OperatorName;
+import org.junit.jupiter.api.Test;
+
+class OperatorNameTest
+{
+ @Test
+ void testNameAsByteMappingNonStrokingColor()
+ {
+
assertArrayEquals(OperatorName.NON_STROKING_COLOR.getBytes(StandardCharsets.US_ASCII),
+ OperatorName.getNameAsBytes(OperatorName.NON_STROKING_COLOR));
+
assertArrayEquals(OperatorName.NON_STROKING_COLOR_N.getBytes(StandardCharsets.US_ASCII),
+
OperatorName.getNameAsBytes(OperatorName.NON_STROKING_COLOR_N));
+
assertArrayEquals(OperatorName.NON_STROKING_RGB.getBytes(StandardCharsets.US_ASCII),
+ OperatorName.getNameAsBytes(OperatorName.NON_STROKING_RGB));
+
assertArrayEquals(OperatorName.NON_STROKING_GRAY.getBytes(StandardCharsets.US_ASCII),
+ OperatorName.getNameAsBytes(OperatorName.NON_STROKING_GRAY));
+
assertArrayEquals(OperatorName.NON_STROKING_CMYK.getBytes(StandardCharsets.US_ASCII),
+ OperatorName.getNameAsBytes(OperatorName.NON_STROKING_CMYK));
+
assertArrayEquals(OperatorName.NON_STROKING_COLORSPACE.getBytes(StandardCharsets.US_ASCII),
+
OperatorName.getNameAsBytes(OperatorName.NON_STROKING_COLORSPACE));
+ }
+
+ @Test
+ void testNameAsByteMappingStrokingColor()
+ {
+
assertArrayEquals(OperatorName.STROKING_COLOR.getBytes(StandardCharsets.US_ASCII),
+ OperatorName.getNameAsBytes(OperatorName.STROKING_COLOR));
+
assertArrayEquals(OperatorName.STROKING_COLOR_N.getBytes(StandardCharsets.US_ASCII),
+ OperatorName.getNameAsBytes(OperatorName.STROKING_COLOR_N));
+
assertArrayEquals(OperatorName.STROKING_COLOR_RGB.getBytes(StandardCharsets.US_ASCII),
+ OperatorName.getNameAsBytes(OperatorName.STROKING_COLOR_RGB));
+
assertArrayEquals(OperatorName.STROKING_COLOR_GRAY.getBytes(StandardCharsets.US_ASCII),
+ OperatorName.getNameAsBytes(OperatorName.STROKING_COLOR_GRAY));
+
assertArrayEquals(OperatorName.STROKING_COLOR_CMYK.getBytes(StandardCharsets.US_ASCII),
+ OperatorName.getNameAsBytes(OperatorName.STROKING_COLOR_CMYK));
+
assertArrayEquals(OperatorName.STROKING_COLORSPACE.getBytes(StandardCharsets.US_ASCII),
+ OperatorName.getNameAsBytes(OperatorName.STROKING_COLORSPACE));
+ }
+
+ @Test
+ void testNameAsByteMappingMarkedContent()
+ {
+
assertArrayEquals(OperatorName.BEGIN_MARKED_CONTENT_SEQ.getBytes(StandardCharsets.US_ASCII),
+
OperatorName.getNameAsBytes(OperatorName.BEGIN_MARKED_CONTENT_SEQ));
+
assertArrayEquals(OperatorName.BEGIN_MARKED_CONTENT.getBytes(StandardCharsets.US_ASCII),
+
OperatorName.getNameAsBytes(OperatorName.BEGIN_MARKED_CONTENT));
+
assertArrayEquals(OperatorName.END_MARKED_CONTENT.getBytes(StandardCharsets.US_ASCII),
+ OperatorName.getNameAsBytes(OperatorName.END_MARKED_CONTENT));
+ assertArrayEquals(
+
OperatorName.MARKED_CONTENT_POINT_WITH_PROPS.getBytes(StandardCharsets.US_ASCII),
+
OperatorName.getNameAsBytes(OperatorName.MARKED_CONTENT_POINT_WITH_PROPS));
+
assertArrayEquals(OperatorName.MARKED_CONTENT_POINT.getBytes(StandardCharsets.US_ASCII),
+
OperatorName.getNameAsBytes(OperatorName.MARKED_CONTENT_POINT));
+
assertArrayEquals(OperatorName.DRAW_OBJECT.getBytes(StandardCharsets.US_ASCII),
+ OperatorName.getNameAsBytes(OperatorName.DRAW_OBJECT));
+ }
+
+ @Test
+ void testNameAsByteMappingState()
+ {
+
assertArrayEquals(OperatorName.CONCAT.getBytes(StandardCharsets.US_ASCII),
+ OperatorName.getNameAsBytes(OperatorName.CONCAT));
+
assertArrayEquals(OperatorName.RESTORE.getBytes(StandardCharsets.US_ASCII),
+ OperatorName.getNameAsBytes(OperatorName.RESTORE));
+
assertArrayEquals(OperatorName.SAVE.getBytes(StandardCharsets.US_ASCII),
+ OperatorName.getNameAsBytes(OperatorName.SAVE));
+
assertArrayEquals(OperatorName.SET_FLATNESS.getBytes(StandardCharsets.US_ASCII),
+ OperatorName.getNameAsBytes(OperatorName.SET_FLATNESS));
+ assertArrayEquals(
+
OperatorName.SET_GRAPHICS_STATE_PARAMS.getBytes(StandardCharsets.US_ASCII),
+
OperatorName.getNameAsBytes(OperatorName.SET_GRAPHICS_STATE_PARAMS));
+
assertArrayEquals(OperatorName.SET_LINE_CAPSTYLE.getBytes(StandardCharsets.US_ASCII),
+ OperatorName.getNameAsBytes(OperatorName.SET_LINE_CAPSTYLE));
+
assertArrayEquals(OperatorName.SET_LINE_DASHPATTERN.getBytes(StandardCharsets.US_ASCII),
+
OperatorName.getNameAsBytes(OperatorName.SET_LINE_DASHPATTERN));
+
assertArrayEquals(OperatorName.SET_LINE_JOINSTYLE.getBytes(StandardCharsets.US_ASCII),
+ OperatorName.getNameAsBytes(OperatorName.SET_LINE_JOINSTYLE));
+
assertArrayEquals(OperatorName.SET_LINE_MITERLIMIT.getBytes(StandardCharsets.US_ASCII),
+ OperatorName.getNameAsBytes(OperatorName.SET_LINE_MITERLIMIT));
+
assertArrayEquals(OperatorName.SET_LINE_WIDTH.getBytes(StandardCharsets.US_ASCII),
+ OperatorName.getNameAsBytes(OperatorName.SET_LINE_WIDTH));
+
assertArrayEquals(OperatorName.SET_MATRIX.getBytes(StandardCharsets.US_ASCII),
+ OperatorName.getNameAsBytes(OperatorName.SET_MATRIX));
+
assertArrayEquals(OperatorName.SET_RENDERINGINTENT.getBytes(StandardCharsets.US_ASCII),
+ OperatorName.getNameAsBytes(OperatorName.SET_RENDERINGINTENT));
+
+ }
+
+ @Test
+ void testNameAsByteGraphics()
+ {
+
assertArrayEquals(OperatorName.APPEND_RECT.getBytes(StandardCharsets.US_ASCII),
+ OperatorName.getNameAsBytes(OperatorName.APPEND_RECT));
+
assertArrayEquals(OperatorName.BEGIN_INLINE_IMAGE.getBytes(StandardCharsets.US_ASCII),
+ OperatorName.getNameAsBytes(OperatorName.BEGIN_INLINE_IMAGE));
+
assertArrayEquals(OperatorName.BEGIN_INLINE_IMAGE_DATA.getBytes(StandardCharsets.US_ASCII),
+
OperatorName.getNameAsBytes(OperatorName.BEGIN_INLINE_IMAGE_DATA));
+
assertArrayEquals(OperatorName.END_INLINE_IMAGE.getBytes(StandardCharsets.US_ASCII),
+ OperatorName.getNameAsBytes(OperatorName.END_INLINE_IMAGE));
+
assertArrayEquals(OperatorName.CLIP_EVEN_ODD.getBytes(StandardCharsets.US_ASCII),
+ OperatorName.getNameAsBytes(OperatorName.CLIP_EVEN_ODD));
+
assertArrayEquals(OperatorName.CLIP_NON_ZERO.getBytes(StandardCharsets.US_ASCII),
+ OperatorName.getNameAsBytes(OperatorName.CLIP_NON_ZERO));
+
assertArrayEquals(OperatorName.CLOSE_AND_STROKE.getBytes(StandardCharsets.US_ASCII),
+ OperatorName.getNameAsBytes(OperatorName.CLOSE_AND_STROKE));
+ assertArrayEquals(
+
OperatorName.CLOSE_FILL_EVEN_ODD_AND_STROKE.getBytes(StandardCharsets.US_ASCII),
+
OperatorName.getNameAsBytes(OperatorName.CLOSE_FILL_EVEN_ODD_AND_STROKE));
+ assertArrayEquals(
+
OperatorName.CLOSE_FILL_NON_ZERO_AND_STROKE.getBytes(StandardCharsets.US_ASCII),
+
OperatorName.getNameAsBytes(OperatorName.CLOSE_FILL_NON_ZERO_AND_STROKE));
+
assertArrayEquals(OperatorName.CLOSE_PATH.getBytes(StandardCharsets.US_ASCII),
+ OperatorName.getNameAsBytes(OperatorName.CLOSE_PATH));
+
assertArrayEquals(OperatorName.CURVE_TO.getBytes(StandardCharsets.US_ASCII),
+ OperatorName.getNameAsBytes(OperatorName.CURVE_TO));
+ assertArrayEquals(
+
OperatorName.CURVE_TO_REPLICATE_FINAL_POINT.getBytes(StandardCharsets.US_ASCII),
+
OperatorName.getNameAsBytes(OperatorName.CURVE_TO_REPLICATE_FINAL_POINT));
+ assertArrayEquals(
+
OperatorName.CURVE_TO_REPLICATE_INITIAL_POINT.getBytes(StandardCharsets.US_ASCII),
+
OperatorName.getNameAsBytes(OperatorName.CURVE_TO_REPLICATE_INITIAL_POINT));
+
assertArrayEquals(OperatorName.ENDPATH.getBytes(StandardCharsets.US_ASCII),
+ OperatorName.getNameAsBytes(OperatorName.ENDPATH));
+
assertArrayEquals(OperatorName.FILL_EVEN_ODD_AND_STROKE.getBytes(StandardCharsets.US_ASCII),
+
OperatorName.getNameAsBytes(OperatorName.FILL_EVEN_ODD_AND_STROKE));
+
assertArrayEquals(OperatorName.FILL_EVEN_ODD.getBytes(StandardCharsets.US_ASCII),
+ OperatorName.getNameAsBytes(OperatorName.FILL_EVEN_ODD));
+
assertArrayEquals(OperatorName.FILL_NON_ZERO_AND_STROKE.getBytes(StandardCharsets.US_ASCII),
+
OperatorName.getNameAsBytes(OperatorName.FILL_NON_ZERO_AND_STROKE));
+
assertArrayEquals(OperatorName.FILL_NON_ZERO.getBytes(StandardCharsets.US_ASCII),
+ OperatorName.getNameAsBytes(OperatorName.FILL_NON_ZERO));
+
assertArrayEquals(OperatorName.LEGACY_FILL_NON_ZERO.getBytes(StandardCharsets.US_ASCII),
+
OperatorName.getNameAsBytes(OperatorName.LEGACY_FILL_NON_ZERO));
+
assertArrayEquals(OperatorName.LINE_TO.getBytes(StandardCharsets.US_ASCII),
+ OperatorName.getNameAsBytes(OperatorName.LINE_TO));
+
assertArrayEquals(OperatorName.MOVE_TO.getBytes(StandardCharsets.US_ASCII),
+ OperatorName.getNameAsBytes(OperatorName.MOVE_TO));
+
assertArrayEquals(OperatorName.SHADING_FILL.getBytes(StandardCharsets.US_ASCII),
+ OperatorName.getNameAsBytes(OperatorName.SHADING_FILL));
+
assertArrayEquals(OperatorName.STROKE_PATH.getBytes(StandardCharsets.US_ASCII),
+ OperatorName.getNameAsBytes(OperatorName.STROKE_PATH));
+ }
+
+ @Test
+ void testNameAsByteText()
+ {
+
assertArrayEquals(OperatorName.BEGIN_TEXT.getBytes(StandardCharsets.US_ASCII),
+ OperatorName.getNameAsBytes(OperatorName.BEGIN_TEXT));
+
assertArrayEquals(OperatorName.END_TEXT.getBytes(StandardCharsets.US_ASCII),
+ OperatorName.getNameAsBytes(OperatorName.END_TEXT));
+
assertArrayEquals(OperatorName.MOVE_TEXT.getBytes(StandardCharsets.US_ASCII),
+ OperatorName.getNameAsBytes(OperatorName.MOVE_TEXT));
+
assertArrayEquals(OperatorName.MOVE_TEXT_SET_LEADING.getBytes(StandardCharsets.US_ASCII),
+
OperatorName.getNameAsBytes(OperatorName.MOVE_TEXT_SET_LEADING));
+
assertArrayEquals(OperatorName.NEXT_LINE.getBytes(StandardCharsets.US_ASCII),
+ OperatorName.getNameAsBytes(OperatorName.NEXT_LINE));
+
assertArrayEquals(OperatorName.SET_CHAR_SPACING.getBytes(StandardCharsets.US_ASCII),
+ OperatorName.getNameAsBytes(OperatorName.SET_CHAR_SPACING));
+
assertArrayEquals(OperatorName.SET_FONT_AND_SIZE.getBytes(StandardCharsets.US_ASCII),
+ OperatorName.getNameAsBytes(OperatorName.SET_FONT_AND_SIZE));
+ assertArrayEquals(
+
OperatorName.SET_TEXT_HORIZONTAL_SCALING.getBytes(StandardCharsets.US_ASCII),
+
OperatorName.getNameAsBytes(OperatorName.SET_TEXT_HORIZONTAL_SCALING));
+
assertArrayEquals(OperatorName.SET_TEXT_LEADING.getBytes(StandardCharsets.US_ASCII),
+ OperatorName.getNameAsBytes(OperatorName.SET_TEXT_LEADING));
+
assertArrayEquals(OperatorName.SET_TEXT_RENDERINGMODE.getBytes(StandardCharsets.US_ASCII),
+
OperatorName.getNameAsBytes(OperatorName.SET_TEXT_RENDERINGMODE));
+
assertArrayEquals(OperatorName.SET_TEXT_RISE.getBytes(StandardCharsets.US_ASCII),
+ OperatorName.getNameAsBytes(OperatorName.SET_TEXT_RISE));
+
assertArrayEquals(OperatorName.SET_WORD_SPACING.getBytes(StandardCharsets.US_ASCII),
+ OperatorName.getNameAsBytes(OperatorName.SET_WORD_SPACING));
+
assertArrayEquals(OperatorName.SHOW_TEXT.getBytes(StandardCharsets.US_ASCII),
+ OperatorName.getNameAsBytes(OperatorName.SHOW_TEXT));
+
assertArrayEquals(OperatorName.SHOW_TEXT_ADJUSTED.getBytes(StandardCharsets.US_ASCII),
+ OperatorName.getNameAsBytes(OperatorName.SHOW_TEXT_ADJUSTED));
+
assertArrayEquals(OperatorName.SHOW_TEXT_LINE.getBytes(StandardCharsets.US_ASCII),
+ OperatorName.getNameAsBytes(OperatorName.SHOW_TEXT_LINE));
+
assertArrayEquals(OperatorName.SHOW_TEXT_LINE_AND_SPACE.getBytes(StandardCharsets.US_ASCII),
+
OperatorName.getNameAsBytes(OperatorName.SHOW_TEXT_LINE_AND_SPACE));
+ }
+
+ @Test
+ void testNameAsByteType3()
+ {
+
assertArrayEquals(OperatorName.TYPE3_D0.getBytes(StandardCharsets.US_ASCII),
+ OperatorName.getNameAsBytes(OperatorName.TYPE3_D0));
+
assertArrayEquals(OperatorName.TYPE3_D1.getBytes(StandardCharsets.US_ASCII),
+ OperatorName.getNameAsBytes(OperatorName.TYPE3_D1));
+ }
+
+ @Test
+ void testNameAsByteCompatibility()
+ {
+ assertArrayEquals(
+
OperatorName.BEGIN_COMPATIBILITY_SECTION.getBytes(StandardCharsets.US_ASCII),
+
OperatorName.getNameAsBytes(OperatorName.BEGIN_COMPATIBILITY_SECTION));
+ assertArrayEquals(
+
OperatorName.END_COMPATIBILITY_SECTION.getBytes(StandardCharsets.US_ASCII),
+
OperatorName.getNameAsBytes(OperatorName.END_COMPATIBILITY_SECTION));
+ }
+}