Il punto principale e' un trucco: la possibilita' di generare file
postscript da una stampa. Tale file potra' poi essere trasformato con un
programma opportuno in un file pdf, visualizzabile o stampabile con
Acrobat Reader o altro pdf viewer.
Non c'e' farina del mio sacco in tutto cio': ho solo messo insieme un
po' di informazioni ricavate dai vari NG sull'argomento.
Materiale necessario:
- Un driver per stampante Postscript (anche gia' incluso in win 98, nt 4
, forse in win 95)
- Ghostscript ; io ho utilizzato aladdin ghostscript 6.01
http://www.cs.wisc.edu/~ghost/ ma penso che anche GNU gs possa andar
bene, basta che abbia tra i drivers pdfwrite
Procedimento:
-Installate il driver della stampante Apple Color LaserWriter 12/600
oppure Apple LaserWriter II NT (presenti tra i driver preinstallati). Io
ho utilizzto il secondo!
Qualunque driver per stampante che sia pienamente compatibile col
linguaggio PS dovrebbe andare bene.
Le stampanti ps hanno la caratteristica di interpretare il linguaggio
ps. Quindi impostando la nostra stampante in modo che stampi su un file
otteremo un file .ps
Nelle proprieta' della stampante ps prescelta, in Dettagli scegliamo
Aggiungi Porta, poi Porta locale ed inseriamo il percorso di un file su
cui salvare le nostre stampe, ad es. c:\pippo.ps
In Imposta spooler, impostate "Invia direttamente alla stampante" e
"Disattiva il supporto bidirezionale ..."
Se tentate di fare la stampa della pagina di prova dovreste ottenere il
file c:\pippo.ps che visualizzato con opportuno viewer (ad es. ghostview
o equivalente) vi mostrera' la vostra bella pagina di prova!
Ora, utilizzando ghostscript trasformiamo questo file in un file .pdf
Nel mio caso eseguo da linea di comando (nella directory appropriata o
con PATH appropriato):
gswin32c @c:\src\aladdin\pdfwrite.rsp -sOutputFile=c:\pippo.pdf
c:\pippo.ps
dove c:\src\aladdin\pdfwrite.rsp e' un file contenente alcune
istruzioni per gs:
Il mio e' fatto cosi':
-Ic:\src\aladdin\gs6.01\lib;c:\src\aladdin\fonts
-sDEVICE=pdfwrite
-r300
-dNOPAUSE
-dSAFER
-sPAPERSIZE=a4
-dBATCH
Dovreste ottenere a questo punto il file c:\pippo.pdf che potete
visualizzare con Acrobat.
In vb la traduzione di questa procedura e' abbastanza semplice:
-Si seleziona come stampante nell'oggetto Printer la nostra stampante ps
Set printer.devicename="Apple ..." 'ho abbreviato ...
'istruzioni di stampa
printer.print
'
printer.enddoc
'qui io inserirei una pausa per attendere che il file venga generato
("stampato")
'poi eseguo gs per trasformare il file ps in pdf
shell "c:\src\aladdin\gs6.01\bin\gswin32c.exe
@c:\src\aladdin\pdfwrite.rsp " _ & "-sOutputFile=c:\pippo.pdf
c:\pippo.ps"
Se si ha invece necessita di fare stampe su file pdf interattive, cioe'
con scelta del nome del file ... si puo' installare Redmon
(http://www.ghostgum.com.au/) il quale crea una porta che ridirige
l'output di una stampante verso un programma; nel nostro caso l'output
della stampante PS verso gs configurato per creare un file pdf.
Redmon contiene le semplici istruzioni di configurazione, da cui ho
tratto ispirazione (quasi copiato) per scrivere questo post.
Spero di essere stato utile ...
maxx
Ottimo post... sarebbe da inserire nelle FAQ
E non mi pare per niente OT...
Si', hai ragione!
>
> Ottimo post... sarebbe da inserire nelle FAQ
> E non mi pare per niente OT...
>
Ogni tanto vedo delle richieste e lo posto. Adesso vado sul sito comune
e vedo qual'e' la procedura per inserirlo nelle FAQ. Ma si riceve del
denaro per ogni click? ;-)
ciao
maxx
Ci sto smanettando anch'io, anche se mi sono dovuto fermare per
altri problemi. Ti segnalo la possibilità di usare direttamente la DLL
di GS, comandandola da VB, per convertire PS-EPS-PDF-BMP-TIF
eccetera ;-)
Dammi una mezz'oretta per rintracciare il codice, lo mando qui sul NG.
(Per Gianni O. se sta lurkando: sì, sì, la mando anche a te...
è che ho avuto problemi con quelle *'=^$%£&]* stampanti :-)) )
Bye, G.
--
Le risposte alle tue domande sono sul Sito Comune
di questo NewsGroup: http://it-lang-vb.net/
... e nell'help in linea !
Come gia' richiesto potremmo scrivere una FAQ per il SC ...
ciao
maxx
Non ho neanche il tempo di cenare, ultimamente... :-(
Ho ritrovato il codice, ma è un tantino lungo da postare sul NG,
te lo posso mandare in mail ?
E nel caso, è valida quella nel post ? Altrimenti contattami tu su
gaetano(underscore)d(chioccioletta)hotmail(punto).com
(guarda che mi tocca fare... maledetti spammer, che possiate
bruciarvi le chiappe all'inferno per l'eternità >:-|)
Bye, G.
se c'e' una giustizia, c'e' uno speciale girone win98.
tipo prometeo: schermo blu -> reboot -> schermo blu...
LOL !
Beh, allora BG dovrebbe /almeno/ finire a debuggare a mano in
codice macchina tutti i venti milioni di linee di codice di NT >:->
Oh, nel caso finisca prima del giorno del giudizio, avrei qualche
altra ideuzza da suggerire. Hint: W2K, ME, XP, 9X, 3.X...
L'entropia farà in tempo a dissolvere le stelle, prima che finisca.
Un Paperino "E AC disse: 'La luce sia'..."
> Ho ritrovato il codice, ma è un tantino lungo da postare sul NG,
> te lo posso mandare in mail ?
> E nel caso, è valida quella nel post ? Altrimenti contattami tu su
> gaetano(underscore)d(chioccioletta)hotmail(punto).com
>
manda pure e se permetti poi mando al SC.
grazie
maxx
"Se permetti" ? :-O
Ci mancherebbe... avrei dovuto mandarlo io, insieme ad un
metodo per usare la giustifica nella RichTextBox e qualche
altra cosa, ma non trovo neanche 5 minuti per mettere a
punto il tutto.
Invio subito.
Bye, G.
rosario(at)tmn(punto).it
"Paperino" <non...@lo.dico> wrote in message
news:a9kusp$5c26$1...@stargate1.inet.it...
vai su www.ghostscript.com ....
ciao
maxx
--------------------------------
Inviato via http://usenet.iol.it
Come suggerito da paperino si puo' ora usare solo codice con le api che
accedono direttamente alla libreria di GS.
Vai su www.ghostscript.com e c'e' un esempio da scaricare ...
ciao
maxx
http://www.easysw.com/htmldoc/
http://www.tdb.uu.se/~jan/html2ps.html
oppure usi shellexecute usando il parametro lpOperation=Print con un
driver Postscript.
ciao
maxx
Shell "rundll32.exe
c:\windows\system\MSHTML.dll,PrintHTML " & _
Chr(34) & NomeFileHtml &
Chr(34), vbNormalFocus
Potresti aprire il tuo file nell'oggetto WebBrowser e stampare da
lě, quindi senza passare da un programma esterno. Ovviamente
questo prevede lo stesso IE installato, ma cosě eviti di aprirlo e
di dover dare la conferma alla dialog.
Basta un:
WebBrowser.ExecWB OLECMDID_PRINT, OLECMDEXECOPT_DONTPROMPTUSER
Naturalmente, prima devi settare l'oggetto Printer da programma
come ti serve.
C'č solo un problema, non so come settare il tutto per evitare di
stampare l'header e il footer. Se modifichi le impostazioni una tantum
da IE, poi le ricorda, ma se l'utente modifica i default sei inguaiato...
ma penso si possa fare, smanettando un po'.
Probabilmente dovrai creare un Print Template, ma non ne so niente,
č solo una frase che ho letto :-)))))))))))) non chiedermi altro...
Un paio di URL (tanto per non farlo fare solo a Roberto Piazzolla):
Bye, G.
Se il suggerimento di paperino non funge o non ti piace, prova a vedere
se funziona il codice che si trova a questo link. E' in pascal, e non lo
ho testato ...
ciao
maxx