And now, for my last post of the day (or is it? :D)… being an Apple fan I couldn’t let the launch of the new MacBook Pro unnoticed. Check out the new cool stuff at Apple’s.
For long ColdFusion has been known as a web app server (which is true, for that matter). But recently I was proposed a challenge. A customer already had CF8 Enterprise to deliver their intranet and also a B2B system. But to the date there was no real integration between the B2B system and the company’s ERP. A daily database sync was pretty much all the integration there was. The customer also didn’t want to buy the ERP’s middleware server (it had an outraging cost for what it did, I must admit). So I was asked if I could link the systems using CF8.
Did some digging on the ERP information and communication structure, analyzed some processes, did some architecture design and a few weeks later I was able to provide a multi-layer integration system for the customer. I’ve used several functionalities on ColdFusion like XML generation and validation and gateways. Because I didn’t want to hack the database directly I managed to get all the requests routed into the ERP by creating a custom gateway in Java. Ok,ok, so it was not JUST ColdFusion but I only used the Java to handle things on the ERP side. All information mapping and transformation where actually done in ColdFusion.
So maybe this isn’t the most compelling stuff I could post here but I just wanted to share my experience and demonstrate that ColdFusion is becoming an all-purpose application server and not just something for “web pages”. By the way, I also have some database replication scripts entirely running on ColdFusion ![]()
So, a couple of weeks ago I had a customer asking me to pick a bunch of PDF files (over 900) and add a watermark to all of them with a static sentence: “CONFIDENTIAL”. Ok, so far so good, Acrobat does it smoothly. The worst was that the sentence continued with a dynamic part. Basically it should sport an order number and also, because its distribution was controlled, it need to have a control number. The dynamic content was coming from their existing CF based intranet. All in all, the sentence which comprised the watermark should be something like this: “CONFIDENTIAL - ORDER NR. 00000 - COPY NR.00000″.
The customer has ColdFusion 8 so I immediately thought “CFPDF to the rescue”. Well, not quite. Because they wanted to place the watermark in a specific place of the page and because I needed to create a text-based watermark. I don’t get why but the system was creating the watermark as an image so, with the text was being created a white square that dimmed the text under it. The PDF files were digitized tables and were dealt with as images so, making the watermark go behind the text was not an option.
Enter DDX! After digging around a little bit (not much really) I was able to find that I could manipulate the PDF files from within CF using DDX. DDX is an XML document definition format developed by Adobe for Livecycle which allows the developer to manipulate a great variety of aspects of PDF files, from formating, to security, to structure and even the creation of custom tables of contents and page thumbnails. Jeff Chastain has a great article about it at Adobe’s Developer Center (that’s actually the resource I used to solve my problem). Check it out as he already explains it very well, no need for me the reinvent the wheel
You can also find the DDX livedocs here!
Another alternative to handle PDF files is the Java library iText. Personally I’ve used it and it’s very powerful but for simpler stuff I think DDX is more immediate, but that’s just me. Good news for the poor developers who are forced to use .NET, there’s a port of iText called….guess it…… surprise: iText.NET ![]()
cfExt is a ColdFusion wrapper for the ExtJS javascript library but unlike ColdFusion 8 original support for ExtJS 1.0, cfExt wraps ExtJS 2.0. It’s being developed by Dan Vega (kudos to you Dan) and, even if it’s a work in progress, it’s already a very cool tool. Check it out at RIAForge
You may be aware that Google as a toolkit out there to help Java developers to code cool ajax web applications - it’s called the Google Web Toolkit (GWT). However, even if powerful and relatively easy to use, GWT is, and forgive me for the bluntness, “butt ugly”. On the other side of the fence we have ExtJS with gracious and visually pleasant widgets. Some folks had this great idea of combining the two of them and out it comes GWT-Ext now on it’s 2.0 version. They’re sporting a kick-ass demo gallery! Don’t miss it.
Folks at ExtJS just released version 2.0.2 of their popular library (1.0 was bundled with ColdFusion 8 ) to meet compatibility requirements with AIR 1.0, just released by Adobe. Also, check out their new AIR version of ExtJS Docs.
Adobe is turning some of its products into open source projects. No news here, they announced it a while ago, But now they have their open source projects website online. For now the Flex 3.0 SDK and BlazeDS are the stars of the company. Drop by and take a look.
It’s official!
After a sort of long but very productive beta testing period at labs.adobe.com both Flex and Flex Builder 3.0 and AIR 1.0 are now shipping! I’ve been playing around with Flex and AIR for quite some time now and I can only tell you they are great tools. Meanwhile, Flex Builder for Linux systems is available at Adobe Labs as an alpha release. If you’re a Linux fan, check it out.
For those who don’t know what I’m talking about, take a look here to learn about Flex and here to learn about AIR. And if you’re really curious and want to try them out, use one of the links bellow:
- Adobe Flex Builder 3.0 Stand-alone (60-day trial)
- Adobe Flex Builder 3.0 Eclipse Plug-in (60-day trial)
- Adobe Flex SDK (free)
- Adobe AIR 1.0 (free)
If you’re too lazy, here’s a quick intro. Flex is a way to create Flash applications (don’t bash me, I know it’s not that simple but hey, this is a quick intro) not by designing them like traditional Flash but coding the application, including the interface. It was once defined by Adobe as a presentation server but I think it’s a little more than that. Since Flex 3 has been released I’m seriously considering moving away from AJAX technologies and start to develop frontend stuff just around Flex. As for AIR, it’s Adobe Integrated Runtime, it’s “just” a way to run all those cool web apps right on your desktop. You heard me, not on your browser…on your desktop. Oh, and because it sports an integrated SQL engine, you can even run them offline and sync with online apps as soon as a connection is available. Want to know more? Go to the links above or wait for one of my next posts where I’ll be covering these technologies.