Skip to main content

Generate PDF files from HTML DB w/out Java!

The question: How do I print PDF documents with HTML DB?

The answer (maybe): PL/PDF

Looks like the folks at PL/PDF have some instructions on how to set it up in an HTML DB environment. For only $300, it seems like a good deal. It's not WYSIWYG, but the code for a complex master-detail report, which contains page breaks and headings on each page, is not that bad.

If you host your HTML DB site with Revion, PL/PDF is even included as a part of their package.

I have not tested this out yet, but am anxious to do so, as I'm sure it will come in handy!


colin said…
The product looks impressive for what it is supposed to do. Looking throught rhe revision history, it apprears to be regularly improved upon.

The only problem is that you cannot conveniently buy it online, forced to use a Telegraphic Transfer form of payment.
Robert said…
>> The answer (maybe): PL/PDF

I agree.
That was what I thought when I read about it in a forum thread.
For a little money you avoid the nitty-gritty and get things done.
Scott said…
It is worth a look, as quite honestly, there just isn't anohter viable solution for many people. Sure, you can use Oracle Reports, but it's 1) not cheap and 2) not that easy to use.


- Scott -
Anonymous said…
This software is a good hint.
Our similar problem was how to convert simply ascii-reports (generated to files in the operating system) to pdf-files.
Our approach to solution was
* use existing oracle reports server
* one report which makes a select * from the ascii-file using external tables
* within the db: utl_http to call the report via web and store the pdf-file into a blob or again back into the filesystem
(our issue was that we had no direct access to the file-system exception for utl_file).
Anonymous said…
Any word on testing this product? Just wondering if you had time to test and comment your thoughts.
Scott said…
I took a look at it a while back, and it looked promising.

You do have to write code to get things to work, so it's a bit abstract in that regards. Think of it as hand-coded PL/SQL web pages for PDF Reports...

There is a good chance that I will be using it for an upcoming project where PDF printing is a requirement.

You can download & try it for free, and there are plenty of helpful examples to get you up & running.


- Scott -
Anonymous said…
Is'nt Oracle Reports just $50 per named user?
Question: can it be used with Oracle XE?
Scott said…
Is'nt Oracle Reports just $50 per named user?

I believe that it's MUCH more than that, but I could be wrong...

Question: can it be used with Oracle XE?

According to the PL/PDF site, yes:


- Scott -
Anonymous said…
I purchased two PL/PDF licenses and have been using them with Apex 2.1 in Oracle XE.

I generate my reports using PL/PDF which is then presented to the user in an Apex HTML region using an IFRAME to embed the report into the web page.

Works great. Looks great. Note that you will be hand-coding your reports - this is not some high-level report generator. But for me, this is exactly what I was wanting.
Sourabh said…
Is there any way we can use PL/PDF to convert HTML into a PDF form?
Something like... "Pass a URL/BLOB that provides a well formed HTML to PL/PDF and get a PDF document".
Rather than using an external service to do this I would like to use PL/PDF for this purpose.
Has anyonr tried anything on these lines??
Anonymous said…
I saw a free pl/sql package that generates PDF. That does the stuff without java.
Scott said…
Interesting... I'll have to check it out and see how it compares to PL/PDF.


- Scott -

Popular posts from this blog

Logging APEX Report Downloads

A customer recently asked how APEX could track who clicked “download” from an Interactive Grid.  After some quick searching of the logs, I realized that APEX simply does not record this type of activity, aside from a simple page view type of “AJAX” entry.  This was not specific enough, and of course, led to the next question - can we prevent users from downloading data from a grid entirely?

I knew that any Javascript-based solution would fall short of their security requirements, since it is trivial to reconstruct the URL pattern required to initiate a download, even if the Javascript had removed the option from the menu.  Thus, I had to consider a PL/SQL-based approach - one that could not be bypassed by a malicious end user.

To solve this problem, I turned to APEX’s Initialization PL/SQL Code parameter.  Any PL/SQL code entered in this region will be executed before any other APEX-related process.  Thus, it is literally the first place that a developer can interact with an APEX page…

Custom Export to CSV

It's been a while since I've updated my blog. I've been quite busy lately, and just have not had the time that I used to. We're expecting our 1st child in just a few short weeks now, so most of my free time has been spent learning Lamaze breathing, making the weekly run to Babies R Us, and relocating my office from the larger room upstairs to the smaller one downstairs - which I do happen to like MUCH more than I had anticipated. I have everything I need within a short walk - a bathroom, beer fridge, and 52" HD TV. I only need to go upstairs to eat and sleep now, but alas, this will all change soon...

Recently, I was asked if you could change the way Export to CSV in ApEx works. The short answer is, of course, no. But it's not too difficult to "roll your own" CSV export procedure.

Why would you want to do this? Well, the customer's requirement was to manipulate some data when the Export link was clicked, and then export it to CSV in a format…

Refreshing PL/SQL Regions in APEX

If you've been using APEX long enough, you've probably used a PL/SQL Region to render some sort of HTML that the APEX built-in components simply can't handle. Perhaps a complex chart or region that has a lot of custom content and/or layout. While best practices may be to use an APEX component, or if not, build a plugin, we all know that sometimes reality doesn't give us that kind of time or flexibility.While the PL/SQL Region is quite powerful, it still lacks a key feature: the ability to be refreshed by a Dynamic Action. This is true even in APEX 5. Fortunately, there's a simple workaround that only requires a small change to your code: change your procedure to a function and call it from a Classic Report region.In changing your procedure to a function, you'll likely only need to make one type of change: converting and htp.prn calls to instead populate and return a variable at the end of the function. Most, if not all of the rest of the code can remain un…