Newsgroup: it.comp.lang.delphi
Titolo: pdf

Qualcuno conosce qualche componente anche a pagamento (non elevato)
per stampare i pdf da delphi 7 evitanto di aprire l'acrobat???
grazie mille.


In un nostro server applicativo abbiamo implementato la produzione 
on-demand di report in formato PDF utilizzando la stampante PDF "PDF4U":
 
http://www.pdfpdf.com/pdf4u.html
Nel 2004 scegliemmo questo software perche' si poteva acquistare una 
licenza developer senza limiti (ne' di sviluppatori, ne' di 
distribuzione ai clienti) il cui prezzo avrebbe inciso in modo 
trascurabile nei costi di commercializzazione del nostro software.
Purtroppo siamo stati carenti (la fretta...) nella fase di valutazione e 
pur utilizzandolo ancora con successo, dopo qualche mese ci siamo resi 
conto che non era esente da malfunzionamenti (problemi nella produzione 
di file di grosse dimensioni, nella generazione di alcuni fonts etc.).
Ho in piano quindi di sostituire questo componente appena possibile e 
sto valutando CutePDF:
 
http://www.cutepdf.com/
Ciao,
baba.

baba ha scritto:

Con uno di questi è possibile caricare un file pdf e mandarlo in
stampa senza aprire acrobat o stampanti virtuali??
grazie molte

baba ha scritto:

Con uno di questi è possibile caricare un file pdf e mandarlo in


 
Scusa, non avevo capito il problema.
Nel tuo caso credo che una semplice ShellExecute basti.
Qualcosa del tipo:
	ShellExecute(Handle, 'print', PChar('c:\test\test.PDF'), nil, nil, 
SW_SHOW);
Ti rimando comunque all'help on-line di Delphi.
Ciao,
baba.

baba ha scritto:

Con il shell funziona però mi resta aperto l'acrobat, a me serve un
componente che carica il pdf e lo manda in stampa direttamente senza
aprire niente.
Ho cercato il componente in rete ma purtroppo son veramente cari cosi
ho cercato la fortuna in qst gruppo magari qualcuno di voi sa
aiutarmi...

 aprire niente.
Provato Ghostscript? Lo lanci tramite riga di comando (quindi o con 
CreateProcess o con il deprecato (ma tanto comodo ;) ) WinExec, 
passandogli il nome della stampante come parametro dovrebbe stampare 
senza fiatare.
Scusa ma è mezzanotte e non ho proprio voglia di aprire il sito per 
controllare :)
-- 
Jax

Ciao.
Noi usiamo questo : 
http://www.quickpdf.org/
 e ci troviamo bene per creare e 
emaniupolare i file PDF.
Per quanto riguarda la stampa ci sono 2 possibilità: usare i metodi offerti 
da questo componente oppure, come mi "sembra" qualcuno abbia suggerito, 
sfruttare il motore di Acrobat (chi meglio di lui?)
In quest'ultimo caso si sfrutta la strada DDE (usa gogglee  trovi esempi che 
vanno bene...) però non riesci ad evitare (almeno io non ci riesco) che 
venga aperta per un istante la splashscreen di Acrobat.
Saluti
andrea 

phora ha scritto:

Grazie Andrea, ma è proprio acrobat il mio problema..purtroppo devo
trovare il modo che non si apra...ho provato vari componenti per
delphi purtroppo quelli che mi andavano bene costavano una cifra...e
non riesco a trovare dei componenti meno costosi....spero di trovarli
oppure che qualcuno mi dia una mano...

Jax ha scritto:

Mi sapresti spiegare come funziona e dove posso trovare ghostscript??
non lo mai sentito...
grazie..

trovare il modo che non si apra
Il componente che ti ho suggerito NON apre Acrobat, perň fa (non so 
perchč...) dei file di stampa bestialmente grossi
L'altra tecnica č UGUALE a quella che fa WInsozz quando tu cliccki col tasto 
destro sopra un PDF e scegli STAMPA nel menů che appare. Prova
Andrea

Siccome non riesco a trovare dei componenti validi per la mia
causa...non esiste il modo per chiudere l'acrobat dopo la stampa????
grazie

Hai provato a fare come ti ho scritto (tasto destro, stampa) ?
Andrea 

 Andrea
Si ma io ho un programma che va..e durante l'esecuzione deve
automaticamante passando dei parametri ad una funzione stampare il
pdf...se faccio una shell funziona ma si apre l'acrobat,ho trovato un
componente che riusciva a farlo senza aprire l'acrobat ma costa 300
dollari purtroppo...non so più che pesci pigliare...

 dollari purtroppo...non so più che pesci pigliare...
carica la cifra al cliente, almeno per il 50%, e COMPRALO. Tanto lo 
riutilizzerai anche in seguito. Se non hai soldi e il cliente non vuole 
pagare, si beccherà la shell di acrobat. Mi pare talmente ovvio.. che stai 
qui ancora a discutere? bah..
Avalon 

Avalon ha scritto:

Dopo aver speso 270 euro per un sorgente e 250 per un altro
componente  voglio vedere se tiri fuori altri 300 euro, lo shell è
escluso ancora in partenza, il modo per evitare lo shell o per
chiudere l'acrobat sicuramente esiste basta
trovarlo...oppure..inventarlo...

Quello che intendeva Andrea (che a volte è un po' criptico) è che questo 
componente fa quasi quello che vuoi: al momento della stampa viene lanciato 
Acrobat (si vede l'icona comparire in basso, ma la finestra non viene 
mostrata), viene lanciata la stampa, quindi richiude tutto. Noi lo usiamo e 
fa esattamente questo. In pratica, non riesci ad evitare di vedere per 
qualche istante il bottone in basso, nella barra delle applicazioni, ma lo 
vedi per qualche istante e poi si chiude senza per altro vedere mai la 
finestra con il documento in questione. Se stai attento ci fai caso, se sei 
assorto (e il computer è abbastanza veloce) nemmeno te ne accorgi. La tua 
applicazione rimane sempre in primo piano. Se tanto ti basta....
Gianni 

Gianni ha scritto:

Non riesco a scaricare il componente per provarlo...
Grazie

Gianni ha scritto:

Forse ho sbagliato a qualcosa ma non riesco a scaricarlo per
provarlo...
grazie

Non ci siamo.
L'amico Gianni ha fatto un po' confusione: il componente stampa per conto 
suo.
L'uso di Acrobat via DDE è una alternativa.
Il comportamento descritto da Gianni è quello della "alternativa".
Usa Google con Dde + print +pdf: un possibile link è 
http://vb-helper.com/howto_print_pdf.html
naturalmente devi scrivere il codice in delphi....
Ciao
andrea 

 non lo mai sentito...
Google è tuo amico, impara ad usarlo:
http://www.cs.wisc.edu/~ghost/
Prima di tutto: a te serve *creare* un pdf nuovo o *stamparne* uno 
esistente?
Se la risposta è la seconda, ecco la pappa pronta: puoi usare 
ghostscript + gsview: sono open source, li installi (prima gs poi 
gsview) sul pc insieme al tuo pgm e poi lo richiami dal tuo programma 
più o meno in questo modo:
   if OpenDialog1.Execute then
     WinExec(PChar(Format(
       'c:\programmi\ghostgum\gsview\gsprint -printer "%s" "%s"',
       [ComboBox1.Text, OpenDialog1.FileName])), SW_HIDE);
dove il ComboBox1 contiene l'elenco delle stampanti sul PC (viene 
riempito aggiungendo nelle uses "printers" e poi Combobox1.Items := 
Printer.Printers).
Attenzione che WinExec è deprecato, bisognerebbe usare CreateProcess... 
però funziona :)
-- 
Jax

 componente  voglio vedere se tiri fuori altri 300 euro, 
Secondo me ha ragione Avalon, non conviene intestardirsi su tali problemi
e non voler spendere soldi per un prodotto già pronto e funzionante
oppure proporre al cliente una soluzione che per qualche istante
visualizza *qualcosa* di Adobe Reader.
Parlo per esperienza diretta; mi è capitato diverse volte di perdere un
sacco di tempo a risolvere problemi che in realtà erano tali solo per
me, perché al cliente medio non frega niente di *problemi* come la
"momentanea visualizzazione di qualche banner di Adobe Reader".
La cosa fondamentale è che la stampa venga fatta correttamente, con la
migliore qualità e senza alcuna richiesta d'intervento da parte
dell'utente.
Se invece il tuo cliente è uno di quelli perniciosi, che si attaccano
anche a queste cose, di sicuro non ti farà alcun problema se gli
chiederai qualche centinaio di Euro per risolvere tali problemi.
Nel caso (non raro) che il cliente pretenda le cose senza voler sborsare
soldi ti consiglio di lasciarlo perdere, perché di sicuro non è un buon
cliente.
Giuseppe