Mshtml.dll

mercoledì 03 gennaio 2007 - 09.54

pax82 Profilo | Newbie

Buongiorno a tutti, vi espongo il mio problema:
sto cercando di creare uno script per la stampa automatica di pagine html sfruttando il motore di rendering di IE. ho trovato molto utile il comando:
rundll32.exe MSHTML.DLL,PrintHTML "nomefile.html"
ma purtroppo mi fa comparire la finestra di dialogo di stampa non potendo così automatizzare tutto il sistema. Se non erro, non esiste un modo da riga di comando per evitare la finestra di dialogo ma riscrivendo il programma in c++ o c#.NET dovrei riuscire a farcela, giusto?
Avete qualche consiglio da darmi? ogni conisigli sarà preziossimo in quanto mi sto avvicinando ora all'ambiente windows e visual studio.
Grazie a tutti

pax82 Profilo | Newbie

ti spiego meglio. per produrre dei pdf da html in maniera semplice, gratuita e gradevole, pensavo di produrre le stampe pdf tramite una stampante virtuale sfurttando il motore di rendering di IE. Con quel comando ci riesco, ma la finestra di dialogo mi blocca il tutto.

Ho provato con c# a creare una winform con dentro un oggetto webbrowser, ho associato al click di un bottone il comando webbrowser.print e così non mi apre la finestra di dialogo. Come posso fare a costruire uno script che mi faccia questo senza aprire un oggetto webbrowser, in modo tale dal essere lanciato da linea di comando?
Grazie

gigi90 Profilo | Senior Member

Se hai detto che utilizzi C# vuol dire che usi il .Net Framework, e qui puoi utilizzare un oggetto per il renvisualizzare le pagine web ossia l'oggeto web browser presente nella toolbox.
Quindi lo trascini sul form e lo ridimensioni a tuo piacimento, dopodiche per visualizzare is siti scrivi il seguente codice:

Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra

magari puoi associare la stampa ad un pulsante e per stampare senza far comparire nessuna finestra di dialogo per l'impostazione delle pagine scrivi:

public void btnStampa_Click(....,......){ webBrowser1.Print();//Chiami semplicemente il metodo print; }
Spero di esserti stato utile, altrimenti facci sapere

gigi90 Profilo | Senior Member

Ma con che linguaggio/framework stai programmando???

pax82 Profilo | Newbie

Innanzitutto grazie per gli aiuti.

uso c#.NET Framework 2.0.50727

Il problema è che così ero già riuscito a farlo, però vorrei creare uno script che sia indipendente dalle finestre, che lanciandolo faccia tutto in automatico senza dover cliccare da nessuna parte. Dovrei farlo girare su un server windows 2000. Praticamente quando l'utente da pagina web clicca su "salva in pdf", sul server dovrebbe partire lo script che lo genera... ma non so come andare avanti.
grazie

gigi90 Profilo | Senior Member

Non e meglio che cerchi su Internet qualche componente che permette di salvare file in Pdf!!!

gigi90 Profilo | Senior Member

Vai qui sta una guida su come ASP.net: Creare PDF con ASP.NET http://www.webmasterpoint.org/asp/net/13.asp

pax82 Profilo | Newbie

Vedi, il discorso pdf non è così facile come può sembrare, quella della stampante virtuale mi sembra la soluzione più semplice. Su internet di documentazione per i pdf ce n'è, il problema sta nel risultato finale e di come viene ottenuto.
devo riuscire ad automatizzare lo script, è questo l'aiuto che cercavo..

gigi90 Profilo | Senior Member

Ora sto provando qualche soluzione io, spiegami esattamente cosa devi stampare nel pdf!!!

pax82 Profilo | Newbie

Ho dei report html+css discretamente complessi(tabelle) devo aver la possibilità di salvari pari pari in html.
Ho già utilizzato librerie come fpdf ecc ma non fanno al caso mio...

gigi90 Profilo | Senior Member

Allora potresti utilizzare il componente itextsharp ch crea file in formato pdf e li salva, inserendo testo,immagini,liste ecc.ecc, dopo aver salvato il documento elaborato in una cartella temporanea del server ad esempio "D:\inetpub\tuosito\pdftemp\doc.pdf" raggiungibile da qualsiasi browser in questo modo http://www.tuosito.it/pdftemp/doc.pdf

aggiungi il link al file :
Response.Write("<a href="http://www.tuosito.it/pdftemp/doc.pdf">Scarica il pdf</a>");
ecco qua!!

pax82 Profilo | Newbie

forse mi spiego male, itextsharp se non sbaglio è una libreria come fpdf, non fa la conversione al volo, io vorrei riuscire a fare un programma che passato in input un file html, mi restituisca il pdf sfruttando il motore di rendering di internet explorer e una stampante virtuale. sono quasi riuscito a fare tutto usando il comando

rundll32.exe MSHTML.dll,PrintHTML "nomefile.html"
ma devo riuscire ad evitare al finestra di dialogo.
Come posso fare dato che la finestra di dialogo non posso eliminarla(da quello che ho capito)?
Mi sembra di aver intuito che dovrei riscrivere un'applicazione windows console, ma come faccio a ricreare quello che faccio con rundll32.exe MSHTML.dll,PrintHTML?
PrintHTML è un metodo della libreria MSHTML.dll?
come faccio in C# ad utiilzzarlo?
Grazie

-alberto Profilo | Newbie

Prova ABCpdf http://www.websupergoo.com è un componente che funzione con c# oppure ActiveX, fruttando il motore di rendering di IE genera un pdf al volo, basta passare l'idirzzo url della pagina da visualizzare, io lo utilizza per scrivere documentazione in html e pubblicarla creando pdf.
Il vantaggio è quello che ciò che vedi in IE viene riprodotto perfettamente in pdf.
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2023
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5