Pascal Script

  • 11 Aug

    How to send zpl file to Zebra printer using Limagito file mover

    Q: How to send zpl file to Zebra printer. Do you have a solution in Limagito to send Zpl files to a printer? Zpl is a standard language for label printers.
    A: On request we added an option in Limagito File Mover v2023.8.10.0. The customer did some successful tests. These new options should be able to send other Zpl like type of files (EPL,..) to printers too.

    • In our example we used a Windows folder as Source, searching for zpl files:

    limagito file mover windows folder as source

    • We enabled ‘Exclude Files In Use’ because we don’t want to touch source .zpl file that are still being created:

    limagito file mover exclude files in use

    • Please set the Filename Include filter to *.zpl because we only need this type of files:

    limagito file mover filename include filter

    • Our Rule will be triggered every 30 seconds using a scan timer (Schedule Setup button):

    limagito file mover scan timer setup

    • As function we used ‘Move’ because after a successful print we want to delete the source .zpl file:

    limagito file mover function setup

    • As Destination we are going to use a Script:

    limagito file mover as Destination

    Var
      iList: Integer;
      tmpInfo, tmpFile, tmpString: String;
      tmpList: TStringList;
    Begin
      psExitCode:= 0;
      // ... add your code here
      tmpFile := psFilePath + psFileName;
      // Do Send
      tmpList := TStringList.Create;
      Try
        tmpList.CommaText := psGetPrinters;
        If tmpList.Count > 1 Then
        Begin
          For iList := 0 To (tmpList.count-1) Do 
            psLogWrite(1, '', 'Installed printer [' + IntToStr(iList+1) + ']: ' + tmpList.Strings[iList]);
          psLogWrite(1, '', 'Default printer: ' + psGetDefaultPrinter);
        End
        Else
          psLogWrite(1, '', 'No printer installed');        
        psLogWrite(1, '', 'Send file "' + tmpFile + '" to printer');
        Try
          tmpList.Clear;
          tmpList.LoadFromFile(tmpFile);
          If tmpList.Count > 0 Then
          Begin
            tmpString := tmpList.Text;
            // Method 1
            tmpInfo := psPrintRawString(tmpString, '');
            // Method 2
            // tmpInfo := psPrintRawList(tmpList, '');
            // Debug
            If tmpInfo <> '' Then
            Begin
              psLogWrite(1, '', 'Sent to printer error: ' + tmpInfo);
            End Else
            Begin
              psExitCode := 1;  
              psLogWrite(1, '', 'Sent to printer successfully: ' + tmpFile);
            End;
          End
          Else
          psLogWrite(1, '', 'Found empty file: ' + tmpFile);
        Except
          psLogWrite(1, '', 'LoadFromFileError: ' + tmpFile);
        End;
      Finally
        tmpList.Free;
      End;
    End.
    

    The script above will load the content of the .zpl (or other raw type of files) and will send this data to a selected printer.

            // Method 1
            tmpInfo := psPrintRawString(tmpString, ”);

    By default we’ll use the ‘Default’ printer in Windows which means the Zebra printer should be set as Default printer. If you want to use a Zebra printer that is not set to default in Windows you’ll need to add the printer name to the function.

    Suppose the installed Zebra printer name is: My Zebra Printer

            // Method 1
            tmpInfo := psPrintRawString(tmpString, ‘My Zebra Printer’);

    To help you with the printer names, the script will wrote the names in the RunTime log if you trigger the Rule (please check the output of the RunTime log in the screenshot below).

    limagito file mover send zpl file to Zebra printer

    • RunTime Log result:

    limagito runtime log

    If you need any info about this new ‘zpl file to Zebra printer’ option, please let us know.

    #zpl #zebra #filetransfer #filemanagement

    Best regards,

    Limagito Team

    By Limagito-Team Pascal Script Printer , , ,
  • 01 Aug

    How to scan a folder to look for a number of files, then start the transfer?

    Q: How to scan a folder to look for a number of files, then start the transfer? We are a licensed customer of Limagito. Is it possible to scan a folder to look for 6 files, then start the transfer?  If there are less than 6 files, none of the files are transferred.

    A: This is possible with a Windows folder/Share [WIN] as Source. We added some screenshots to get you started.

    • Add Windows folder/share as Source:

    limagito file mover source setup

    •  Open our Pascal Script option:

    limagito file mover pascal script option

    • Please enable and add the following ‘On Rule Begin’ Pascal Script (script attached in txt file). You can modify the amount (ctMinFiles) or search filter (*.*) if needed.
    Var
      tmpCounter: Integer;
    Const
      ctMinFiles = 6;
    Begin
      psExitCode := 0;
      // ... add your code here
      // If you want to scan subirectories
      // tmpCounter := psCountFiles(psSourcePath, '*.*', True);
      // In this example we will not scan the subdirectories of the source folder
      tmpCounter := psCountFiles(psSourcePath, '*.*', False);
      If tmpCounter >= ctMinFiles Then
      Begin
        psLogWrite(1, '', 'Files count successful: ' + IntToStr(tmpCounter));     
        psExitCode := 1;
      End  
      Else
        psLogWrite(1, '', 'Not enough files, count: ' + IntToStr(tmpCounter));     
    End.

    limagito file mover look for a number of files

    • Click F9 and check the log window in the Pascal Script setup. It should show ‘Compiled Successfully’.

    limagito file mover pascal script compile result

     

    If you need any info about this ‘look for a number of files’ question, please let us know.

    Best regards,

    Limagito Team

  • 29 Jun

    How to increment the date in a filename by plus one day

    Q: Is it possible to rename a file containing a date string when copying it to increment the date in the filename by plus one day?

    where yyyymmddxx_I.p1.pdf the yyyymmdd will increase by +1

    Examples

    • Input: 2022010501_I.p1.pdf
      • Output: 2022010601_I.p1.pdf
    • Input: 2023123101_I.p1.pdf
      • Output: 2024010101_I.p1.pdf

    A: Yes this is possible. Please have a look at the following screenshots.

    • We used a Windows folder as Source (can be any other type of Source too):

    limagito file mover windows folder as source

    • Open our Pascal Script option:

    limagito file mover pascal script option

    • Enable and Add the following ‘On Destination’ Pascal Script:
    Var
     tmpFilename, tmpDateStr: String;
     tmpDate: TDateTime;
    Const
      ctDateFormatOld = 'YYYYMMDD'; ctDateSepOld = #0;
      ctDateFormatNew = 'YYYYMMDD';
    Begin
    (*
    Example:
    Input: 2022010501_I.p1.pdf
    Output: 2022010601_I.p1.pdf
    *)
      psExitCode:= 0;
      // ... add your code here
      tmpFilename := psFilename;
      If length(tmpFilename) >= 8 Then
      Begin
        Try
          tmpDateStr := Copy(tmpFilename, 1, Length(ctDateFormatOld));
          tmpDate := psStrToDate(tmpDateStr, ctDateFormatOld, ctDateSepOld);
          tmpDate := psIncDay(tmpDate, 1);
          psVSA := FormatDateTime(ctDateFormatNew, tmpDate);
          psExitCode:= 1;
        Except
          psLogWrite(1, '', 'Strip Date from File exception on ' + psFilePath + psFilename);
        End;
      End
      Else
      Begin
        psLogWrite(1, '', 'Strip Date length of File error on ' + psFilePath + psFilename);
      End;
    End.

    limagito file mover pascal script setup

    • Open our Destination setup

    limagito file mover destination setup

    • We used a Windows folder as Destination:

    limagito file mover windows folder as destination

    • Enable ‘Rename Files during Copy/Move’ and click the ‘Rename Filter Setup’ button:

    limagito file mover file rename option

    • Add the following ‘File Rename’ setup:
      • RegEx:  .{8}(.*)
      • Replacement:  %VSA\1

    limagito file mover file rename setup

    • RunTime Log result:

     

    limagito file mover runtime log result

    #mft #Filetransfer #rename

    If you need any info about this “increment the date in a filename” request, please let us know.

    Best regards,

    Limagito Team

1 7 8 9 10 11 12 13 30
SEARCH