PB2019R3
Oracle 12C for now, then we get to do this in PostgreSQL v12 where the datatype = "bytea"
Windows 10 platform
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
UPDATE on 28-AUG-2022:
This works:
With all the status and error checking, and all the WHAT-IFs removed, here's my code to store the PDF as a blob:
ls_pathfile = Trim (sle_pdf.Text )
ll_fileno = FileOpen (ls_pathfile, StreamMode!, Read!, Shared!)
ll_bytes = FileReadEx (ll_fileno, lblob_pdf)
UPDATEBLOB notice_list
SET pdf_blob = :lblob_pdf
WHERE bill_fccid = :is_billfccid
AND notice_idx = :ll_idx
USING sqlcA;
sqlca.sqlCode = 0
sqlca.sqlNRows = 1
With all the status and error checking, and all the WHAT-IFs removed, here's my code to reconstruct the blob as a PDF:
SELECTBLOB pdf_blob
INTO :lblob_pdf
FROM notice_list
WHERE bill_fccid = :is_billfccid
AND notice_idx = :ll_idx
USING sqlca;
ls_label = dw_text.GetItemString (1, "label")
ls_filename = "<valid path>" + "_" + ls_label + ".pdf"
ll_filenew = FileOpen (ls_filename, StreamMode!, Write!, LockReadWrite!, lwn_writemode)
ll_rc = FileWriteEx (ll_filenew, lblob_pdf)
ll_rc = FileClose (ll_filenew)
It's literally that simple, but learning the above was difficult and the HELP files were not much help.
Hopefully others can use this blessedly simple tutorial! :)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
This is stupid simple in concept, so I MUSt be doing something wrong.
I want to:
1) Save a PDF into the database
2) Retrieve the PDF file from the database
3) Append the PDF to my invoice, which is a PrintJob with multiple DWs Printing to a single PDF file using NativePDF.
After much research, the plan is to use blobs.
I was able to create a BLOB column in the table:
// I can convert the file into a blob and save it
1) Call FileOpen() in StreamMode
2) Call FileReadEx() in a loop reading 32765 bytes at a time into a blob variable
3) Call FileClose () when the read loop completes
4) Call UpdateBlob() to save into an existing entry in the database
// Read the blob from the database
1) Use BlobMid() in a loop to read the PDF file from the database into a blob variable
Now what?
I can write the data to a new file, but then how do I append the new PDF file to my dw PrintJob generated invoice?
What I want to do (I think) is add the blob to a DW whose freeform, external DWO only has a single BLOB column in it.
Sadly, I cannot make this work.
In the Database Painter, when I click on the column "pdf_blob" to add the column to the DWO, I get this:
I've no idea what this means.
I cannot find any examples or explanation of this error, nor steps on how to resolve it.
How can I get the PDF file, either from a blob format or from an actual PDF file, into a DW so I can append it to my current PrintJob?
Or is there a better wayto append the PDF to the invoice?