Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

[!][OT] stampare su file pdf

20 views
Skip to first unread message

Massimo Conter

unread,
Apr 17, 2002, 6:05:10 AM4/17/02
to
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

Lord Rayden

unread,
Apr 17, 2002, 6:26:42 AM4/17/02
to

"Massimo Conter" <emm...@laserinforma.com> ha scritto nel messaggio
news:3CBD48D6...@laserinforma.com...

> printer.enddoc
>
> 'qui io inserirei una pausa per attendere che il file venga generato
> ("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...

Massimo Conter

unread,
Apr 17, 2002, 6:32:17 AM4/17/02
to
Lord Rayden wrote:
> "Massimo Conter" <emm...@laserinforma.com> ha scritto nel messaggio
> news:3CBD48D6...@laserinforma.com...
>
>>printer.enddoc
>>
>>'qui io inserirei una pausa per attendere che il file venga generato
>>("stampato")
>
> Conviene forse un loop con sleep che controlla se il file è in uso
> (ovviamente con un timeout).

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

Paperino

unread,
Apr 17, 2002, 2:07:37 PM4/17/02
to
"Massimo Conter" ha scritto nel messaggio

> Procedura per creare un driver di stampa pdf senza avere acquistato
> Acrobat (e senza averlo rubato, craccato, ecc.)
[CUT]

> 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

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 !


Massimo Conter

unread,
Apr 17, 2002, 2:49:18 PM4/17/02
to
Paperino wrote:
> "Massimo Conter" ha scritto nel messaggio
>
>>Procedura per creare un driver di stampa pdf senza avere acquistato
>>Acrobat (e senza averlo rubato, craccato, ecc.)
> >
> 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.
>


Come gia' richiesto potremmo scrivere una FAQ per il SC ...

ciao
maxx

Paperino

unread,
Apr 17, 2002, 3:09:50 PM4/17/02
to

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.


javalab

unread,
Apr 17, 2002, 3:09:47 PM4/17/02
to

"Paperino" <non...@lo.dico> ha scritto

> 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à >:-|)

se c'e' una giustizia, c'e' uno speciale girone win98.
tipo prometeo: schermo blu -> reboot -> schermo blu...


Paperino

unread,
Apr 17, 2002, 4:35:46 PM4/17/02
to
"javalab" ha scritto nel messaggio
> "Paperino" ha scritto

> > (guarda che mi tocca fare... maledetti spammer, che possiate
> > 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...

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


Massimo Conter

unread,
Apr 17, 2002, 6:32:19 PM4/17/02
to
Paperino wrote:

> 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

Paperino

unread,
Apr 17, 2002, 7:04:46 PM4/17/02
to
"Massimo Conter" ha scritto nel messaggio
> Paperino wrote:
> > Ho ritrovato il codice, ma è un tantino lungo da postare sul NG,
> > te lo posso mandare in mail ?
> 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.


Attila85

unread,
Apr 18, 2002, 8:18:15 AM4/18/02
to
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...

Massimo Conter

unread,
Apr 18, 2002, 8:46:40 AM4/18/02
to
Attila85 wrote:
> Me ne potresti mandare una copia anke a me, se nn t dispiace. Grazie!!
>

vai su www.ghostscript.com ....

ciao
maxx


Andrea Ricossa

unread,
Apr 18, 2002, 9:00:57 AM4/18/02
to
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

Massimo Conter

unread,
Apr 18, 2002, 9:21:09 AM4/18/02
to
Andrea Ricossa wrote:
> 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?

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

Andrea Ricossa

unread,
Apr 18, 2002, 9:46:24 AM4/18/02
to
Scusa non mi sono spiegato bene.
Il mio problema è convertire da html a
ps e lo devo fare via software.
Grazie ancora

Massimo Conter

unread,
Apr 18, 2002, 10:39:48 AM4/18/02
to
Andrea Ricossa wrote:
> Scusa non mi sono spiegato bene.
> Il mio problema è convertire da html a
> 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

Andrea Ricossa

unread,
Apr 19, 2002, 10:03:41 AM4/19/02
to
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

Paperino

unread,
Apr 19, 2002, 1:22:42 PM4/19/02
to
"Andrea Ricossa" ha scritto nel messaggio

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

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.


Massimo Conter

unread,
Apr 19, 2002, 5:15:11 PM4/19/02
to
Andrea Ricossa wrote:
> 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.
> 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

0 new messages