Author: msahyoun
Date: Fri Apr 10 09:30:05 2026
New Revision: 1932952

Log:
PDFBOX-5660: close FDFDocument in case of Exception

Modified:
   
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/form/PDAcroForm.java

Modified: 
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/form/PDAcroForm.java
==============================================================================
--- 
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/form/PDAcroForm.java
        Fri Apr 10 09:20:42 2026        (r1932951)
+++ 
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/form/PDAcroForm.java
        Fri Apr 10 09:30:05 2026        (r1932952)
@@ -152,24 +152,32 @@ public final class PDAcroForm implements
     public FDFDocument exportFDF() throws IOException
     {
         FDFDocument fdf = new FDFDocument();
-        FDFCatalog catalog = fdf.getCatalog();
-        FDFDictionary fdfDict = new FDFDictionary();
-        catalog.setFDF(fdfDict);
-
-        List<PDField> fields = getFields();
-        List<FDFField> fdfFields = new ArrayList<>(fields.size());
-        for (PDField field : fields)
+        try
         {
-            fdfFields.add(field.exportFDF());
-        }
+            FDFCatalog catalog = fdf.getCatalog();
+            FDFDictionary fdfDict = new FDFDictionary();
+            catalog.setFDF(fdfDict);
 
-        fdfDict.setID(document.getDocument().getDocumentID());
+            List<PDField> fields = getFields();
+            List<FDFField> fdfFields = new ArrayList<>(fields.size());
+            for (PDField field : fields)
+            {
+                fdfFields.add(field.exportFDF());
+            }
 
-        if (!fdfFields.isEmpty())
+            fdfDict.setID(document.getDocument().getDocumentID());
+
+            if (!fdfFields.isEmpty())
+            {
+                fdfDict.setFields(fdfFields);
+            }
+            return fdf;
+        }
+        catch (Exception e)
         {
-            fdfDict.setFields(fdfFields);
+            fdf.close();
+            throw e;
         }
-        return fdf;
     }
 
     /**

Reply via email to