Free Alternatives to Adobe Reader

Acrobat, Downloads No Comments »

As the years have gone by, Adobe Reader (formally Adobe Acrobat Reader) has got bigger (version 5.05 is 8.6MB and will probably still handle many PDF files OK, the latest, 8.1.1 is 22.3MB) and invariably slower with each release. Thankfully there are free alternatives, that are both a smaller download and much faster at opening PDF files.

  • SumatraPDF (< 1MB, still in beta, open source)
  • Foxit Reader (around 2MB download)
  • PDF XChange Viewer (13MB, but still smaller than Adobe Reader and supports comments/annotations, filling in forms and exporting text and images)

Alternatively, you could still have Adobe Reader, and use a tool that disables the plugins that slow the startup – e.g. Adobe Reader SpeedUp or PDF SpeedUp.

C# Design Patterns – The Visitor Pattern

ASP.Net No Comments »

Working in JavaScript is one of my favorite things to do. I love how dynamic
the language is and how powerful it can be. This programming dream is often
turned into a nightmare by varying browser implementations, blatant disregard
for accepted Web Standards (I’m looking at you IE), and a host of other odd
things that can pop up.

The Problem

As is usually the case, Internet Explorer is very forgiving when it comes to
the DOM and lots of times implements alternate methods of accessing certain
functionality.

In my current project I am using the rel attribute to keep track of which row
of data is being accessed. I know some of you may frown on this, however, it is
an acceptable (to me) tactic as this is for a closed intranet where there is no
concern for search engines. In Internet Explorer object.rel is an acceptable
method for accessing the value of the rel attribute of a particular property.

Somehow I worked past this point without testing in Firefox so when an error
kept occurring that was caused by Firefox not liking object.rel it took me a
while to work back through the code to isolate this problem.

The Resolution

The problem has a really simple fix. In my case it was harder locating the
problem then actually fixing it. To get around this problem you don’t need any
object detection, you just need to use the standard method for accessing
attributes, object.getAttribute(’rel’). Go figure.

The Moral Of This Story

The lesson that we should take away from this is to only use approved,
standard methods of functionality. This too will lead you into problems due to
inconsistent implementations but at least you are doing it the right way. You
can then implement your own work-arounds or use a library like Dean Edwards’ IE7
script that will fill in all the holes in Internet Explorer to make it more
standards compliant.

JavaScript And The rel Attribute

Browsers No Comments »

Working in JavaScript is one of my favorite things to do. I love how dynamic
the language is and how powerful it can be. This programming dream is often
turned into a nightmare by varying browser implementations, blatant disregard
for accepted Web Standards (I’m looking at you IE), and a host of other odd
things that can pop up.

The Problem

As is usually the case, Internet Explorer is very forgiving when it comes to
the DOM and lots of times implements alternate methods of accessing certain
functionality.

In my current project I am using the rel attribute to keep track of which row
of data is being accessed. I know some of you may frown on this, however, it is
an acceptable (to me) tactic as this is for a closed intranet where there is no
concern for search engines. In Internet Explorer object.rel is an acceptable
method for accessing the value of the rel attribute of a particular property.

Somehow I worked past this point without testing in Firefox so when an error
kept occurring that was caused by Firefox not liking object.rel it took me a
while to work back through the code to isolate this problem.

The Resolution

The problem has a really simple fix. In my case it was harder locating the
problem then actually fixing it. To get around this problem you don’t need any
object detection, you just need to use the standard method for accessing
attributes, object.getAttribute(’rel’). Go figure.

The Moral Of This Story

The lesson that we should take away from this is to only use approved,
standard methods of functionality. This too will lead you into problems due to
inconsistent implementations but at least you are doing it the right way. You
can then implement your own work-arounds or use a library like Dean Edwards’ IE7
script that will fill in all the holes in Internet Explorer to make it more
standards compliant.