Business Party Do’s and Don’ts

Here it is holiday time again, and while Ms. Abby and Manners takes care of our social etiquette I’d like to share some practical tips for business holiday parties.

page1_pic3Here are some DO’S….

  • Attend the Event:  It’s an unspoken expectation that showing up may not be mandatory or can it be required, but attending isn’t really optional.  That is if you want to be working there next year.
  • If you RSVP – by all means ATTEND: Many business functions are paid on the basis of the number who attend, and that is calculated by the number of RSVP’s.
  • Mingle, Mix, and Move: Talk to different people and learn something new.  Don’t stick with your usual watercooler pals.
  • Pay Attention to Start and End Times on the Invitation: This is there for a reason, and you don’t want to overstay your welcome.
  • Remember that Any Business Party is Really a Business Event: Although it might be outside the standard office meeting and be accompanied with food and beverage, the same rules of conduct apply.
  • Limit Gift Giving:  Colleagues will often feel obligated to give gifts in return for receiving gifts. If you do give, give from the heart and keep it simple, and priced at a minimum.
  • Dress Appropriately and Professionally:  All eyes are not meant to be on you, and this is not the time for provocative dress.  Lean toward the conservative or classic look.
  • Give Thank-You’s:  When appropriate write either a note of thanks, or if at a private home tell the host/hostess in person that you enjoyed the celebration.

Now for the Don’ts…..page4_pic5

  • Say “yes” to a Blind Date:  You don’t know who the person is or who he/she might know.  Rule of thumb – when in doubt, go stag.
  • Be Flirtatious or Get Frisky: This is crossing the line of appropriate and adult behavior at a business event.
  • Drink Too Much:  it’s not worth taking the chance that you’ll say something you wish you hadn’t.  Rule of thumb is- limit  yourself to 2 drinks.
  • Talk All Business:  BORING!! After all it is a social gathering.  The guests are supposed to have fun, get to know each other, and have a different experience outside of daily office routine.
  • Prospect for New Business: TACKY!!
  • Assume Everyone Celebrated the Same Holiday:  If you say “Merry Christmas” to someone who doesn’t observe the holiday it might offend them.  Be generic and say “Happy Holidays.”
  • Give Gag Gifts:  This is not the place to risk offending or embarrassing someone.
  • Gossip:  Gossiping in any situation is usually damaging and not a good practice, but it’s especially not appropriate at a business-related event

Hopefully with these tips under your belt, your appearance at you next business holiday event will go successfully.

The majority of business professionals know these things, but there’s always some newcomers to the firm who may not be as seasoned as some of us.


Save images from PDF Files using iTextSharp

This code will allow you to go through a PDF Document and extract the images.

public void ExtractImagesFromPDF(string sourcePdf, string outputPath) {
  // NOTE: This will only get the first image it finds per page.
  PdfReader pdf = new PdfReader(sourcePdf);
  RandomAccessFileOrArray raf = new iTextSharp.text.pdf.RandomAccessFileOrArray(sourcePdf);

  try {
   for (int pageNumber = 1; pageNumber <= pdf.NumberOfPages; pageNumber++) {
    Response.Write("Page " + pageNumber.ToString());
    PdfDictionary pg = pdf.GetPageN(pageNumber);
    // recursively search pages, forms and groups for images.
    PdfObject obj = FindImageInPDFDictionary(pg);
    if (obj != null) {
     int XrefIndex = Convert.ToInt32(((PRIndirectReference) obj).Number.ToString(System.Globalization.CultureInfo.InvariantCulture));
     PdfObject pdfObj = pdf.GetPdfObject(XrefIndex);
     PdfStream pdfStrem = (PdfStream) pdfObj;
     byte[] bytes = PdfReader.GetStreamBytesRaw((PRStream) pdfStrem);
     if ((bytes != null)) {
      using(System.IO.MemoryStream memStream = new System.IO.MemoryStream(bytes)) {
       memStream.Position = 0;
       System.Drawing.Image img = System.Drawing.Image.FromStream(memStream);
       // must save the file while stream is open.
       if (!Directory.Exists(outputPath))
       string path = Path.Combine(outputPath, String.Format(@ "{0}.jpg", pageNumber));
       System.Drawing.Imaging.EncoderParameters parms = new System.Drawing.Imaging.EncoderParameters(1);
       parms.Param[0] = new System.Drawing.Imaging.EncoderParameter(System.Drawing.Imaging.Encoder.Compression, 0);
       ImageCodecInfo jpegEncoder = GetEncoder(ImageFormat.Jpeg);
       img.Save(path, jpegEncoder, parms);



    } else {
Page " + pageNumber.ToString() + " has no images!");

  } catch {

  } finally {


 // This method will allow you to detect an image in a PDF page
private PdfObject FindImageInPDFDictionary(PdfDictionary pg) {
 PdfDictionary res =
  (PdfDictionary) PdfReader.GetPdfObject(pg.Get(PdfName.RESOURCES));
 PdfDictionary xobj =
  (PdfDictionary) PdfReader.GetPdfObject(res.Get(PdfName.XOBJECT));
 if (xobj != null) {
  foreach(PdfName name in xobj.Keys) {
   PdfObject obj = xobj.Get(name);
   if (obj.IsIndirect()) {
    PdfDictionary tg = (PdfDictionary) PdfReader.GetPdfObject(obj);
    PdfName type =
     (PdfName) PdfReader.GetPdfObject(tg.Get(PdfName.SUBTYPE));
    //image at the root of the pdf
    if (PdfName.IMAGE.Equals(type)) {
     return obj;

    } // image inside a form
    else if (PdfName.FORM.Equals(type)) {
     return FindImageInPDFDictionary(tg);

    } //image inside a group
    else if (PdfName.GROUP.Equals(type)) {
     return FindImageInPDFDictionary(tg);



 return null;


If you are using ImageCodecInfo

private ImageCodecInfo GetEncoder(ImageFormat format) {
 ImageCodecInfo[] codecs = ImageCodecInfo.GetImageDecoders();
 foreach(ImageCodecInfo codec in codecs) {
  if (codec.FormatID == format.Guid) {
   return codec;
 return null;


Gone are the days when adding multiple links from any website would immediately bump your own site to the top of search engine results pages (SERPs). Today, Google and other SEO-centric search engines (like Blekko) are spending a fair amount of time and resources figuring out the differences between an organic or natural link and those links that have been “built”. SEOs need to adapt.