You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pdfbox.apache.org by ti...@apache.org on 2024/02/14 13:16:22 UTC

svn commit: r1915784 - in /pdfbox/trunk: debugger/src/main/java/org/apache/pdfbox/debugger/streampane/ debugger/src/main/java/org/apache/pdfbox/debugger/treestatus/ examples/src/test/java/org/apache/pdfbox/examples/pdfa/ pdfbox/src/main/java/org/apache...

Author: tilman
Date: Wed Feb 14 13:16:22 2024
New Revision: 1915784

URL: http://svn.apache.org/viewvc?rev=1915784&view=rev
Log:
PDFBOX-5660: Update string handling and regex in several classes, by Axel Howind

Modified:
    pdfbox/trunk/debugger/src/main/java/org/apache/pdfbox/debugger/streampane/StreamPane.java
    pdfbox/trunk/debugger/src/main/java/org/apache/pdfbox/debugger/treestatus/TreeStatus.java
    pdfbox/trunk/examples/src/test/java/org/apache/pdfbox/examples/pdfa/CreatePDFATest.java
    pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/common/function/type4/InstructionSequenceBuilder.java
    pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/annotation/handlers/PDFreeTextAppearanceHandler.java
    pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/annotation/layout/PlainText.java
    pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/form/PlainText.java

Modified: pdfbox/trunk/debugger/src/main/java/org/apache/pdfbox/debugger/streampane/StreamPane.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/debugger/src/main/java/org/apache/pdfbox/debugger/streampane/StreamPane.java?rev=1915784&r1=1915783&r2=1915784&view=diff
==============================================================================
--- pdfbox/trunk/debugger/src/main/java/org/apache/pdfbox/debugger/streampane/StreamPane.java (original)
+++ pdfbox/trunk/debugger/src/main/java/org/apache/pdfbox/debugger/streampane/StreamPane.java Wed Feb 14 13:16:22 2024
@@ -354,7 +354,7 @@ public class StreamPane implements Actio
                 // replace the remaining CRs with LF
                 if (data != null)
                 {
-                    data = data.replace("\r\n", "\n").replace('\r', '\n');
+                    data = data.replaceAll("\\R", "\n");
                 }
 
                 try

Modified: pdfbox/trunk/debugger/src/main/java/org/apache/pdfbox/debugger/treestatus/TreeStatus.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/debugger/src/main/java/org/apache/pdfbox/debugger/treestatus/TreeStatus.java?rev=1915784&r1=1915783&r2=1915784&view=diff
==============================================================================
--- pdfbox/trunk/debugger/src/main/java/org/apache/pdfbox/debugger/treestatus/TreeStatus.java (original)
+++ pdfbox/trunk/debugger/src/main/java/org/apache/pdfbox/debugger/treestatus/TreeStatus.java Wed Feb 14 13:16:22 2024
@@ -164,9 +164,8 @@ public final class TreeStatus
             node = node.trim();
             if (node.startsWith("["))
             {
-                node = node.replace("]", "").replace("[", "");
+                node = node.replace("]", "").replace("[", "").trim();
             }
-            node = node.trim();
             if (node.isEmpty())
             {
                 return null;

Modified: pdfbox/trunk/examples/src/test/java/org/apache/pdfbox/examples/pdfa/CreatePDFATest.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/examples/src/test/java/org/apache/pdfbox/examples/pdfa/CreatePDFATest.java?rev=1915784&r1=1915783&r2=1915784&view=diff
==============================================================================
--- pdfbox/trunk/examples/src/test/java/org/apache/pdfbox/examples/pdfa/CreatePDFATest.java (original)
+++ pdfbox/trunk/examples/src/test/java/org/apache/pdfbox/examples/pdfa/CreatePDFATest.java Wed Feb 14 13:16:22 2024
@@ -103,7 +103,7 @@ class CreatePDFATest
             {
                 continue;
             }
-            if (line.matches("^\\d+ 0 obj$"))
+            if (line.matches("\\d+ 0 obj"))
             {
                 int pos = line.indexOf(" 0 obj");
                 line = line.substring(0, pos);

Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/common/function/type4/InstructionSequenceBuilder.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/common/function/type4/InstructionSequenceBuilder.java?rev=1915784&r1=1915783&r2=1915784&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/common/function/type4/InstructionSequenceBuilder.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/common/function/type4/InstructionSequenceBuilder.java Wed Feb 14 13:16:22 2024
@@ -17,7 +17,7 @@
 package org.apache.pdfbox.pdmodel.common.function.type4;
 
 import java.util.Stack;
-import java.util.regex.Matcher;
+import java.util.function.Predicate;
 import java.util.regex.Pattern;
 
 /**
@@ -26,8 +26,8 @@ import java.util.regex.Pattern;
  */
 public final class InstructionSequenceBuilder extends Parser.AbstractSyntaxHandler
 {
-    private static final Pattern INTEGER_PATTERN = Pattern.compile("[\\+\\-]?\\d+");
-    private static final Pattern REAL_PATTERN = Pattern.compile("[\\-]?\\d*\\.\\d*([Ee]\\-?\\d+)?");
+    private static final Predicate<String> MATCHES_INTEGER = Pattern.compile("[\\+\\-]?\\d+").asMatchPredicate();
+    private static final Predicate<String> MATCHES_REAL = Pattern.compile("[\\-]?\\d*\\.\\d*([Ee]\\-?\\d+)?").asMatchPredicate();
 
     private final InstructionSequence mainSequence = new InstructionSequence();
     private final Stack<InstructionSequence> seqStack = new Stack<>();
@@ -86,15 +86,13 @@ public final class InstructionSequenceBu
         }
         else
         {
-            Matcher m = INTEGER_PATTERN.matcher(token);
-            if (m.matches())
+            if (MATCHES_INTEGER.test(token))
             {
                 getCurrentSequence().addInteger(parseInt(token));
                 return;
             }
 
-            m = REAL_PATTERN.matcher(token);
-            if (m.matches())
+            if (MATCHES_REAL.test(token))
             {
                 getCurrentSequence().addReal(parseReal(token));
                 return;

Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/annotation/handlers/PDFreeTextAppearanceHandler.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/annotation/handlers/PDFreeTextAppearanceHandler.java?rev=1915784&r1=1915783&r2=1915784&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/annotation/handlers/PDFreeTextAppearanceHandler.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/annotation/handlers/PDFreeTextAppearanceHandler.java Wed Feb 14 13:16:22 2024
@@ -53,7 +53,7 @@ public class PDFreeTextAppearanceHandler
     private static final Logger LOG = LogManager.getLogger(PDFreeTextAppearanceHandler.class);
 
     private static final Pattern COLOR_PATTERN =
-            Pattern.compile(".*color\\:\\s*\\#([0-9a-fA-F][0-9a-fA-F][0-9a-fA-F][0-9a-fA-F][0-9a-fA-F][0-9a-fA-F]).*");
+            Pattern.compile(".*color\\:\\s*\\#([0-9a-fA-F]{6}).*");
 
     private float fontSize = 10;
     private COSName fontName = COSName.HELV;

Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/annotation/layout/PlainText.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/annotation/layout/PlainText.java?rev=1915784&r1=1915783&r2=1915784&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/annotation/layout/PlainText.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/annotation/layout/PlainText.java Wed Feb 14 13:16:22 2024
@@ -50,7 +50,7 @@ public class PlainText
      */
     public PlainText(String textValue)
     {
-        String[] parts = textValue.replace('\t', ' ').split("\\r\\n|\\n|\\r|\\u2028|\\u2029");
+        String[] parts = textValue.replace('\t', ' ').split("\\R");
         paragraphs = new ArrayList<>(parts.length);
         for (String part : parts)
         {

Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/form/PlainText.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/form/PlainText.java?rev=1915784&r1=1915783&r2=1915784&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/form/PlainText.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/form/PlainText.java Wed Feb 14 13:16:22 2024
@@ -57,7 +57,7 @@ class PlainText
         }
         else
         {
-            String[] parts = textValue.replace('\t', ' ').split("\\r\\n|\\n|\\r|\\u2028|\\u2029");
+            String[] parts = textValue.replace('\t', ' ').split("\\R");
             paragraphs = new ArrayList<>(parts.length);
             for (String part : parts)
             {