Author: tilman
Date: Tue Nov 25 16:46:38 2025
New Revision: 1929997

Log:
PDFBOX-5660: optimize, as suggested by Valery Bokov; closes #346

Modified:
   
pdfbox/branches/3.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/form/AppearanceGeneratorHelper.java

Modified: 
pdfbox/branches/3.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/form/AppearanceGeneratorHelper.java
==============================================================================
--- 
pdfbox/branches/3.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/form/AppearanceGeneratorHelper.java
  Tue Nov 25 16:46:31 2025        (r1929996)
+++ 
pdfbox/branches/3.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/form/AppearanceGeneratorHelper.java
  Tue Nov 25 16:46:38 2025        (r1929997)
@@ -24,6 +24,7 @@ import java.io.IOException;
 import java.io.OutputStream;
 import java.util.ArrayList;
 import java.util.List;
+import java.util.regex.Pattern;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 import org.apache.fontbox.util.BoundingBox;
@@ -65,7 +66,9 @@ class AppearanceGeneratorHelper
 
     private static final Operator BMC = Operator.getOperator("BMC");
     private static final Operator EMC = Operator.getOperator("EMC");
- 
+
+    private static final Pattern PATTERN = 
Pattern.compile("\\u000D\\u000A|[\\u000A\\u000B\\u000C\\u000D\\u0085\\u2028\\u2029]");
+
     private final PDVariableText field;
     
     private PDDefaultAppearanceString defaultAppearance;
@@ -192,7 +195,7 @@ class AppearanceGeneratorHelper
         // see PDFBOX-3911
         if (field instanceof PDTextField && !((PDTextField) 
field).isMultiline())
         {
-            value = 
value.replaceAll("\\u000D\\u000A|[\\u000A\\u000B\\u000C\\u000D\\u0085\\u2028\\u2029]",
 " ");
+            value = PATTERN.matcher(value).replaceAll(" ");
         }
 
         for (PDAnnotationWidget widget : field.getWidgets())

Reply via email to