Differenze tra le versioni di "Estrarre i dati video da un file PDF"

Da Gambas-it.org - Wikipedia.
Riga 5: Riga 5:
 
   
 
   
 
   Dim s, id As String
 
   Dim s, id As String
   Dim n, i As Integer
+
   Dim asf, avi, mov, mp4, n, i As Integer
 
    
 
    
 
   s = File.Load("<FONT Color=gray>''/percorso/del/file.pdf''</font>")
 
   s = File.Load("<FONT Color=gray>''/percorso/del/file.pdf''</font>")
Riga 11: Riga 11:
 
   n = InStr(s, "EmbeddedFile")
 
   n = InStr(s, "EmbeddedFile")
 
    
 
    
   i = InStr(s, "ftypisom", n)
+
   If InStr(s, "ftypmp42", n) > 0 Then mp4 = InStr(s, "ftypmp42", n)
   If InStr(s, "mp4", i) > 0 Then  
+
  If InStr(s, "ftypisom", n) * InStr(s, "mp41", InStr(s, "ftypisom", n)) > 0 Then mp4 = InStr(s, "ftypisom", n)
     i = i - 4
+
   If mp4 * InStr(s, "mp4", mp4) > 0 Then  
 +
     i = mp4 - 4
 
     id = "mp4"
 
     id = "mp4"
 
   Endif
 
   Endif
 
+
   i = InStr(s, "AVI", n)
+
   avi = InStr(s, "AVI LIST", n)
   If InStr(s, "AVI", n) * InStr(s, "AVI", --8) > 0 Then
+
   If avi > 0 Then
     i = i - 8
+
     i = avi - 8
 
     id = "avi"
 
     id = "avi"
 
   Endif
 
   Endif
Riga 29: Riga 30:
 
   Endif
 
   Endif
 
   
 
   
   n = RInStr(s, "Length", i)
+
   asf = InStr(s, "0&\xB2u\x8Ef\xCF\x11", n)
 +
  If asf > 0 Then
 +
    i = asf
 +
    id = "asf"
 +
  Endif
 +
 
  <FONT Color=gray>' ''Ottiene il valore della quantità dei dati video dichiarato nel file PDF:''</font>
 
  <FONT Color=gray>' ''Ottiene il valore della quantità dei dati video dichiarato nel file PDF:''</font>
 
   n = Val(Scan(Mid(s, n, i - n), "*Length * *")[1])
 
   n = Val(Scan(Mid(s, n, i - n), "*Length * *")[1])

Versione delle 15:55, 27 set 2023

Se un file PDF possiede dati video, questi possono essere raccolti per creare un file video indipendente.

Mostriamo un possibile codice, con il quale potranno essere raccolti i dati video, presenti nel file PDF, di formato AVI e MP4:

Public Sub Main()

 Dim s, id As String
 Dim asf, avi, mov, mp4, n, i As Integer
 
 s = File.Load("/percorso/del/file.pdf")
 
 n = InStr(s, "EmbeddedFile")
 
 If InStr(s, "ftypmp42", n) > 0 Then mp4 = InStr(s, "ftypmp42", n)
 If InStr(s, "ftypisom", n) * InStr(s, "mp41", InStr(s, "ftypisom", n)) > 0 Then mp4 = InStr(s, "ftypisom", n)
 If mp4 * InStr(s, "mp4", mp4) > 0 Then 
   i = mp4 - 4
   id = "mp4"
 Endif

 avi = InStr(s, "AVI LIST", n)
 If avi > 0 Then
   i = avi - 8
   id = "avi"
 Endif

 i = InStr(s, "ftypqt", n)
 If i > 0 Then 
   i = i - 4
   id = "mov"
 Endif

 asf = InStr(s, "0&\xB2u\x8Ef\xCF\x11", n)
 If asf > 0 Then 
   i = asf
   id = "asf"
 Endif

' Ottiene il valore della quantità dei dati video dichiarato nel file PDF:
 n = Val(Scan(Mid(s, n, i - n), "*Length * *")[1])

' Crea il file video:
 File.Save("/tmp/video." & id, Mid(s, i, n))

End