Has anyone else tried printing to SATO printers using ADS, or created / modified a XDC file for printing to SATO printers?
We will be migrating to MII 15 shortly and are looking at replacing our current label printing process with ADS to print to our SATO CL408e label printers.
Steps taken:
- Created XDP files to test with using Adobe LiveCycle designer
- Uploaded the XDP files to web folder in MII
- Created a transaction that passes XML data to the ADS action block
- Set the ADS action block to use the XDP file from the web folder, set the Print object to true, and the PrintingCopies object to 1
- Tried printing to various printers defined in the Windows hosted print server
- Successfully printed to a Cannon laser printer after copying a XDC file containing the printer stock definitions to the \global\AdobeDocumentServices\lib\ folder on the MII 15 server and setting this file in the action block links XDCFilePath object
- Tried to do the same with a SATO CL408e label printer, but it didn't print. The printer queue in Windows showed the print job come in and it was released to the printer without any errors. I tried printing by using every XDC file available on the server without any success.
[EDIT 1]
I have been working with SATO to see if this is possible. Here is what I learned:
- ADS does NOT have native support for printing to SATO printers. I looked at the raw data sent to the printer for every XDC file provided by SAP and there were not any that produced a data stream in SBPL.
- A proposed option is to update the SATO firmware to use Zebra emulation, but this is not feasible for my company.
- A custom XDC file will need to be created to output SBPL structured code to SATO printers.
I am baffled why there isn't native support for ADS to print to SATO devices. It doesn't look like there are many new (if any) released standard XDC files since 2007. If anyone has already created a XDC file to do this, please share.
A guide to programming in SBPL:
[EDIT 2: 12/21/2015]
I found SAP note 1444342: http://service.sap.com/sap/support/notes/1444342 that looks promising.
"You want to print forms that were generated by ADS on printers that are not defined with a device type in accordance with Note 685571 (that is, they are not assigned to an XDC file). This was not previously possible. Due to the new component SAPPDFPRINT, interactive forms can be printed on any Windows printer just like all of the other spool requests with the SAPWIN device types."
The SWIN device type allows you to use any printer or fax that the Microsoft Windows Print Manager can use, regardless of whether or not a device type for the printer/fax has been defined in the SAP System. In this case, it is actually the Microsoft Windows Print Manager and Windows driver that format a document producing an output-ready data stream.
I will try the steps from the above note on our MII 15 server. Once I have the software installed and tested, I will add my finding to this post.
[EDIT 3: 12/23/2015]
I could not get the SAPsprint service to print PDFs to SATO printers. My thought was that I could open a PCo connection from an MII transaction and send the ADS Printing PDF output data to SAPsprint using a socket connection:
XML Data => ADS Printing Action Block => PCo Socket Connection => SAPsprint Service => Printer Queue
The job would come in to the SAPsprint service on the MII server, but would not show up in the printer queue. I changed the PDF Options to enable Print PDF as RAW setting. The job then showed up in the printer queue, but it wasn't in the required SBPL format for label printing.
From my findings, it looks like SAPsprint / SAPPDFPRINT just may not work for SATO printers. Unless I missed a configuration option, I am out of ideas trying to print PDF forms with MII using this method.
We really need a solution for this soon. A ticket has been opened with the SAP MII team, hoping they can provide some incite into this problem.
[EDIT 4: 12/28/2015]
I was able to print a PDF sent to SAPsprint using a socket connection to a SATO CL408e printer using C#. I found that Adobe Reader needed to be installed on the server. I am stuck on the PCo tag query part. Command reference here: https://www.ietf.org/rfc/rfc1179.txt
From my understanding, LPR/LPD requires the following messages:
MII => LPR <02><Printer Name><LF>
LPR => MII <ACK>
MII => LPR <02><NUM BYTES IN CONTROL FILE><SPACE><CONTROL FILE NAME><LF>
LPR => MII <ACK>
MII => LPR <CONTENTS OF CONTROL FILE><0>
LPR => MII <ACK>
MII => LPR <03> <NUM BYTES IN DATA FILE><SPACE><DATA FILE NAME><LF>
LPR => MII <ACK>
MII => LPR <CONTENTS OF DATA FILE><0>
LPR => MII <ACK>
I need to be able to send this information to port SAPsprint port 515 on the MII server using PCo.
I created a PCo query that uses:
CALL SEND(address='127.0.0.1', port='515', message=[Param.1]);
[Param.1] is being passed in as a link from the transaction.
I was hoping to do something similar to this, or if possible reduce the number of socket messages:
I don't think it is possible to wait for the ACK messages, but data is being sent to SAPsprint now.
SAPsprint Log |
---|
ERROR 1 Th 16428: (28.12.2015 13:25:40) Receive job for printer F3MDC.SATO (Berkley protocol). Th 16428: (28.12.2015 13:25:40) Error: AwaitNullbyte: Nullbyte expected, protocol error on ni 53007200 - aborting. Th 16428: (28.12.2015 13:25:40) Filename used is dfA8MII15demo Th 16428: (28.12.2015 13:25:40) Error: Controlfile is missing (protocol or network problem). No printout. ERROR 2 Th 12748: (28.12.2015 13:28:43) Receive job for printer F3MDC.SATO (Berkley protocol). Th 12748: (28.12.2015 13:28:43) Error: Unknown receive job command, buff[0] = 64 |
The current problems I am working through are:
1. MII is not sending the HEX value of 0x00 which is required when sending the PDF data to SAPsprint. I tried using null, stringnull, \00, and � in the Links expression editor without luck. The control file also requires a NULL character at the end of the send data command.
2. When I include a control file, I get an "Unknown receive job command, buff[0] = 64" error. This error means that the second command isn't recognized by SAPsprint. <02><NUM BYTES IN CONTROL FILE><SPACE><CONTROL FILE NAME><LF> This command is working in C#, not sure why it isn't with the PCo Socket Agent. If I exclude the command file, there is an "Error: Controlfile is missing."
Any help is appreciated.
Thanks,
Eric