L_PrnGetRemoteData

#include "Ltprinter.h"

L_LTPRINTER_API L_INT L_PrnGetRemoteData(pszPrinterName, nJobId, pJobData)

L_TCHAR * pszPrinterName;

/* printer name */

L_INT nJobId;

/* job ID */

PRNJOBDATA *pJobData;

/* pointer to structure */

Obtains the remote data attached to the print Job ID.

Parameter

Description

pszPrinterName

Character string that contains the printer name.

nJobId

ID of the job to retrieve remote data.

pJobData

Pointer to a PRNJOBDATA structure to be updated with the remote data.

Returns

SUCCESS

The function was successful.

< 1

An error occurred. Refer to Return Codes.

Comments

Comments

The L_PrnGetRemoteData function will obtain the pJobData structure data that was sent from the client machine printer driver, after the callback function L_PrnClntPrintJob was faired at the job is being printed.

Required DLLs and Libraries

LTPRINTER

For a listing of the exact DLLs and Libraries needed, based on the toolkit version, refer to Files To Be Included With Your LEADTOOLS Network Virtual Printer Driver Server Application.

Platforms

Win32, x64.

See Also

Functions:

L_PrnSetEnableNetworkPrinting, L_PrnSetNetworkInitialData, L_PrnIsNetworkPrintingEnabled, L_PrnGetNetworkInitialData, L_PrnInstallPrinter, L_PrnUninstallPrinter

Topics:

Working with the LEADTOOLS Network Virtual Printer Driver

Example

/* Job Callback */

L_INT EXT_CALLBACK OnNetworkJobInfoProc(L_WCHAR *  pszPrinter,
                                 DWORD    dwJobID,
                                 DWORD    dwFlags,
                                 L_VOID * pData)
{
   UNREFERENCED_PARAMETER(pData);
   USES_CONVERSION;

   L_WCHAR szResult[ 250 ]; 
   wsprintfW( szResult, L"Job ID: %d.\nOn printer: ", dwJobID ); 
   lstrcatW( szResult, pszPrinter ); 

   switch( dwFlags ) 
   {
   case PRN_JOB_START: 
      PRNJOBDATA jobData;
      MessageBoxW( NULL, szResult, L"Starting", MB_OK ); 

      //Read the remote data sent by the client machine
#if defined(FOR_UNICODE)
      L_PrnGetRemoteData(pszPrinter, dwJobID, &jobData);
#else
      L_PrnGetRemoteData(W2A(pszPrinter), dwJobID, &jobData);
#endif
      
      if(&jobData == NULL)
         return 0;
      break; 
   case PRN_JOB_END: 
      MessageBoxW( NULL, szResult, L"Ending", MB_OK ); 
      break; 
   default:
      {
         L_TCHAR szPrinter[_MAX_PATH];
         memset(szPrinter, 0, sizeof(szPrinter));

#if defined(FOR_UNICODE)
         wcscpy_s(szPrinter, pszPrinter);
#else
         size_t num = 0;
         wcstombs_s(&num, szPrinter, pszPrinter, _MAX_PATH);
#endif // #if !defined(FOR_UNICODE)

         int nBytes = 0, nElements = 0;
         TCHAR * pszString = NULL;
         L_INT nRet = L_PrnGetEmbeddedFonts(TEXT("C:\\Path to font folder\\"), dwJobID, pszString, &nBytes, &nElements);
         if (nRet == TRUE)
         {
            pszString = (PTCHAR) malloc(nBytes);
            nRet = L_PrnGetEmbeddedFonts(TEXT("C:\\Path to font folder\\"), dwJobID, pszString, &nBytes, &nElements);

            for (int i = 0 ; i < nElements ; i++)
            {
               TCHAR * strFont = &pszString[MAX_PATH * i];
               MessageBox(NULL, strFont, TEXT("Font Received"), 0);
            }

            free(pszString);
         }

         L_PrnCancelPrintedJob(szPrinter, dwJobID);
      }
   }

   return 1; 
}

L_LTPRINTERTEX_API  L_VOID NetworkPrinterExample( ) 
{
   int nRet = L_PrnRegisterJobCallback(TEXT("TEST LEADTOOLS Printer"),OnNetworkJobInfoProc,NULL);


   // Enable network printing
   L_PrnSetEnableNetworkPrinting(TEXT("TEST LEADTOOLS Printer"), TRUE);

   L_BOOL bEnableNetwork = FALSE;
   // Check if network printing is enabled
   L_PrnIsNetworkPrintingEnabled(TEXT("TEST LEADTOOLS Printer"), &bEnableNetwork);

   if(!bEnableNetwork)
      return;

   L_CHAR *pCharData = "Network Printer Initial Data\0";
   L_LONG nInitialDataLenght = (L_LONG)strlen(pCharData);

   // Set Initial Network Data
   L_PrnSetNetworkInitialData(TEXT("TEST LEADTOOLS Printer"), (L_UCHAR*)pCharData, nInitialDataLenght);


   HGLOBAL hGlobal = NULL;
   L_LONG nGlobalDataSize;
   // Get Initial Network Data
   L_PrnGetNetworkInitialData(TEXT("TEST LEADTOOLS Printer"), &hGlobal, &nGlobalDataSize);

   if( nGlobalDataSize == nInitialDataLenght)
   {
      //Data set shoud be equal to data returned
      return;
   }
   
   if (nRet == SUCCESS)
   {
      L_PrnUnRegisterJobCallback(TEXT("TEST LEADTOOLS Printer")) ;
   }
}