Personalizzare l'interfaccia utente dell'anteprima di stampa
Questo argomento descrive come personalizzare le opzioni di stampa e le impostazioni nell'interfaccia utente dell'anteprima di stampa. Per altre info sulla stampa, vedere Stampa dalla tua app.
Suggerimento La maggior parte degli esempi in questo argomento si basa sull'esempio di stampa piattaforma UWP (Universal Windows Platform) (UWP).
API importanti
Personalizzare le opzioni di stampa
Per impostazione predefinita, l'interfaccia utente dell'anteprima di stampa mostra le opzioni di stampa ColorMode, Copie, e Orientamento. Oltre a quelli, sono disponibili diverse altre opzioni comuni per la stampante che è possibile aggiungere all'interfaccia utente dell'anteprima di stampa:
- Binding
- Regole di confronto
- Duplex
- HolePunch
- InputBin
- MediaSize
- MediaType
- NUp
- PrintQuality
- Elemento base
Queste opzioni sono definite nella classe StandardPrintTaskOptions. È possibile aggiungere o rimuovere opzioni dall'elenco di opzioni visualizzate nell'interfaccia utente dell'anteprima di stampa. È anche possibile modificare l'ordine in cui vengono visualizzati e impostare le impostazioni predefinite visualizzate all'utente.
Tuttavia, le modifiche apportate tramite questo metodo influiscono solo sull'interfaccia utente dell'anteprima di stampa. L'utente può sempre accedere a tutte le opzioni supportate dalla stampante selezionando con un tocco **Altre impostazioni*- nell'interfaccia utente dell'anteprima di stampa.
Nota
Anche se l'app può specificare le opzioni di stampa da visualizzare, nell'interfaccia utente dell'anteprima di stampa vengono visualizzate solo quelle supportate dalla stampante selezionata. L'interfaccia utente di stampa non mostrerà le opzioni non supportate dalla stampante selezionata.
Definire le opzioni da visualizzare
Quando la schermata dell'app viene caricata, viene registrata per il contratto di stampa. Parte della registrazione include la definizione del gestore eventi PrintTaskRequested. Il codice per personalizzare le opzioni visualizzate nell'interfaccia utente dell'anteprima di stampa viene aggiunto al gestore eventi **PrintTaskRequested*- .
Modificare il gestore eventi PrintTaskRequested per includere le istruzioni di printTask.options che configurano le impostazioni di stampa da visualizzare nell'interfaccia utente dell'anteprima di stampa. Per la schermata dell'app per cui si intende visualizzare un elenco personalizzato di opzioni di stampa, eseguire l'override del gestore eventi **PrintTaskRequested*- nella classe helper per includere il codice che specifica le opzioni da visualizzare quando viene stampata la schermata.
protected override void PrintTaskRequested(PrintManager sender, PrintTaskRequestedEventArgs e)
{
PrintTask printTask = null;
printTask = e.Request.CreatePrintTask("C# Printing SDK Sample", sourceRequestedArgs =>
{
IList<string> displayedOptions = printTask.Options.DisplayedOptions;
// Choose the printer options to be shown.
// The order in which the options are appended determines the order in which they appear in the UI
displayedOptions.Clear();
displayedOptions.Add(Windows.Graphics.Printing.StandardPrintTaskOptions.Copies);
displayedOptions.Add(Windows.Graphics.Printing.StandardPrintTaskOptions.Orientation);
displayedOptions.Add(Windows.Graphics.Printing.StandardPrintTaskOptions.MediaSize);
displayedOptions.Add(Windows.Graphics.Printing.StandardPrintTaskOptions.Collation);
displayedOptions.Add(Windows.Graphics.Printing.StandardPrintTaskOptions.Duplex);
// Preset the default value of the printer option
printTask.Options.MediaSize = PrintMediaSize.NorthAmericaLegal;
// Print Task event handler is invoked when the print job is completed.
printTask.Completed += async (s, args) =>
{
// Notify the user when the print operation fails.
if (args.Completion == PrintTaskCompletion.Failed)
{
await scenarioPage.Dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal, () =>
{
MainPage.Current.NotifyUser("Failed to print.", NotifyType.ErrorMessage);
});
}
};
sourceRequestedArgs.SetSource(printDocumentSource);
});
}
Importante
La chiamata a displayOptions.clear() rimuove tutte le opzioni di stampa dall'interfaccia utente dell'anteprima di stampa, incluso il collegamento **Altre impostazioni*- . Assicurarsi di aggiungere le opzioni da visualizzare nell'interfaccia utente dell'anteprima di stampa.
Specificare le opzioni predefinite
È anche possibile impostare i valori predefiniti delle opzioni nell'interfaccia utente dell'anteprima di stampa. La riga di codice seguente, dall'ultimo esempio, imposta il valore predefinito dell'opzione MediaSize .
// Preset the default value of the printer option
printTask.Options.MediaSize = PrintMediaSize.NorthAmericaLegal;
Aggiungere nuove opzioni di stampa
Qui viene illustrato come creare una nuova opzione di stampa, definire un elenco di valori supportati dall'opzione e quindi aggiungere l'opzione all'anteprima di stampa. Come nella sezione precedente, aggiungere la nuova opzione di stampa nel gestore eventi PrintTaskRequested.
Ottenere prima di tutto un oggetto PrintTaskOptionDetails. Viene usato per aggiungere la nuova opzione di stampa all'interfaccia utente dell'anteprima di stampa. Deselezionare quindi l'elenco delle opzioni visualizzate nell'interfaccia utente dell'anteprima di stampa e aggiungere le opzioni da visualizzare quando l'utente vuole stampare dall'app. Successivamente, creare la nuova opzione di stampa e inizializzare l'elenco dei valori di opzione. Aggiungere infine la nuova opzione e assegnare un gestore per l'evento **OptionChanged*- .
protected override void PrintTaskRequested(PrintManager sender, PrintTaskRequestedEventArgs e)
{
PrintTask printTask = null;
printTask = e.Request.CreatePrintTask("C# Printing SDK Sample", sourceRequestedArgs =>
{
PrintTaskOptionDetails printDetailedOptions = PrintTaskOptionDetails.GetFromPrintTaskOptions(printTask.Options);
IList<string> displayedOptions = printDetailedOptions.DisplayedOptions;
// Choose the printer options to be shown.
// The order in which the options are appended determines the order in which they appear in the UI
displayedOptions.Clear();
displayedOptions.Add(Windows.Graphics.Printing.StandardPrintTaskOptions.Copies);
displayedOptions.Add(Windows.Graphics.Printing.StandardPrintTaskOptions.Orientation);
displayedOptions.Add(Windows.Graphics.Printing.StandardPrintTaskOptions.ColorMode);
// Create a new list option
PrintCustomItemListOptionDetails pageFormat = printDetailedOptions.CreateItemListOption("PageContent", "Pictures");
pageFormat.AddItem("PicturesText", "Pictures and text");
pageFormat.AddItem("PicturesOnly", "Pictures only");
pageFormat.AddItem("TextOnly", "Text only");
// Add the custom option to the option list
displayedOptions.Add("PageContent");
printDetailedOptions.OptionChanged += printDetailedOptions_OptionChanged;
// Print Task event handler is invoked when the print job is completed.
printTask.Completed += async (s, args) =>
{
// Notify the user when the print operation fails.
if (args.Completion == PrintTaskCompletion.Failed)
{
await scenarioPage.Dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal, () =>
{
MainPage.Current.NotifyUser("Failed to print.", NotifyType.ErrorMessage);
});
}
};
sourceRequestedArgs.SetSource(printDocumentSource);
});
}
Le opzioni vengono visualizzate nell'interfaccia utente dell'anteprima di stampa nello stesso ordine in cui vengono aggiunte, con la prima opzione visualizzata nella parte superiore della finestra. In questo esempio, l'opzione personalizzata viene aggiunta per ultima in modo che venga visualizzata nella parte inferiore dell'elenco di opzioni. Tuttavia, è possibile inserirlo ovunque nell'elenco; le opzioni di stampa personalizzate non devono essere aggiunte per ultimo.
Quando l'utente modifica l'opzione selezionata nell'opzione personalizzata, aggiornare l'immagine dell'anteprima di stampa. Richiamare il metodo InvalidatePreview per ridisegnare l'immagine nell'interfaccia utente dell'anteprima di stampa, come illustrato di seguito.
async void printDetailedOptions_OptionChanged(PrintTaskOptionDetails sender, PrintTaskOptionChangedEventArgs args)
{
// Listen for PageContent changes
string optionId = args.OptionId as string;
if (string.IsNullOrEmpty(optionId))
{
return;
}
if (optionId == "PageContent")
{
await scenarioPage.Dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal, () =>
{
printDocument.InvalidatePreview();
});
}
}
Vedi anche
- Linee guida di progettazione per la stampa
- //Video build 2015: Sviluppo di app che stampano in Windows 10
- Esempio di stampa UWP
Commenti e suggerimenti
https://aka.ms/ContentUserFeedback.
Presto disponibile: Nel corso del 2024 verranno gradualmente disattivati i problemi di GitHub come meccanismo di feedback per il contenuto e ciò verrà sostituito con un nuovo sistema di feedback. Per altre informazioni, vedereInvia e visualizza il feedback per