Eliminare i dati immagine da un file PDF
Per eliminare una o più immagini, mostrate in un documento di formato PDF, si dovranno eliminare i relativi byte-dati immagine presenti nel file di quel documento PDF. [nota 1]
I byte-dati immagine (che hanno inizio dopo la strnga: "\n>>\nstream\n", ossia dopo i byte: 0A 3E 3E 0A 73 74 72 65 61 6D 0A) sono preceduti da altri byte-dati che hanno inizio con la stringa "obj\n<<\n" (più precisamente con i byte: 6F 62 6A 0A 3C 3C 0A) e terminano con la stringa "\nendstream\nendobj\n" (più precisamente con i byte: 0A 65 6E 64 73 74 72 65 61 6D 0A 65 6E 64 6F 62 6A 0A).
Pertanto si dovranno eliminare tutti i byte-dati dal primo carattere della stringa "obj\n<<" fino all'ultimo carattere della stringa "\nendstream\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 documento PDF, è sufficiente cancellare la parola "Image" dai byte-dai del file PDF del documento. Ovviamente, però, così resteranno nel file PDF i byte-dati dell'immagine, mantenendo l'ingombro della sua dimensione in byte.