PDFBox is an apache project much like POI, but is not an alternative as it creates PDF's not Excel files. In addition PDFBox suffers from the same issues as POI, that being it is written in Java, and the interface between it and RPG is somewhat slow. In addition, there are a number of native ways to generate a PDF on IBM i.
Mark Murphy
STAR BASE Consulting, Inc.
mmurphy@xxxxxxxxxxxxxxx
-----Roger Harman <roger.harman@xxxxxxxxxxx> wrote: -----
To: Midrange Systems Technical Discussion <midrange-l@xxxxxxxxxxxx>
From: Roger Harman <roger.harman@xxxxxxxxxxx>
Date: 03/02/2016 08:47AM
Subject: RE: Update Excel with RPG
A quick Google search turns up a number of alternatives....
https://pdfbox.apache.org/
And, an example of using PdfBox...
http://stackoverflow.com/questions/18098400/how-to-get-raw-text-from-pdf-file-using-java
Roger Harman
COMMON Certified Application Developer - ILE RPG on IBM i on Power
-----Original Message-----
From: MIDRANGE-L [mailto:midrange-l-bounces@xxxxxxxxxxxx] On Behalf Of John Yeung
Sent: Tuesday, March 01, 2016 3:31 PM
To: Midrange Systems Technical Discussion
Subject: Re: Update Excel with RPG
On Tue, Mar 1, 2016 at 10:50 AM, Mark Murphy/STAR BASE Consulting Inc.
<mmurphy@xxxxxxxxxxxxxxx> wrote:
Porting a C or C++ library to ILE C/C++ to be called by RPG would be significantly more performant than Java, and not Goldbergian at all.
I agree it would be more performant than Java, especially if you're not crossing the boundary between "native" and PASE. Even if you were relying on PASE, C/C++ should be faster than Java (both on PASE).
I also agree that a native port to ILE C/C++ would be less Goldbergian to *use* than a PASE port, but the native port would also require greater effort to create in the first place. It's hard for me to envision anyone having the required time, expertise, and interest to do it when the pre-existing options (including RPG wrappers for POI) are not all that horrible.
As far as Python goes, I do not know much about it other than it cares about proper indenting to know which statements go with which control blocks. Can it be called by a program object?
Depends on what you mean. The iSeriesPython interpreter is a native i command (*CMD). You call it more or less like you would call the Rexx interpreter, so in practice the calling program would have to be a CLP, or the job scheduler, or use QCMDEXC or QCAPCMD. Scripts in either Python or Rexx are not stand-alone executables, but effectively an input parameter to the interpreter. You can also pass additional input parameters, but there is no way to get information out directly from the call. (The script's only means of returning information is through writing to a file, data area, user space, spooled file, socket, etc.)
I haven't used IBM's Python for PASE, but I imagine the parameter situation is pretty much the same as for iSeriesPython.
Can it call into a program object, or better a service program?
iSeriesPython scripts can call native program objects (*PGM) no problem, with both input and output parameters. It looks like the guy who created iSeriesPython intended for you to be able to call service program procedures as well, but that interface is at least partially broken and I haven't bothered to test it extensively enough to know if it's completely broken.
I have no experience with IBM's Python for PASE, but I don't think it can call native programs directly. It uses XMLSERVICE to do much (maybe all?) of the interop with the native side.
John Y.
--
This is the Midrange Systems Technical Discussion (MIDRANGE-L) mailing list To post a message email: MIDRANGE-L@xxxxxxxxxxxx To subscribe, unsubscribe, or change list options,
visit:
http://lists.midrange.com/mailman/listinfo/midrange-l
or email: MIDRANGE-L-request@xxxxxxxxxxxx Before posting, please take a moment to review the archives at
http://archive.midrange.com/midrange-l.
Please contact support@xxxxxxxxxxxx for any subscription related questions.
As an Amazon Associate we earn from qualifying purchases.