Immagini miniature/icone pagine PDF

di il
43 risposte

43 Risposte - Pagina 2

  • Re: Immagini miniature/icone pagine PDF

    La faccio semplice semplice. Come popolare una listview collegata ad una imagelist, con immagini formato jpg (non icone del file) ma miniature dell'immagine jpg, già contebute in una cartella.
  • Re: Immagini miniature/icone pagine PDF

    Giuseppe1974 ha scritto:


    Ho provato a sostituirla con altre espressioni, ma al limite mi da solo i nomi dei file.
    Ecco, se fai dei tentativi, a meno che non siano totalmente campati per aria, nulla vieta di riportarli qui e spiegare il motivo: in questo modo, si può capire il passaggio, spiegare dov'è l'errore e proporre una soluzione, al codice e/o al ragionamento, che poi porta sempre a correggere il codice.

    E' ovvio che se stai facendo tentativi del tutto casuali e scollegati da qualsivoglia logica, le combinazioni sono infinite e questo rende difficile fornire un semplice aiuto che non sia il codice pronto all'uso.

    Tornando al problema, tu hai a disposizione il nome/percorso del file che dovresti caricare... a questo punto, ti basta fare una ricerca per vedere come - usando le classi del .NET Framework - si può caricare un file JPEG in memoria a partire dal suo percorso. Io ci ho provato, e ho trovato .

    Ciao!
  • Re: Immagini miniature/icone pagine PDF

    ... concordo con Alka ... e aggiungo che ovviamente non ne troverai uno dove c'è scritto

    per Giuseppe1974

    ma dovrai studiarli tutti adattandoli fino a quando non riuscirai.
  • Re: Immagini miniature/icone pagine PDF

    Giuseppe1974 ha scritto:


    La faccio semplice semplice. Come popolare una listview collegata ad una imagelist, con immagini formato jpg (non icone del file) ma miniature dell'immagine jpg, già contebute in una cartella.
    Concordo con quello scritto dai miei colleghi.
    Come facciamo ad aiutarti se non ci mostri almeno un po' di codice così lo proviamo e vediamo dov'è il problema ??
  • Re: Immagini miniature/icone pagine PDF

    Ciao ragazzi..
      Dim path As String = "C:\Users\HP\Desktop\RAMONKIA"
                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(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
    ho impostato la listview così:
    -visualizzazione: largeicon
    -imagelist per larceicon e smallicon: imagelist1
    il risultato è che mi popola la listview con i nomi di file.
  • Re: Immagini miniature/icone pagine PDF

    Per oregon:
     Dim f As New SautinSoft.PdfFocus()
    
            ' This property is necessary only for registered version
            ' f.Serial = "XXXXXXXXXXX"
            Dim pdfFile As String = "C:\Users\HP\Desktop\RAMONKIA\prova.pdf"
            Dim jpegDir As String = Path.GetDirectoryName(pdfFile)
    
            f.OpenPdf(pdfFile)
    
            If f.PageCount > 0 Then
                ' Set image properties: Jpeg, 200 dpi
                f.ImageOptions.ImageFormat = System.Drawing.Imaging.ImageFormat.Jpeg
                f.ImageOptions.Dpi = 200
    
                ' Set 95 as JPEG quality
                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))
    
                    ' 0 - converted successfully
                    ' 2 - can't create output file, check the output path
                    ' 3 - conversion failed
                    Dim result As Integer = f.ToImage(jpegFile, page)
    
                    ' Show only 1st page
                    If page = 1 AndAlso result = 0 Then
                        System.Diagnostics.Process.Start(jpegFile)
                    End If
                Next page
            End If
        End Sub
    questa è la sub che ho trovato per trasformare ogni singola pagina del file .pdf in un file .jpg..
    scaricato tramite Nuget. l'unica pecca è che lascia l'intestazione della società e l'invito di comprare la licenza per eliminare la fastidiosa scritta rossa. a per me va bene visto che le figure dovrò rimpicciolirle e dovranno essere solo un'indicazione....
  • Re: Immagini miniature/icone pagine PDF

    Giuseppe1974 ha scritto:


    ho impostato la listview così:
    -visualizzazione: largeicon
    -imagelist per larceicon e smallicon: imagelist1
    il risultato è che mi popola la listview con i nomi di file.
    Stai usando la proprietà ImageKey: come da documentazione, si tratta della chiave associata all'immagine che deve essere visualizzata per l'elemento.

    Questo presuppone che, quando aggiungi una immagine al componente ImageList, tu debba assegnare all'immagine anche la chiave.

    Questo nel tuo codice non avviene, quindi è normale che il controllo ListView, quando cerca l'immagine usando come chiave il nome del file, non trovi nulla e ti faccia vedere un bello spazio bianco.

    Devi usare la versione del metodo che ti consente di aggiungere le immagini al componente ImageList specificando anche la chiave, quindi devi usare il corretto overload del metodo Add(), come da documentazione.

    Giuseppe1974 ha scritto:


    l'unica pecca è che lascia l'intestazione della società e l'invito di comprare la licenza per eliminare la fastidiosa scritta rossa.
    a per me va bene visto che le figure dovrò rimpicciolirle e dovranno essere solo un'indicazione....
    Anche se la "scritta rossa" non ti infastidisce per l'uso che ne fai all'interno del tuo programma, sappi che continuare a usare comunque quella libreria è illegale poiché molto probabilmente stai violando la licenza d'uso.
  • Re: Immagini miniature/icone pagine PDF

    Grazie. Per sono di servzio fuori a far rispettare i divieti.Appena posso mi dedicherò un po a rissolvere il problema grazie ai tuoi consigli. Mi aiuterà a superare questo terribile momento. Grazie e coraggio ragazzi.
  • Re: Immagini miniature/icone pagine PDF

    Cercherò altro per la conversione. In ogni caso lwggerò meglio le condizioni d'uso. In ogni caso ciò chw realizzo lo uso solo io per fini si studio.
  • Re: Immagini miniature/icone pagine PDF

    Finalmente la listview si popola cone volevo.
    ecco il codice realizzato col vostro aiuto:
      Dim path As String = "C:\Users\HP\Desktop\RAMONKIA"
                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
    Ora sto cercando di ingrandire le icone se possibile.
    vi aggiorno!!
  • Re: Immagini miniature/icone pagine PDF

    Risolto bastava cambiare le misure nella proprietà ImmageSize della ImageList..
  • Re: Immagini miniature/icone pagine PDF

    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.
  • Re: Immagini miniature/icone pagine PDF

    I thread non c'entrano nulla.

    Probabilmente è il componente SautinSoft.PdfFocus() che tiene aperti i file .jpg. Dopo aver fatto la OpenPdf e creato i jpg, penso si debba fare una ClosePdf o qualcosa del genere (dato che non conosco il componente sto inventando ...)
  • Re: Immagini miniature/icone pagine PDF

    Ok. Oregon. Mi metto al lavoro.
  • Re: Immagini miniature/icone pagine PDF

    Niente da fare oregon.
    ho utilizzato il metodo " f.ClosePdf() " ma il problema rimane.
    poi riflettendoci, il problema è centrato sul file .jpg e non sul .pdf che rimarebbe aperto.

    eccezione irritante...mannaggia!!!!
Devi accedere o registrarti per scrivere nel forum
43 risposte