Non serve che chiudi il fis anche nella classe PDF, anzi è sbagliato: e se lo stream ti servisse per una operazione successiva? alla classe questo non importa ( e non puo saperlo) percio è bene che se gli arriva uno stream in input si limiti ad usarlo senza chiuderlo. Peraltro quando proverai a richiuderlo nella starter "credo" ti solleverà un eccezione.
Poi un altra cosa: se apri e chiudi il db ad ogni ciclo sottoponi il programma (e potenzialmente anche la GC) ad un sovraccarico inutile. Aprilo prima e chiudilo solo dopo il FOR.