[ 
https://issues.apache.org/jira/browse/PDFBOX-6120?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=18045130#comment-18045130
 ] 

Théo Lenoble commented on PDFBOX-6120:
--------------------------------------

Ok, may be there is something different in our scenario that interfer ...


Don't know if it could be revelant but our method take a byte array in entry 
and we use java tempFile to interact with PreflightParser.
If you don't reproduce with that then it must be something else on our side, 
but strange that the only solution we found was with our extending class ^^"

```java
public static boolean estPDFA(byte[] data, String fileName) throws IOException {
 
String extension = getExtension(fileName);
 if ( data == null || extension == null || !extension.equalsIgnoreCase(PDF) ) {
  return false;
 }
// create a temporary file from our byte array
File tmpFile = File.createTempFile("gedMetierEstPDFA", fileName);
 try (FileOutputStream outputStream = new FileOutputStream(tmpFile)) {
  outputStream.write(data);
 }


try {
  result = PreflightParser.validate(tmpFile);
 } catch (IOException e) {
  logger.warn("PreflightParser Error (" + fileName + "): " + e.getMessage());
 } finally {
  boolean isDeleted = tmpFile.delete();
  logger.warn("Delete file response : " + isDeleted);
 }
// ...
```

> PreflightParser .validate leads to "Too many open files"
> --------------------------------------------------------
>
>                 Key: PDFBOX-6120
>                 URL: https://issues.apache.org/jira/browse/PDFBOX-6120
>             Project: PDFBox
>          Issue Type: Bug
>          Components: Preflight
>    Affects Versions: 3.0.6 PDFBox
>            Reporter: Théo Lenoble
>            Priority: Major
>
> Hi from France,
> Hope my english will be clear enough to explain what we encounter :D
> We use org.apache.pdfbox:preflight:3.0.6, calling static method 
> PreflightParser.validate we encounter "Too many open files" issues.
> We solved it locally by extending PreflightParser, implementing Closeable 
> interface and overriding validate function.
> Exemple of our solution :
> {code:java}
> public class CustomPreflightParser extends PreflightParser implements 
> Closeable {
>   public static ValidationResult validate(File file) throws IOException {
>     ValidationResult result;
>     try(
>       // we move PreflightParser initialisation here
>       CustomPreflightParser parser = new CustomPreflightParser(file);
>       PreflightDocument document = (PreflightDocument) parser.parse()
>     ) {
>       result = document.validate();
>     }
>     catch (SyntaxValidationException e)
>     {
>       result = e.getResult();
>     }
>     return result;
>   }
>   @Override
>   public void close() {
>     IOUtils.closeQuietly( this.source );
>     IOUtils.closeQuietly( this.document );
>     // May be missing close ressources, seems to be enought for us
>   }
> }
> {code}
> We didn't spend more time on it so may be there is a better solution ?
> We wanted to share it with you in case you validate the issue and provide a 
> proper fix.
> And may be it could help other to avoid having the same issue (or have a 
> quick imperfect solution).
> Hope this could help :)
> Regards,
> Théo Lenoble



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to