I was looking at this issue a while back, but I was pulled on to other issues. I'm now back trying to figure out how to submit requests to the Arbortext Publishing Engine remotely.
I read the documentation and it appears that SOAP requests might be the way to go. I noticed that the SOAP requests are converted to HTTP requests under the covers, so I decided to test things out. I installed PE on a server and it appears to be working normally. It appears that the HTTP request should be fairly straight forward, but I must be missing something.
I installed a Chrome plug-in so that I could submit HTTP GET / POST requests. Then, I tried the following:
POST http://PE_server/e3/e3?file-type=xml&type=pdf&f=convert
Body: .ditamap file pasted directly into the message body
PDF (e3.pdf) is returned. But only the .ditamap is processed; none of the topicrefs / graphics files are processed. At least this tells me the "process" is working. However, I need to be able to submit the .ditamap, .dita files, and graphics files.
POST http://PE_server/e3/e3?type=pdf&file=C:\local_directory\rest_api_guide.ditamap&f=convert
Get the error:
<p>
e3::convert: input file name 'C:\local_directory\rest_api_guide.ditamap' does not exist.<p><B>Other information</B><BR> <B>Version: </B>7.0 M060 <BR> <B>Platform: </B>Windows Server 2012 R2 Standard <BR></P>
Next I tried copying all files to the PE server in a local directory and specifying the file parameter using the local directory on the PE server. I got the same error.
I really want to submit a .zip file anyway, so I tried to paste the zip file itself into the request body and used the following request:
POST http://PE_server/e3/e3?file-type=zip&type=pdf&input-entry=rest_api_guide.ditamap&f=convert
I get the following error:
<p> Failed to create directory 'C:\Windows\TEMP\e3temp_556\zip-in\ cover_header.eps
The directory e3temp_556 gets created but zip-in does not. If I create the zip-in directory on the PE server, I still get the error, but instead of zip-in, I get zip-in1 (the directory is incremented each time).
I am obviously doing something wrong, but I have no idea what? I wanted to ensure that I understood how this process worked before implementing a SOAP client. Any suggestions would be greatly appreciated.
You're on the right path. BTW, as well as a Chrome plugin you can use the "curl" command line tool to make HTTP requests.
Your first approach has the limitation that you discovered, although there is a way to send all required dependencies and assets to PE along with your .ditamap (don't ask me for details, but Windchill and Editor can be configured to work with PE this way, from memory).
I've never tried the .zip approach so not sure about that. Finally, the local directory approach should work, but I'm guessing path names are getting mangled or something on the way through?