Italian [Risolto] [B4A] Visualizzare file PDF

Aldo's

Active Member
Licensed User
Buongiorno a tutti
Ho un centinaio di files PDF (già definiti e non mutabili nel numero)
Ho una lista dei files che ho messo su una CLV.
Scegliendo una voce della CLV vorrei che si vedesse il relativo PDF (che può essere di diverse pagine).
Se possibile non vorrei aprirlo con programmi esterni, ma in una pagina dedicata (con la possibilità di ritornare alla lista quando voglio).
Credo dovrei trovare una libreria che permette, all'interno di B4A, la visualizzazione dei files.
Potete, per favore, darmi due dritte su cosa cercare?
Grazie
 

udg

Expert
Licensed User
Longtime User
Buongiorno,
prova a cercare qualcosa tipo "pdf viewer" nel search box del sito. Ci sono diverse possibilità per le varie piattaforme; alcune sembrano recenti.
 

Aldo's

Active Member
Licensed User
La soluzione di cui avevo bisogno è molto facile e @udg mi ha sicuramento messo sulla strada giusta.
Ho scaricato e aggiunto al progetto la libreria PDFium
Ho inserito nella pagina desiderata un componente PDFView
Ho caricato il file nella PDFView con questo codice:
B4X:
    Dim cfg As Configurator = PDFView1.fromUri(File.DirInternal,sCanto)
    cfg.SetEventname("PDFium")
    cfg.autoSpacing(True).enableSwipe(True).pageSnap(True).swipeHorizontal(False).addOnErrorListener.addOnLoadCompleteListener.addOnPageChangeListener.addOnPageErrorListener.addOnTapListener.load

Grazie a tutti come sempre e a @udg in modo speciale.
 

Lucas Siqueira

Active Member
Licensed User
Longtime User
Buongiorno a tutti
Ho un centinaio di files PDF (già definiti e non mutabili nel numero)
Ho una lista dei files che ho messo su una CLV.
Scegliendo una voce della CLV vorrei che si vedesse il relativo PDF (che può essere di diverse pagine).
Se possibile non vorrei aprirlo con programmi esterni, ma in una pagina dedicata (con la possibilità di ritornare alla lista quando voglio).
Credo dovrei trovare una libreria che permette, all'interno di B4A, la visualizzazione dei files.
Potete, per favore, darmi due dritte su cosa cercare?
Grazie

B4X:
Sub OpenPDF(dirFile As String, nameFile As String)
    Try
        #If B4A
        ' Piattaforma: Android
        Dim provider As FileProvider
        provider.Initialize
        
        ' Copia il file nella directory condivisa
        Wait For (File.CopyAsync(dirFile, nameFile, provider.SharedFolder, nameFile)) Complete (Success As Boolean)
        Log("Android - Copia del file riuscita: " & Success)
        
        If Success = False Then
            Log("Android - Errore: impossibile copiare il file nella directory condivisa.")
            Return
        End If

        ' Configura l'Intent per aprire il PDF
        Dim docIntent As Intent
        docIntent.Initialize(docIntent.ACTION_VIEW, "")
        provider.SetFileUriAsIntentData(docIntent, nameFile)
        docIntent.SetType("application/pdf")
        docIntent.Flags = Bit.Or(1, 2) ' FLAG_GRANT_READ_URI_PERMISSION
        StartActivity(docIntent)
        
        #Else If B4I
        ' Piattaforma: iOS
        ' Controlla se il file esiste
        If File.Exists(dirFile, nameFile) = False Then
            Log("iOS - Errore: file PDF non trovato in " & dirFile & "/" & nameFile)
            Return
        End If

        ' Inizializza DocumentInteraction per aprire il PDF
        Dim docInteraction As DocumentInteraction
        docInteraction.Initialize("docInteraction", dirFile, nameFile)
        docInteraction.OpenFile(B4XPages.GetNativeParent(Me).RootPanel)
        Log("iOS - PDF aperto con successo.")
        
        #Else If B4J
        ' Piattaforma: Desktop
        ' Controlla se il file esiste
        If File.Exists(dirFile, nameFile) = False Then
            Log("B4J - Errore: file PDF non trovato in " & dirFile & "/" & nameFile)
            Return
        End If

        ' Apri il PDF utilizzando JFX
        Private fx As JFX
        fx.ShowExternalDocument(File.GetUri(dirFile, nameFile))
        Log("B4J - PDF aperto con successo.")
        #End If
    Catch
        Log("Errore durante l'apertura del PDF: " & LastException)
    End Try
End Sub
 
Last edited:
Top