Newsgroup: it.comp.lang.vo-clipper
Titolo: Stampa di file PDF

Salve a tutti,
ho un esigenza un pò particolare, ed é quella di stampare dei documenti
Acrobat Reader (PDF) direttamente da un applicativo VO 2.6.
In sintesi, si tratterebbe di individuare i file (PDF) interessati ed
inviarli direttamente ad una stampante tra quelle definite nel pannello di
controllo, senza necessita di visualizzarli o di trattarli in alcuna
maniera, ma solo stamparli.
Ritengo che la strada da percorrere sia quella di utilizzare le API di
Windows oppure un OCX.
C'é qualcuno che ha già fatto questo tipo di esperienza o ritenga di
potermi dare dei suggerimenti ?

 ha scritto nel messaggio
news:119wa.116170$iy5.3...@twister2.libero.it...


Grazie Danilo per il suggerimento, ho provato un file TXT e funziona, un
file WORD e funziona ma quando ho provato con il file PDF non succede
nulla. Ho tentato di capire qualche cosa ed ho visto dal task manager che
il sw di acrobat (AcroRd32.exe) veniva caricato in memoria e li rimaneva
senza eseguire nulla. Ti viene mica in mente qualche cosa ?
Mario Arienti 


 senza eseguire nulla. Ti viene mica in mente qualche cosa ?
Credo che a questo punto ci devi andare di OLE, in fondo non è complicato,
solo un po' più laborioso.
Guarda anche su 
http://www.knowvo.com/
 c'era qualcosa del tipo PDF2VO (mi
pare)
Danilo Giuliani


 Windows oppure un OCX.
Windows non offre supporto diretto per i PDF, come per tante altre cose,
purtroppo. Quindi niente API...
EMG
--
EMAG Software Homepage:     
http://www.emagsoftware.it
The EMG's ZX-Spectrum Page: 
http://www.emagsoftware.it/spectrum
The Best of Spectrum Games: 
http://www.emagsoftware.it/tbosg

Volevo correggere la mia affermazione precedente. Ho generato l'eseguibile
dei miei tests e fortunatamente lanciando l'eseguibile la ShellExecute
funziona. Rimane, però, un'altro problema: come faccio ad indirizzare la
stampa su di una stampante diversa da quella di default ?
Ti ringrazio tantissimo per i tuoi suggerimenti


 Mario Arienti
Ecco un'idea
prima inizializzi :
SELF:oPrinter := PrintingDevice{} // quella di default
Poi
METHOD PrinterDialog() CLASS StandardShellWindow
LOCAL cDeviceName AS STRING
LOCAL cDriver AS STRING
LOCAL cPort AS STRING
IF SELF:oPrinter:IsValid()
 cDeviceName := SELF:oPrinter:Device
 SELF:oPrinter:SetUp()
 IF !(cDeviceName == SELF:oPrinter:Device)
  cDeviceName := SELF:oPrinter:Device
  cDriver := SELF:oPrinter:Driver
  cPort := SELF:oPrinter:Port
  SELF:oPrinter:Destroy()
     SELF:oPrinter := NULL_OBJECT
  SELF:oPrinter := PrintingDevice{cDeviceName+","+cDriver+","+cPort}
 ENDIF
ELSE
 Mostra("Nessuna stampante e' presente nel sistema")
ENDIF
RETURN NIL
Prova un pò


Ciao Danilo,
ho provato quanto da te suggerito, l'idea era senz'altro buona! Purtroppo
la ShellExecute non esegue l'output sulla stampante che viene selezionata,
ma esegue l'output sempre e comunque sulla stampante di default.
Bisognerebbe trovare il modo di cambiare al volo la stampante di default
prima di eseguire la stampa e riportarla allo stato precedente appena
terminata.
Mi sà tanto che sia inevitabile dover mettere mano alle api di windows.
Se ti viene in mente qualche altra cosa fammela sapere.
Ciao 


 Se ti viene in mente qualche altra cosa fammela sapere.
Potresti cambiare al volo la voce Device nella sezione [Windows] del
file WIN.INI (supportato ancora per compatibilità su tutte le attuali
versioni di Windows) mettendoci una di quelle che trovi nella sezione
[Devices] dello stesso file INI (che sarebbero le stampanti installate)
e poi la rimetti a posto alla fine della stampa.


 ha scritto nel
messaggio news:3EC3CF76...@emagsoftware.it...


 ha scritto nel messaggio
news:119wa.116170$iy5.3...@twister2.libero.it...


 9.95 s atampare su tale stampante?
Veramente Mario voleva stampare un PDF non produrne uno.


Ciao a tutti,
vi scrivo solo per dirvi che ho risolto tutti i miei problemi e volevo
ringraziarvi per l'ottima colaborazione.
Mi sono giunti alcuni buoni suggerimenti dalla NG internazionale tra i
quali:
- come cambiare al volo la stampante di default
- integrare la stampamte pdf995 nell'applicativo 
- utilizzare i parametri da passare alla shellexecute quando di stampa
Ho shelto l'ultima soluzione e sono andato a cercare la documentazione
della Adobe ed ho trovato ai seguenti indirizzi delle ottime indicazioni:
http://support.adobe.com/devsup/devsup.nsf/docs/51412.htm
http://support.adobe.com/devsup/devsup.nsf/docs/52080.htm
in definitiva la soluzione da me scelta è questa:
      x := ShellExecute(NULL,;
                        String2Psz("open"),;
                        String2Psz("AcroRd32.exe"),;
                        String2Psz('/t "c:\prova.pdf"
"\\mail2000\pritedp01ee"'),;
                        NULL,;
                        SW_HIDE )
banale vero !?!?
A volte si ci perde proprio in un bicchiere d'acqua.
Per chi fosse interessato alle altre due soluzioni può andare sulle NG
internazionali.
Ancira grazie a tutti
Mario Arienti


 banale vero !?!?
Già, parametri sulla linea di comando...


 ha scritto nel messaggio
news:cF5xa.6910$Ny5.1...@twister2.libero.it...


 Avevo capito bene allora
A me sembrava che volesse stampare un PDF su carta (come dice anche
l'oggetto del messaggio) non produrre un PDF. Ho capito male io?
