Condividi tramite


Utilizzo del controllo RSClientPrint in applicazioni personalizzate

Il controllo Microsoft ActiveX RSPrintClient consente la stampa sul lato client dei report visualizzati nel Visualizzatore HTML. Fornisce una finestra di dialogo Stampa per consentire all'utente di avviare un processo di stampa, visualizzare un'anteprima di un report, specificare le pagine da stampare e modificare i margini. Durante la stampa sul lato client, il server di report esegue il rendering del report con l'estensione per il rendering Immagine (EMF) e utilizza le funzionalità di stampa del sistema operativo per creare il processo di stampa e inviarlo a una stampante.

La funzionalità di stampa sul lato client consente di controllare e migliorare la qualità di stampa di un report HTML evitando l'uso delle impostazioni di stampa del browser del computer in uso e utilizzando invece le dimensioni di pagina, i margini, il testo dell'intestazione e del piè di pagina del report per creare l'output di stampa. Il controllo di stampa legge i valori delle proprietà del report per impostare le dimensioni e i margini delle pagine.

Gli sviluppatori che desiderano attivare la funzionalità di stampa sul lato client in barre degli strumenti di terze parti possono accedere al controllo ActiveX tramite l'oggetto COM RSClientPrint. La distribuzione del controllo è consentita e gratuita. Se si desidera utilizzare il controllo, leggere i consigli seguenti:

  • Utilizzare il controllo per migliorare la stampa di report per il Web. È possibile specificare l'oggetto in qualsiasi script o linguaggio di programmazione compatibile con Microsoft.NET Framework. Il controllo non è progettato per applicazioni Microsoft Windows Form.

  • Copiare il file con estensione cab dai file di programma di Reporting Services e aggiungerlo alla base di codice dell'applicazione personalizzata.

  • Utilizzare un tag <OBJECT> per specificare il controllo.

  • Specificare un URL relativo o completo per il file CAB nell'attributo OBJECT CODEBASE.

  • Specificare le informazioni di versione dell'applicazione personalizzata per il file CAB per tenere traccia della versione utilizzata nell'applicazione.

  • Leggere gli argomenti della documentazione in linea relativi al rendering in formato immagine (EMF) per comprendere le modalità di rendering delle pagine nell'anteprima e nell'output di stampa.

Cenni preliminari su RSPrintClient

Il controllo visualizza una finestra di dialogo di stampa personalizzata che supporta funzionalità comuni ad altre finestre di dialogo di stampa, inclusi l'anteprima di stampa, la selezione delle pagine per specificare pagine e intervalli, i margini delle pagine e l'orientamento. Il controllo è distribuito come file CAB. Il testo della finestra di dialogo Stampa è localizzato in tutte le lingue supportate da SQL Server. Per stampare il report, il controllo ActiveX RSPrintClient utilizza l'estensione per il rendering Image (EMF). Vengono utilizzate le informazioni sul dispositivo EMF seguenti: StartPage, EndPage, MarginBottom, MarginLeft, MarginTop, MarginRight, PageHeight e PageWidth. Le altre impostazioni del dispositivo per il rendering in formato immagine non sono supportate.

Supporto delle lingue

Il controllo include stringhe testo per l'interfaccia utente in diverse lingue e accetta valori di input in vari sistemi di misura. La lingua e il sistema di misura utilizzati vengono determinati dalle proprietà Culture e UICulture, che accettano entrambe valori LCID. Se si specifica un identificatore LCID per una lingua che è una variante di una lingua supportata, verrà utilizzata la lingua più simile corrispondente. Se si specifica un LCID di una lingua non supportata e per la quale non esiste un LCID simile corrispondente, verrà utilizzato l'inglese (Stati Uniti).

Utilizzo di RSPrintClient nel codice

L'oggetto RSClientPrint viene utilizzato per accedere al controllo ActiveX e ai relativi metodi e proprietà a livello di programmazione. Il controllo include una finestra di dialogo modale per l'anteprima di stampa.

Specifica dei valori predefiniti

È possibile inizializzare la finestra di dialogo Stampa con i valori di margine e pagina del report. Per impostazione predefinita, la finestra di dialogo Stampa viene inizializzata con i valori della definizione del report. È possibile utilizzare i valori predefiniti oppure specificare valori diversi impostando le proprietà dell'oggetto.

Tutte le dimensioni sono specificate in millimetri. La conversione delle misure viene eseguita in fase di esecuzione se le proprietà Culture e UICulture specificano impostazioni locali che non utilizzano il sistema metrico.

Per conoscere i valori utilizzati per le dimensioni e i margini delle pagine, è possibile recuperare i valori predefiniti con il metodo GetProperties:

  • PageHeight e PageWidth specificano l'altezza e la larghezza predefinite per la pagina. All'avvio del controllo di stampa, i valori di queste proprietà vengono utilizzati per selezionare le dimensioni del foglio più vicine a quelle del report per la stampante selezionata. Se PageWidth è maggiore di PageHeight, viene impostato l'orientamento orizzontale. In caso contrario, l'orientamento è verticale.

  • L'impostazione predefinita per LeftMargin, RightMargin, TopMargin e BottomMargin è di 12,2 mm.

Queste proprietà sono archiviate nell'insieme di proprietà Item nel server di report. I valori vengono sovrascritti ogni volta che la definizione di un report viene aggiornata.

Proprietà di RSPrintClient

Proprietà

Tipo

LS

Valore predefinito

Descrizione

MarginLeft

Double

LS

Impostazione del report

Recupera o imposta il margine sinistro. Il valore predefinito è di 12,2 mm se non viene specificato un valore diverso dallo sviluppatore o nel report.

MarginRight

Double

LS

Impostazione del report

Recupera o imposta il margine destro. Il valore predefinito è di 12,2 mm se non viene specificato un valore diverso dallo sviluppatore o nel report.

MarginTop

Double

LS

Impostazione del report

Recupera o imposta il margine superiore. Il valore predefinito è di 12,2 mm se non viene specificato un valore diverso dallo sviluppatore o nel report.

MarginBottom

Double

LS

Impostazione del report

Recupera o imposta il margine inferiore. Il valore predefinito è di 12,2 mm se non viene specificato un valore diverso dallo sviluppatore o nel report.

PageWidth

Double

LS

Impostazione del report

Recupera o imposta la larghezza della pagina. Il valore predefinito è di 215,9 mm se non viene specificato un valore diverso dallo sviluppatore o nella definizione del report.

PageHeight

Double

LS

Impostazione del report

Recupera o imposta l'altezza della pagina. Il valore predefinito è di 279,4 mm se non viene specificato un valore diverso dallo sviluppatore o nella definizione del report.

Culture

Int32

LS

Impostazioni locali del browser

Specifica l'identificatore delle impostazioni locali (LCID). Questo valore determina l'unità di misura per l'input dell'utente. Se ad esempio l'utente digita 3, il valore verrà misurato in millimetri se la lingua è il francese e in pollici se la lingua è l'inglese (Stati Uniti). I valori validi sono: 1028, 1031, 1033, 1036, 1040, 1041, 1042, 2052, 3082.

UICulture

String

LS

Impostazioni internazionali del client

Specifica la lingua delle stringhe della finestra di dialogo. Per il testo della finestra di dialogo di stampa sono disponibili le lingue seguenti: cinese semplificato, cinese tradizionale, inglese, francese, tedesco, italiano, giapponese, coreano e spagnolo. I valori validi sono: 1028, 1031, 1033, 1036, 1040, 1041, 1042, 2052, 3082.

Authenticate

Boolean

LS

False

Specifica se il controllo genera un comando GET per il server di report per avviare una sessione per la stampa fuori sessione.

Quando impostare la proprietà Authenticate

Quando si stampa nell'ambito di una sessione del browser, l'impostazione della proprietà Authenticate non è necessaria. Nel contesto di una sessione attiva, tutte le richieste dal controllo di stampa al server di report vengono gestite tramite il browser. Il browser imposta le variabili di sessione necessarie per la comunicazione al server di report.

Se si stampa fuori dall'ambito di una sessione, ad esempio inviando un report direttamente a una stampante senza prima aprirlo, il controllo di stampa deve generare una richiesta HTTP GET per impostare la connessione con il server di report. Per generare la richiesta GET è necessario impostare Authenticate su True.

La generazione della richiesta GET è necessaria solo se si utilizza la protezione integrata di Windows o l'autenticazione di base. Se si utilizza l'autenticazione basata su form, la proprietà Authenticate viene ignorata. Il codice dell'applicazione deve impostare la sessione e autenticare l'utente utilizzando l'estensione di protezione personalizzata fornita dall'utente. Se si utilizza l'autenticazione basata su form, assicurarsi di impostare la scadenza del cookie di autenticazione su un valore che mantenga le sessioni per un intervallo di tempo ragionevole. Se il valore è troppo basso, agli utenti verrà richiesto di immettere le credenziali di accesso ogni volta che il cookie scade.

Metodo Print di RSPrintClient

L'oggetto RSClientPrint supporta il metodo Print utilizzato per avviare la finestra di dialogo di stampa. Il metodo Print include gli argomenti descritti di seguito.

Argomento

I/O

Tipo

Descrizione

ServerPath

In

String

Specifica la directory virtuale del server di report (ad esempio https://adventure-works/reportserver).

ReportPathParameters

In

String

Specifica il nome completo del report nello spazio dei nomi delle cartelle del server di report, inclusi i parametri. I report vengono recuperati mediante l'accesso a un URL, ad esempio "/AdventureWorks Sample Reports/Employee Sales Summary&EmpID=1234"

ReportName

In

String

Nome breve del report (nell'esempio precedente è Employee Sales Summary) che viene visualizzato nella finestra di dialogo di stampa e nella coda di stampa.

Esempio

Nell'esempio HTML riportato di seguito viene illustrato come specificare il file CAB, il metodo Print e le proprietà in JavaScript:

<BODY onload="Print()">

<OBJECT ID="RSClientPrint" CLASSID="CLSID:FA91DF8D-53AB-455D-AB20-F2F023E498D3" CODEBASE="<URL to the .CAB file>#Version=<your application version information>" VIEWASTEXT></OBJECT>

<script language="javascript">

function Print()

{

RSClientPrint.MarginLeft = 12.7;

RSClientPrint.MarginTop = 12.7;

RSClientPrint.MarginRight = 12.7;

RSClientPrint.MarginBottom = 12.7;

RSClientPrint.Culture = 1033;

RSClientPrint.UICulture = 9;

RSClientPrint.Print('https://localhost/rtm', '%2fEmployee_Sales_Summary&ReportMonth=6&ReportYear=2004&EmpID=20', 'Employee_Sales_Summary')

}

</script>

</BODY>