From 6aec4fba68b864ed8f36a789a803cfbdfd2e265b Mon Sep 17 00:00:00 2001 From: "valery.bokov" Date: Sat, 13 Dec 2025 18:50:16 +0100 Subject: [PATCH] improve parsing speed for PDFMergerUtility.acroFormLegacyMode method --- .../java/org/apache/pdfbox/multipdf/PDFMergerUtility.java | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/pdfbox/src/main/java/org/apache/pdfbox/multipdf/PDFMergerUtility.java b/pdfbox/src/main/java/org/apache/pdfbox/multipdf/PDFMergerUtility.java index 363ae7ea32d..ef2dd97681a 100644 --- a/pdfbox/src/main/java/org/apache/pdfbox/multipdf/PDFMergerUtility.java +++ b/pdfbox/src/main/java/org/apache/pdfbox/multipdf/PDFMergerUtility.java @@ -29,6 +29,7 @@ import java.util.List; import java.util.Map; import java.util.Set; +import java.util.regex.Pattern; import org.apache.logging.log4j.Logger; import org.apache.logging.log4j.LogManager; @@ -92,6 +93,8 @@ public class PDFMergerUtility */ private static final Logger LOG = LogManager.getLogger(PDFMergerUtility.class); + private static final Pattern pattern = Pattern.compile("\\d+"); + private final List sources; private String destinationFileName; private OutputStream destinationStream; @@ -1302,7 +1305,7 @@ private void acroFormLegacyMode(PDFCloneUtility cloner, PDAcroForm destAcroForm, if (fieldName != null && fieldName.startsWith(prefix)) { String suffix = fieldName.substring(prefixLength); - if (suffix.matches("\\d+")) + if (pattern.matcher(suffix).find()) { nextFieldNum = Math.max(nextFieldNum, Integer.parseInt(suffix) + 1); }