Autore Topic: [Risolto] Scanner  (Letto 1062 volte)

Offline dex

  • Gran Maestro dei Gamberi
  • *****
  • Post: 872
    • Mostra profilo
[Risolto] Scanner
« il: 05 Aprile 2020, 23:22:37 »
Ciao Raga
Ho estrapolato la demo scanner di Fabien Bodard e creato un piccolo progetto
ho fatto anche alcune modifiche a delle variabili che non venivano settate
il progetto funziona ma salva solo in jpg

allego il progetto, magari passa di qui qualcuno e lo modifica per farlo salvare anche in pdf  ;D

magari passa un certo Pierluigi   :-\  :-[
« Ultima modifica: 07 Aprile 2020, 22:46:24 da dex »

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.724
  • Ne mors quidem nos iunget
    • Mostra profilo
Re:Scanner
« Risposta #1 il: 06 Aprile 2020, 00:19:03 »
..... per farlo salvare anche in pdf

magari passa un certo Pierluigi

Per ora passa un certo vuott  che ti suggerisce di usare le risorse del Componente gb.cairo.

Esempio pratico (attivare i Componenti gb.cairo, gb.image e gb.image.io):
Codice: [Seleziona]
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.
« Ultima modifica: 06 Aprile 2020, 01:15:32 da vuott »
« Chiunque, non ricorrendo lo stato di necessità, nel proprio progetto Gambas fa uso delle istruzioni Shell o Exec, è punito con la sanzione pecuniaria da euro 20,00 a euro 60,00. »

Offline Gianluigi

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 4.244
  • Tonno verde
    • Mostra profilo
Re:Scanner
« Risposta #2 il: 06 Aprile 2020, 12:02:03 »
magari passa un certo Pierluigi   :-\  :-[

 >:(
nuoto in attesa del bacio di una principessa che mi trasformi in un gambero azzurro

Offline Gianluigi

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 4.244
  • Tonno verde
    • Mostra profilo
Re:Scanner
« Risposta #3 il: 06 Aprile 2020, 14:53:18 »

allego il progetto, magari passa di qui qualcuno e lo modifica per farlo salvare anche in pdf  ;D


Siccome con gb.form.print inizialmente ci ero cascato, ti faccio notare che nella finestra anteprima di stampa se clicchi sul pulsante col nome della stampante oltre a poter scegliere altre eventuali stampanti puoi scegliere la stampa su file PDF.
Ci eravamo abituati alle schede nell'anteprima di gb.report2 più intuitive...  :-\
È stato Benoit a decidere che così è meglio e siccome lui è il capo...

 :ciao:

PS: Per evitare possibili conflitti, puoi tradurre le scritte della form di Fabien andando su Progetto > Proprietà > Opzioni e fai lo switch su Il progetto è traducibile e quindi clicchi sul pulsante con bandiera blu.
Per le scritte nel codice che non dovessero apparire nel traduttore ti basta inserire le scritte, virgolette comprese, tra parentesi tonde.
« Ultima modifica: 06 Aprile 2020, 15:02:17 da Gianluigi »
nuoto in attesa del bacio di una principessa che mi trasformi in un gambero azzurro

Offline dex

  • Gran Maestro dei Gamberi
  • *****
  • Post: 872
    • Mostra profilo
Re:Scanner
« Risposta #4 il: 06 Aprile 2020, 19:37:14 »
Ottimo vuott  :ok:

Ultimamente "Pierluigi" è un po reticente con me  :-\

Chissa perché  ;D

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.724
  • Ne mors quidem nos iunget
    • Mostra profilo
Re:Scanner
« Risposta #5 il: 06 Aprile 2020, 20:03:20 »
Ultimamente "Pierluigi" è un po reticente con me
Ma hai verificato e provato quel che nel suo ultimo post ti ha detto ?



Chissa perché  ;D
Spero lui stia impegnato nella realizzazione della macchina del Tempo.   :coder:
« Chiunque, non ricorrendo lo stato di necessità, nel proprio progetto Gambas fa uso delle istruzioni Shell o Exec, è punito con la sanzione pecuniaria da euro 20,00 a euro 60,00. »

Offline dex

  • Gran Maestro dei Gamberi
  • *****
  • Post: 872
    • Mostra profilo
Re:Scanner
« Risposta #6 il: 07 Aprile 2020, 12:42:20 »
Ultimamente "Pierluigi" è un po reticente con me
Codice: [Seleziona]
Ma hai verificato e provato quel che nel suo ultimo post ti ha detto ?

non ho verificato, sapevo gia di questa possibilità è quella che sto usando, solo che a me serve fare un salvataggio automatico in pdf direttamente in un percorso prestabilito.
per questo sto studiando altre soluzioni

Offline dex

  • Gran Maestro dei Gamberi
  • *****
  • Post: 872
    • Mostra profilo
Re:Scanner
« Risposta #7 il: 07 Aprile 2020, 13:15:34 »

Chissa perché  ;D
Spero lui stia impegnato nella realizzazione della macchina del Tempo.   :coder:
[/quote]

Magari.... mi prenoto per il primo viaggio  :D

Offline dex

  • Gran Maestro dei Gamberi
  • *****
  • Post: 872
    • Mostra profilo
Re:Scanner
« Risposta #8 il: 07 Aprile 2020, 14:39:25 »
Vuott cairo funziona, non ho attivato gb.image.io in quanto andava in conflitto con gb.qt4, ma funziona lo stesso

Codice: [Seleziona]
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?
« Ultima modifica: 07 Aprile 2020, 14:40:38 da dex »

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.724
  • Ne mors quidem nos iunget
    • Mostra profilo
Re:Scanner
« Risposta #9 il: 07 Aprile 2020, 19:14:42 »
... non ho attivato gb.image.io in quanto andava in conflitto con gb.qt4
Io ho dovuto nel mio esempio attivare il Componente gb.image.io, in quanto l'esempio era a linea di comando (programma non grafico).
« Chiunque, non ricorrendo lo stato di necessità, nel proprio progetto Gambas fa uso delle istruzioni Shell o Exec, è punito con la sanzione pecuniaria da euro 20,00 a euro 60,00. »

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.724
  • Ne mors quidem nos iunget
    • Mostra profilo
Re:Scanner
« Risposta #10 il: 07 Aprile 2020, 20:00:05 »
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:
Codice: [Seleziona]
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
« Ultima modifica: 07 Aprile 2020, 20:04:39 da vuott »
« Chiunque, non ricorrendo lo stato di necessità, nel proprio progetto Gambas fa uso delle istruzioni Shell o Exec, è punito con la sanzione pecuniaria da euro 20,00 a euro 60,00. »

Offline dex

  • Gran Maestro dei Gamberi
  • *****
  • Post: 872
    • Mostra profilo
Re:Scanner
« Risposta #11 il: 07 Aprile 2020, 22:46:03 »
Ottimo

Grazie vuott ora è completo

allego il programma se dovesse servire ad altri