For a customer I’m looking for a PDF library to create thousands of PDF document. I’ve tried two open source libraries, but didn’t quite like them. I’m not sure if it’s me, the library or just PDF because they didn’t feel right.
So I tried two commercial libraries. One just didn’t allow me to do what I wanted and I don’t even remember which one. The other one is from Syncfusion. It does work quite well, until you hit the details on changing tables, cells and other stuff. And it’s loaded with bugs. I’m not sure how long this has been under development, but I just kept running into ‘features’ to which the common reply was “We have logged this as a issue and our development team is currently working on this.”. They’ve fixed one issue so far and it’s released in next weeks developer build. But it still doesn’t gracefully draw tables on the next page and I can’t change the style of individual cells.
Now I am creating the PDF 100% by hand (or code actually) and perhaps it’s a better idea to create some other format first (html, Word, etc) and convert it to PDF afterwards.
What are your experiences with PDF libraries and/or creating PDF documents?
This is extremely easy and for most of you probably so obvious that you’ll start spamming me that this is time spend better on other things. But it has helped others and maybe it can help some of my visitors. I’ve used it when migrating data between two databases, where the data models were nothing alike.
When you’re using LINQ to SQL and are creating new objects that are defined in your LINQ to SQL classes (or .dbml) you can still query over them before committing them to the database. Here’s an example.
// Create root collection that we can query in our application.
List<Customer> customers = new List<Customer>();
Customer customer = new Customer();
customer.CompanyName = "Class-A";
customer.ContactName = "Dennis van der Stelt";
// Add this customer to our collection.
customers.Add(customer);
Product product = new Product();
product.ProductName = "i pwn n00bs t-shirt";
Order_Detail orderDetails = new Order_Detail();
orderDetails.Product = product;
Order order = new Order();
order.Customer = customer;
order.Order_Details.Add(orderDetails);
// Select all ordered products by Dennis
var query = from c in customers
from o in c.Orders
from d in o.Order_Details
select d.Product;
As you can see I never used db.SubmitChanges() so it’s not in the database yet. I did however query over the in-memory collection(s) I’ve build. I’ve created a root collection customers which I’ll use in my application to start querying. You can pass around the list of customers if you’d like.
With this example I can go through all customers in one database and pass every product. Imagine that Alex Thissen had ordered the same t-shirt (which he didn’t btw, he ordered the übergamer t-shirt from the n00b store ;-) I’d be able to query the created products, see that it was already created and make a reference to that product, instead of (again) creating a new one.
Hope that last paragraph makes sense.
Keyvan Nayyeri has launched his project today, something he calls “The Web Cleaner”. The official name is Waegis and it’s a service to filter out spam.
BloggingAbout.NET joined the alpha process and we were extremely happy with the results of Waegis. To start with, installation is a breeze. This is also because of Community Server 2008 (CS2008), but you just have to copy two binaries onto the webserver and configure the Waegis spam blocker. Each CS2008 spam blocker rates every comment with some points and based on your own configuration decides if it’s possible spam or should be automatically deleted. During alpha we initially didn’t let Waegis rate comments too high, but after only a few weeks of testing we decided that if Waegis thought it was spam, it should be auto deleted.
I just installed the latest version and am keeping a close eye on what Waegis does, but if everything goes as smooth as it did, Waegis is going to change the lives (or at least the mail inbox) of our bloggers.
You can download ‘custom’ clients for multiple Community Server versions and GraffitiCMS. But there’s also an API available on CodePlex to code against. This way you could write spam blockers for every other blog engine or even Exchange server and/or Outlook.
We tried Akismet before but weren’t too happy about the results. Comments that were obviously spam weren’t rate by Akismet that way, but Waegis seems to do it’s job perfectly. We’ll see what the future brings, but for now Waegis is definitely worth looking into if you have any problems with (comment) spam.