Newsgroup: it.comp.lang.visual-basic
Titolo: [!][OT] stampare su file pdf

Procedura per creare un driver di stampa pdf senza avere acquistato
Acrobat (e senza averlo rubato, craccato, ecc.)
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

 ("stampato")
Conviene forse un loop con sleep che controlla se il file è in uso
(ovviamente con un timeout).
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

 c:\
pippo.ps
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.

 bruciarvi le chiappe all'inferno per l'eternità >:-|)
se c'e' una giustizia, c'e' uno speciale girone win98.
tipo prometeo: schermo blu -> reboot -> schermo blu...

 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'..."

 
manda pure e se permetti poi mando al SC.
grazie
		maxx

 manda pure e se permetti poi mando al SC.
"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.

Me ne potresti mandare una copia anke a me, se nn t dispiace. Grazie!!
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

Tutto OK!
Ma se il file da stampare è un file HTML e devo generare un file
PS da una DLL in visual basic che lavora sotto MTS... avete qualche idea da
suggerirmi?
Ho provato ad usare l'oggetto INTERNETEXPLORER o WEBBROSER.
Fargli caricare il file HTML, tenerlo nascosto e fare stampare. A questo
punto si aspetta obbligatoriamente una conferma dall'utente.
Vi ringrazio
molto per l'aiuto
--------------------------------
Inviato via 
http://usenet.iol.it
 

 suggerirmi?
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

Scusa non mi sono spiegato bene. 
Il mio problema è convertire da html a
ps e lo devo fare via software.
Grazie ancora


 ps e lo devo fare via software.
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

Scusa se rompo ancora..
ma HTMLDOC e HTML2PS non gestiscono HTML 4, e io
ho una pagina html con l'attributo style nei tag.
La soluzione che a me
sembra ora più semplice, è quella di stampare da IE.
Ho provato le righe
di codice seguenti, che andrebbero benissimo se non fosse che si apre la
dialogbox di selezione di stampa e attende l'ok dall'utente.
Riesco
secondo voi a bypassare questa dialog e fare stampare su un file? magari
con nome file,margini e orientamento del foglio (landscape/portrait) che
voglio?
Grazie infiniti per l'aiuto
Shell "rundll32.exe
c:\windows\system\MSHTML.dll,PrintHTML " & _
Chr(34) & NomeFileHtml &
Chr(34), vbNormalFocus


 che voglio?
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):
http://msdn.microsoft.com/library/default.asp?url=/workshop/browser/webbrowser/reference/objects/webbrowser.asp
http://msdn.microsoft.com/library/default.asp?url=/workshop/browser/webbrowser/reference/methods/execwb.asp
Bye, G.

 Inviato via 
http://usenet.iol.it
 
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 ...
http://groups.google.it/groups?hl=it&threadm=8mevc9%244ll5%40bornews.borland.com&rnum=10&prev=/groups%3Fhl%3Dit%26q%3D%2522iexplore%2522%2Bcommand%2Bline%2Bprint%26btnG%3DCerca%2Bcon%2BGoogle
ciao
		maxx