Differenze tra le versioni di "Stampare un file con le funzioni del API di cups"

Da Gambas-it.org - Wikipedia.
Riga 9: Riga 9:
 
   
 
   
 
  Library "libcups:2"
 
  Library "libcups:2"
 +
 +
<FONT color=gray>' ''int cupsGetDests(cups_dest_t **dests)''</font>
 +
'''Private''' Extern cupsGetDests(dests As Pointer) As Integer
 
   
 
   
 
  <FONT color=gray>' ''int cupsPrintFile(const char *printer, const char *filename, const char *title, int num_options, cups_option_t *options)''</font>
 
  <FONT color=gray>' ''int cupsPrintFile(const char *printer, const char *filename, const char *title, int num_options, cups_option_t *options)''</font>
Riga 16: Riga 19:
 
  '''Public''' Sub Main()
 
  '''Public''' Sub Main()
 
   
 
   
   Dim err As Integer
+
   Dim stampante As String
 +
  Dim num_dests, err As Integer
 +
 +
 +
  num_dests = cupsGetDests(VarPtr(p))
 +
 +
  Print "Sono state riscontrate installate nel sistema num. "; num_dests; " stampanti.\n"
 
   
 
   
 +
<FONT color=gray>' ''Dereferenziando la variabile di tipo "Puntatore" si ottiene il nome della stampante,''
 +
' ''ovvero, qualora ve ne siano installate più di una, il nome della prima.''
 +
' ''In particolare tale nome è uguale a quello del file .ppd afferente alla stampante,''
 +
' ''presente nella cartella "/etc/cups/ppd" e privo della sua estensione.''
 +
' ''Il nome della stampante andrà passato, come primo argomento, alla funzione "cupsPrintFile()".</font>
 +
  stampante = String@(Pointer@(p))
 
   
 
   
<FONT color=gray>' ''Nel primo argomento va inserito il nome della stampante che dovrà stampare il file.''
+
   err = cupsPrintFile(stampante, "<FONT color=gray>''percorso/del/file/da/stampare/''</font>", "Testo qualsiasi", 0, Null)
' ''Tale nome è uguale a quello del file .ppd afferente alla stampante,''
 
' ''presente nella cartella "/etc/cups/ppd" e privo della sua estensione:''</font>
 
   err = cupsPrintFile("<FONT color=gray>''nome-della-stampante''</font>", "<FONT color=gray>''percorso/del/file/da/stampare/''</font>", "Testo qualsiasi", 0, Null)
 
 
   if err = 0 then Error.Raise("Stampa del file fallita !")
 
   if err = 0 then Error.Raise("Stampa del file fallita !")
 
   
 
   
 
  '''End'''
 
  '''End'''

Versione delle 12:24, 10 nov 2013

Per stampare un file con le funzioni esterne del API di Cups, e dunque senza l'uso della Classe Printer, bisognerà richiamare l'attuale libreria esterna: libcups.so.2 .


Mostriamo di seguito un semplice e breve codice per stampare un solo file:

Public Struct Cups_option_s     ' Opzioni di stampa
  name As Pointer               ' Nome dell'opzione
  value As Pointer	        ' Valore dell'opzione
End Struct

Library "libcups:2"

' int cupsGetDests(cups_dest_t **dests)
Private Extern cupsGetDests(dests As Pointer) As Integer

' int cupsPrintFile(const char *printer, const char *filename, const char *title, int num_options, cups_option_t *options)
Private Extern cupsPrintFile(stampante As String, nomefile As String, titolo As String, num_opzioni As Integer, opzioni As Cups_option_s) As Integer


Public Sub Main()

 Dim stampante As String
 Dim num_dests, err As Integer


  num_dests = cupsGetDests(VarPtr(p))

  Print "Sono state riscontrate installate nel sistema num. "; num_dests; " stampanti.\n"

' Dereferenziando la variabile di tipo "Puntatore" si ottiene il nome della stampante,
' ovvero, qualora ve ne siano installate più di una, il nome della prima.
' In particolare tale nome è uguale a quello del file .ppd afferente alla stampante,
' presente nella cartella "/etc/cups/ppd" e privo della sua estensione.
' Il nome della stampante andrà passato, come primo argomento, alla funzione "cupsPrintFile()".
  stampante = String@(Pointer@(p))

  err = cupsPrintFile(stampante, "percorso/del/file/da/stampare/", "Testo qualsiasi", 0, Null)
  if err = 0 then Error.Raise("Stampa del file fallita !")

End