Vyhledání nainstalovaných tiskáren pomocí úlohy skriptu

Platí pro:SQL Server SSIS Integration Runtime v rámci Azure Data Factory

Data, která jsou transformována balíčky integračních služeb, často mají jako konečnou cílovou kartu tištěnou zprávu. Jmenný prostor System.Drawing.Printing v Microsoft .NET Frameworku poskytuje třídy pro práci s tiskárnami.

Note

Pokud chcete vytvořit úkol, který lze snadněji znovu použít napříč více balíčky, zvažte použití kódu v tomto ukázkovém skriptu úlohy jako výchozího bodu pro vlastní úkol. Další informace naleznete v tématu Vývoj vlastníhoúloh .

Description

Následující příklad lokalizuje tiskárny nainstalované na serveru, které podporují papír v legální velikosti (jak se používá ve USA). Kód pro kontrolu podporovaných velikostí papíru je zapouzdřen v soukromé funkci. Aby bylo možné sledovat průběh skriptu při kontrole nastavení každé tiskárny, skript využívá Log tuto metodu k vyvolání informační zprávy tiskárnám s papírem legální velikosti a k upozornění tiskárnám bez papíru s legální velikostí. Tyto zprávy se objevují v okně Output v IDE Microsoft Visual Studio Tools for Applications (VSTA) při spuštění balíčku v designéru.

Pro konfiguraci tohoto příkladu Script Task

  1. Vytvořte proměnnou pojmenovanou PrinterList typem Object.

  2. Na stránce Script v Editoru úloh skriptů přidejte tuto proměnnou do vlastnosti ReadWriteVariables.

  3. V projektu skriptů přidejte odkaz na jmenný prostor System.Drawing .

  4. Ve svém kódu použijte příkazy Imports k importu jmenných prostorů System.Collections a System.Drawing.Printing .

Code

Public Sub Main()  
  
    Dim printerName As String  
    Dim currentPrinter As New PrinterSettings  
    Dim size As PaperSize  
  
    Dim printerList As New ArrayList  
    For Each printerName In PrinterSettings.InstalledPrinters  
        currentPrinter.PrinterName = printerName  
        If PrinterHasLegalPaper(currentPrinter) Then  
            printerList.Add(printerName)  
            Dts.Events.FireInformation(0, "Example", _  
                "Printer " & printerName & " has legal paper.", _  
                String.Empty, 0, False)  
        Else  
            Dts.Events.FireWarning(0, "Example", _  
                "Printer " & printerName & " DOES NOT have legal paper.", _  
                String.Empty, 0)  
        End If  
    Next  
  
    Dts.Variables("PrinterList").Value = printerList  
  
    Dts.TaskResult = ScriptResults.Success  
  
End Sub  
  
Private Function PrinterHasLegalPaper( _  
    ByVal thisPrinter As PrinterSettings) As Boolean  
  
    Dim size As PaperSize  
    Dim hasLegal As Boolean = False  
  
    For Each size In thisPrinter.PaperSizes  
        If size.Kind = PaperKind.Legal Then  
            hasLegal = True  
        End If  
    Next  
  
    Return hasLegal  
  
End Function  
public void Main()  
        {  
  
            PrinterSettings currentPrinter = new PrinterSettings();  
            PaperSize size;  
            Boolean Flag = false;  
  
            ArrayList printerList = new ArrayList();  
            foreach (string printerName in PrinterSettings.InstalledPrinters)  
            {  
                currentPrinter.PrinterName = printerName;  
                if (PrinterHasLegalPaper(currentPrinter))  
                {  
                    printerList.Add(printerName);  
                    Dts.Events.FireInformation(0, "Example", "Printer " + printerName + " has legal paper.", String.Empty, 0, ref Flag);  
                }  
                else  
                {  
                    Dts.Events.FireWarning(0, "Example", "Printer " + printerName + " DOES NOT have legal paper.", String.Empty, 0);  
                }  
            }  
  
            Dts.Variables["PrinterList"].Value = printerList;  
  
            Dts.TaskResult = (int)ScriptResults.Success;  
  
        }  
  
        private bool PrinterHasLegalPaper(PrinterSettings thisPrinter)  
        {  
  
            bool hasLegal = false;  
  
            foreach (PaperSize size in thisPrinter.PaperSizes)  
            {  
                if (size.Kind == PaperKind.Legal)  
                {  
                    hasLegal = true;  
                }  
            }  
  
            return hasLegal;  
  
        }