..... per farlo salvare anche in pdf
magari passa un certo Pierluigi
Per ora passa un certo vuott (https://www.animatedimages.org/data/media/1682/animated-whistling-smiley-image-0001.gif) che ti suggerisce di usare le risorse del Componente gb.cairo.
Esempio pratico (attivare i Componenti gb.cairo, gb.image e gb.image.io):
Public Sub Main()
Dim pdf As CairoPdfSurface
Dim im As Image
' Specifica in "millimetri" la superficie grafica da creare per disegnarvi sopra:
pdf = New CairoPdfSurface("/percorso/dove/sarà/salvato/il/file.pdf", 210.0, 297.0)
' Inizia il disegno sulla superficie impostata:
Cairo.Begin(pdf)
' Viene caricata l'immagine JPG:
im = Image.Load("/percorso/del/file/immagine.jpg")
' Non imposta alcuna modifica scalare all'immagine jpg:
Cairo.Scale(1, 1)
' Imposta il margine superiore sinistro dell'immagine rispetto alla futura pagina PDF:
Cairo.Source = Cairo.ImagePattern(im, 0, 0)
' Fissa l'immagine jpg sulla superficie PDF:
Cairo.Paint
' Termina il disegno:
Cairo.End
End
Un'alternativa è stampare in pdf la scansione direttamente mediante la proprietà ".OutputFile" della Classe Printer.
Vuott cairo funziona, non ho attivato gb.image.io in quanto andava in conflitto con gb.qt4, ma funziona lo stesso
Dim sPath As String
Dim hImg As Image
Dim i As Integer
Dim pdf As CairoPdfSurface
sPath = User.home & "/temp/"
For i = 0 To $aImg.Max
pdf = New CairoPdfSurface(sPath & "file.pdf", 210.0, 297.0)
Cairo.Begin(pdf)
hImg = $aImg[i]
Cairo.Scale(1, 1)
Cairo.Source = Cairo.ImagePattern(hImg, 0, 0)
Cairo.Paint
Cairo.End
Next
mi crea il pdf
ora pero vorrei creare un pd a più pagine in base a quante immagini ci sono nell'array $aImg
come posso fare?
ora pero vorrei creare un pd a più pagine in base a quante immagini ci sono nell'array $aImg
come posso fare?
Bene, per creare un'altra pagina nel medesimo file PDF, è necessario utilizzare il Metodo "Cairo.ShowPage( )".
Detto Metodo va inserito dopo il Metodo "Cairo.Paint", che fa riferimento alla pagina precedente creata.
Poi, dopo il Metodo "Cairo.ShowPage( )" vanno inserite le righe di comando necessarie per caricare e fissare nella nuova pagina un'altra immagine.
Riprendendo così il mio precedente esempio, per creare un file PDF formato da 2 pagine avremo:
Public Sub Main()
Dim pdf As CairoPdfSurface
Dim im As Image
' Specifica in "millimetri" la superficie grafica da creare per disegnarvi sopra:
pdf = New CairoPdfSurface("/percorso/dove/sarà/salvato/il/file.pdf", 210.0, 297.0)
' Inizia il disegno sulla superficie impostata:
Cairo.Begin(pdf)
' Viene caricata l'immagine JPG:
im = Image.Load("/percorso/del/file/immagine.jpg")
' Non imposta alcuna modifica scalare all'immagine jpg:
Cairo.Scale(1, 1)
' Imposta il margine superiore sinistro dell'immagine rispetto alla futura pagina PDF:
Cairo.Source = Cairo.ImagePattern(im, 0, 0)
' Fissa l'immagine jpg sulla superficie PDF:
Cairo.Paint
' CREA UNA NUOVA PAGINA NEL FILE PDF:
Cairo.ShowPage()
' Viene caricata un'altra immagine JPG (o PNG):
im = Image.Load("/percorso/del/file/immagine.jpg")
' Non imposta alcuna modifica scalare alla nuova immagine:
Cairo.Scale(1, 1)
' Imposta il margine superiore sinistro della nuova immagine rispetto alla futura seconda pagina PDF:
Cairo.Source = Cairo.ImagePattern(im, 0, 0)
' Fissa la nuova immagine sulla superficie PDF:
Cairo.Paint
' Termina l'intera operazione:
Cairo.End
End