Differenze tra le versioni di "Eliminare i dati immagine da un file PDF"

Da Gambas-it.org - Wikipedia.
(Creata pagina con "Per eliminare una o più immagini, mostrate in un file PDF, si dovranno eliminare i relativi dati immagine presenti in qual file. I dati immagine sono preceduti da altri dati...")
 
Riga 1: Riga 1:
Per eliminare una o più immagini, mostrate in un file PDF, si dovranno eliminare i relativi dati immagine presenti in qual file.
+
Per eliminare una o più immagini, mostrate in un file PDF, si dovranno eliminare i relativi byte-dati immagine presenti in qual file. <SUP>&#091;[[#Note|nota 1]]&#093;</sup>
  
I dati immagine sono preceduti da altri dati che hanno inizio con la stringa "obj\n<<" e terminano con la stringa "endstream\nendobj\n".
+
I byte-dati immagine sono preceduti da altri byte-dati che hanno inizio con la stringa "obj\n<<" e terminano con la stringa "endstream\nendobj\n".
<BR>Pertanto si dovranno eliminare tutti i dati dal primo carattere della stringa "obj\n<<" fino all'ultimo carattere della stringa "endstream\nendobj\n".
+
<BR>Pertanto si dovranno eliminare tutti i byte-dati dal primo carattere della stringa "obj\n<<" fino all'ultimo carattere della stringa "endstream\nendobj\n".
 
<BR>Vanno altresì eliminate le eventuali stringhe formate dalla parola "Image" seguita da un carattere solitamente maiuscolo.
 
<BR>Vanno altresì eliminate le eventuali stringhe formate dalla parola "Image" seguita da un carattere solitamente maiuscolo.
  
Riga 31: Riga 31:
 
   
 
   
 
  End
 
  End
 +
 +
 +
 +
=Note=
 +
[1] In vero per non far apparire un'immagine sulla superficie grafica di un file PDF, è sufficiente cancellare la parola "Image" dai byte-dai del file medesimo. Ovviamente, però, così resteranno nel file PDF i byte-dati dell'immagine, mantenendo l'ingombro della sua dimensione in byte.

Versione delle 18:20, 26 set 2023

Per eliminare una o più immagini, mostrate in un file PDF, si dovranno eliminare i relativi byte-dati immagine presenti in qual file. [nota 1]

I byte-dati immagine sono preceduti da altri byte-dati che hanno inizio con la stringa "obj\n<<" e terminano con la stringa "endstream\nendobj\n".
Pertanto si dovranno eliminare tutti i byte-dati dal primo carattere della stringa "obj\n<<" fino all'ultimo carattere della stringa "endstream\nendobj\n".
Vanno altresì eliminate le eventuali stringhe formate dalla parola "Image" seguita da un carattere solitamente maiuscolo.

Per ottenere quanto sopra, può essere adottato il seguente codice:

Public Sub Main()

 Dim s As String
 Dim i, n As Integer

 s = File.Load("/percorso/del/file.pdf")

 While InStr(s, "Image") > 0
   i = InStr(s, "Image")

' Se sono anche presenti una o più parole "Image" seguite da un carattere, le elimina:
   If Not IsPunct(Mid(s, i + 5, 1)) Then
     Mid(s, i, 6) = Null
     Continue 
   Endif 

   i = RInStr(s, "obj\n<<", i)
   n = InStr(s, "endstream\nendobj\n", i)
   s = Replace(s, Mid(s, i, n - i + 19), Null)
 Wend

' Salva il nuovo file PDF privo ora di immagini:"
 File.Save("/tmp/senzaimmagini.pdf", s)

End


Note

[1] In vero per non far apparire un'immagine sulla superficie grafica di un file PDF, è sufficiente cancellare la parola "Image" dai byte-dai del file medesimo. Ovviamente, però, così resteranno nel file PDF i byte-dati dell'immagine, mantenendo l'ingombro della sua dimensione in byte.