Salve ragazzi le due sub pubblicate su funzionano bene.
le riscrivo per descrivere un altro problema che mi si è presentato.
lo presento in questo topic perchè essendo le stesse sub possono aiutare qualcuno a cui si presenterà lo stesso problema.
allora ecco le due sub:
Public Sub TrasformaPdf(pdfFile As String)
My.Computer.FileSystem.CreateDirectory(TextPathDEL.Text & "\" & "TempDir")
Dim f As New SautinSoft.PdfFocus()
'---CREARE UNA DIRECTORY SE NON PRESENTE...
Dim jpegDir As String = TextPathDEL.Text & "\" & "TempDir"
'------------------------------------
f.OpenPdf(pdfFile)
If f.PageCount > 0 Then
f.ImageOptions.ImageFormat = System.Drawing.Imaging.ImageFormat.Jpeg
f.ImageOptions.Dpi = 200
f.ImageOptions.JpegQuality = 95
'Save all PDF pages to image folder, each file will have name Page 1.jpg, Page 2.jpg, Page N.jpg
For page As Integer = 1 To f.PageCount
Dim jpegFile As String = Path.Combine(jpegDir, String.Format("Page {0}.jpg", page))
Dim result As Integer = f.ToImage(jpegFile, page)
Next page
End If
End Sub
questa trasforma le singole pagine del .pdf in file jpg che salvo in una cartella
poi:
Sub PopolaLWJpg(Path As String)
Path = Path & "\" & "TempDir"
Try
For Each file In System.IO.Directory.GetFiles(Path)
If file.Contains(".jpg") = True Then
Dim list As New ListViewItem(IO.Path.GetFileNameWithoutExtension(file))
'ImageList1.Images.Add(file, Drawing.Icon.ExtractAssociatedIcon(file).ToBitmap)
ImageList1.Images.Add(file, System.Drawing.Image.FromFile(file))
list.ImageKey = file
list.SubItems.Add(file)
ListView1.Items.Add(list)
End If
Next
Catch ex As Exception
End Try
End Sub
e questa popola listview con le suddette immagini .jpg e fino a qua funziona bene...
una volta popolata la listview però tento di cancellare i file .jpg così da poter sfruttare la stessa cartella per ripopolare la listview con le pagine di un nuovo .pdf trasformate in jpg.
la cartella deve essere una sorta di cartella temporale che mi serve da contenitore dei file jpg che devono popolare la listview.
detto ciò quando lancio la sub sottostante per svuotare la cartella mi da dice: "System.IO.IOException: 'Il processo non può accedere al file 'Page 1.jpg' perché è in uso da un altro processo", dove 1.jpg è il primo file da eliminare.
Public Sub CancellaFileDir(Path As String)
Dim di As IO.DirectoryInfo = New IO.DirectoryInfo(Path)
For Each File As IO.FileInfo In di.GetFiles()
File.Delete()
Next
End Sub
ho letto qualcosa su i thread ma onestamente non sono riuscito a trovare una soluzione.
p.s. ho provato a cancellare i file aspettando anche un bel pò ma qualche process occupa il file in maniera permanente e vorrei capire come liberarlo.
ciao e grazie ragazzi.