A Long Day with a COM+ Cherry on Top

My wife and daughter are out of town for a week visiting her folks, leaving me “alone with my work.”  And I’ve been banging out a lot of code.  Today’s 10 hours were spent working toward the goal of converting dynamically generated ASPX Job Slips in my Community Server-based Jobs Management App to PDF format, then adding support to email and fax them directly to customers.  I posted screenshots of the Job Slip function in this post.

After toying with different PDF Library options I decided to go with abcPDF.NET from webSupergoo for now.  (Kind of a weird company name, isn’t it?)  $479 for the Professional Version.  Definitely worth it.  I played with iText.NET on SourceForge.net which worked well for some things, but I would be spending too much time and client money accommodating its strict HTML Parsing requirements, whereas abcPDF was more forgiving in rendering PDFs.  I changed a few lines of a sample abcPDF project and I was producing PDFs of beauty.

The thing that enables abcPDF and a lot of utilities like it to perform their magic is that they’re good old-fashioned COM applications with a .NET wrapper around them.  You don’t think about it after installing an .MSI on a development machine, referencing a sample app DLL in your Visual Studio project, pressing F5 and the app just working, but it bites you in the butt when you move those DLLs to the host server.  “Access to HKEY_CLASSES_ROOT \ SomeDLL denied.”  Then I remembered how COM worked.  I needed to install a COM+ application!



Wow, THAT took me back!  I haven’t created or installed a COM+ component in over 7 years.  I don’t mean to bad-mouth COM.  I thought it was the greatest technology EVER back in 1999.  I read books on COM for 9 months straight until I got it.  I wrote a COM-based user registration system for a publicly held company’s new web site in 1999 and I remember the Pointy Hair Project Manager jumping all over me two weeks after it was launched when he found out I added more functionality than the spec required (I added activity logging.  It worked perfectly, but it was still apparently a bad thing in Dilbertville to exceed a spec.)  No, I LOVED COM. 

Thank God I don’t have to use it anymore.

Article written by

A long time developer, I was an early adopter of Linux in the mid-90's for a few years until I entered corporate environments and worked with Microsoft technologies like ASP, then .NET. In 2008 I released Sueetie, an Online Community Platform built in .NET. In late 2012 I returned to my Linux roots and locked in on Java development. Much of my work is available on GitHub.