Add Field To PDF with Options for Multiple Pages
The code on your case statements is not that different. 
You could consider to group all cases that add many fields and those who only add one.

Another thing that is worth mentioning is that unless the option is 
Pages.Last you always start with PdfFirstPageNumber or that +1.

Let's give a shot to reimplement the method based on this:

private void AddFieldToPdf(Field field,
    iTextSharp.text.pdf.PdfStamper pdfStamper, int numberOfPages)
{
    var parentField = iTextSharp.text.pdf.PdfFormField.CreateTextField(
        pdfStamper.Writer, false, false, 0);
    parentField.FieldName = field.Title;
    int pageNumber = field.Pages == Pages.Last ? numberOfPages : PdfFirstPageNumber;
    switch (field.Pages)
    {
        case Pages.All:
        case Pages.Odd:
        case Pages.Even:
            int increment = field.Pages == Pages.All ? 1 : 2;
            if(field.Pages == Pages.Even){
                pageNumber += 1;
            }
            for (;pageNumber &lt;= numberOfPages; pageNumber += increment)
            {
                AddFieldToPage(field, pageNumber, pdfStamper,
                    parentField);
            }
            break;
        case Pages.First:
        case Pages.Last:
            AddFieldToPage(field, pageNumber, pdfStamper,
                parentField);
            break;
    }
    pdfStamper.AddAnnotation(parentField, 1);
}


EDIT Continuing improvements we can now see that we have two major branches, so maybe an if fits better:

 private void AddFieldToPdf(Field field,
    iTextSharp.text.pdf.PdfStamper pdfStamper, int numberOfPages)
{
    var parentField = iTextSharp.text.pdf.PdfFormField.CreateTextField(
        pdfStamper.Writer, false, false, 0);
    parentField.FieldName = field.Title;
    int pageNumber = field.Pages == Pages.Last ? numberOfPages : PdfFirstPageNumber;

    if(field.Pages == Pages.First || field.Pages  == Pages.Last){
        AddFieldToPage(field, pageNumber, pdfStamper, parentField);
    }else{
        int increment = field.Pages == Pages.All ? 1 : 2;
        if(field.Pages == Pages.Even){
            pageNumber += 1;
        }
        for (;pageNumber &lt;= numberOfPages; pageNumber += increment)
        {
            AddFieldToPage(field, pageNumber, pdfStamper, parentField);
        }
    }
    pdfStamper.AddAnnotation(parentField, 1);
}


There is actually a way to transform that switch statement into a Linq code.

Now I am not saying this code is more clear than yours, that may depend on who is maintaining it. 
But if you like Linqand would to give it a shot it works as follows:

var query = Enum.Range(PdfFirstPageNumber, numberOfPages);
if(field.Pages == Pages.Odd || field.Pages == Pages.Even){
    int parity = field.Pages == Pages.Odd ? 1 : 0;
    query = query.Where(p =&gt; p%2 == parity);
}else if(field.Pages == Pages.First){
    query = query.Take(1);
}else if(field.Pages == Pages.Last){
    query = query.Reverse().Take(1);
}
foreach(var page in query){
    AddFieldToPage(field, page, pdfStamper, parentField);
}