Google
Web www.acrotips.com
 

Explore Annotations in a PDF Document

[Author: Thom Parker, WindJack]
This article discusses how you can use PDF CanOpener to find and identify the parts of an Annotation Object in a PDF Document.

PDF File Used in this article: WJAnnotExample1.pdf

PDF CanOpener Symbols:

  - Document Catalog
  - Page Object
  - Pages Object

  - Annotation Object
  - Indirect Object Indicator

General:

The PDF Content, the stuff in the Page Content Stream, is static, it's just like a picture. With PDF 1.5, Adobe added Optional Content Groups, which gave the content some minor interactivity, but it's the Annotations that really liven up PDF Documents.  Form Fields, Links, Multimedia Objects, Notes, Highlights, Stamps, and anything else on a page that responds to the user is an Annotation. They are primarily a way of extending the PDF with location oriented and user interactive functionality. To a lesser extent they are also used as local storage objects. An Annotation is a live object only if an appropriate Annotation Handler is available in the viewer application.  The Handler is a set of functions for responding to mouse, keyboard, and drawing events.

The PDF 1.5 Spec. defines a rich set of Annotations. The handlers for most of these Annotations are built into Acrobat.  If you want to make your own, the SDK provides facilities for creating custom Annotation Handlers.  This Article will look at the "Object Views" of 4 different  Annotations, one of which will be a simple custom Annotation.

Where is that Annot?

Every Annotation is associated with a specific page and a specific location on that page.  Even if it has no graphical representation.  As such, each Page that has an Annotation on it, has its' own "Annots" Array in the Page's Dictionary. The Annotation Objects in this array are unique,  they don't (or shouldn't anyway) exist in any other "Annots" array on any other page.  So the first place to look for an Annotation is always in this array on the page of interest.

PDF CanOpener offers some different ways to find Annotations. 

Tree Walking:

  1. Open the sample document in Acrobat and activate PDF CanOpener.  The PDF CanOpener display will show the root node of the document's CosObj tree.
  2. Open the "Pages" entry.
  3. Open the "Kids" entry.  This is the list of pages for this document.  There is only one page.
  4. Open the Page Object.
  5. The "Annots" array entry in the Page Dictionary is the list of Annotations contained on this page. Open it.

Snap To and Highlight Annotations in the Document Page View:

  1. Right click anywhere in the tree view portion of the PDF CanOpener Display to bring up the popup context menu.  Make sure both the "Highlight Selected" and "Snap to Selected" options are checked.
  2. Click on any one of the Annotation Objects in the "Annots" array. The Page View will scroll to make the selected Annotation visible and it will be highlighted with a blue rectangle. This is an easy way to see which Annotation in the object tree is which Annotation on the page.


(Screen shot of the sample PDF Document.) 

Object Selector Tool:

In the above image three methods are shown for activating the Selector Tool.  The Selector tool is the easiest way to locate a specific Annotation in the COS Object tree from the Page View.

  1. After you activate the Selector Tool the Page View cursor will change to
  2. As it passes over an Annotation, the Annotation will be highlighted. 
  3. Click on the Annotation to navigate to its' representation in the Object Tree, very easy. 
  4. Click on it a second time and Annotation dictionary expands. 

Simple Link Annotation:

Shown below are the contents of a Link Annotation Dictionary.  This Annotation Type is one of the simplest and most utilized of the built-in Annotations.

This Link Annotation has no static visual representation, so it is missing some entries that are common to most Annotation types. We'll get to those later.  The Info Window, immediately below the CosObj tree display, shows us that the Link Annotation Object is really an indirect reference to a Cos Dictionary.  All Annotations are indirect so they can be referenced in other locations.  Some of the entries shown are specific to the "Link" Annot and some are common to all Annots. 

Common Annotation Entries in the Link Object:

  1. "Type" - Optional entry.  Cannot be relied on for programmatically IDing Annotations.

  2. "SubType" - Required.

  3. "Rect" - Required. Location on page in User Coordinates.

  4. "Border" - Border Style Array.  Original PDF implementation. Redundant here but needed for backward compatibility.

  5. "BS" - Also Border Style, introduced in PDF 1.2

  6. "A" - Action to take when Annotation is clicked on. Common to all types but really only used in a few. 

The "H" entry is the only one shown here that is specific to the Link Annotation, it selects the type of highlight to be drawn by the Handler when the cursor passes over the link. Another entry specific to the Link Annotation, but not present here, is the "Dest" entry, which holds a Destination Object.  In this Annotation the  "A" entry is taking its place .

The Link Annotation will even work with fewer members.  Delete the "BS", "Border", and "H" entries. The Annotation Handler will supply them with default values. 

A more complex Annotation: the Highlight

The Highlight Annotation features a visual representation on the page and a text input box.

There are a lot more entries in this Annotation than in the Link Example.  These entries are common to a large group of built-in Annotations used for text markup and commenting.

  1. "Flags" - Determines how Acrobat (not necessarily the Handler) treats the Annotation.  It sets characteristics like the visibility and printability. Very common entry for all Annotations that have a static appearance on the page.

  2. "Subj" - User entered string. From the "Subject" field in the Properties Dialog. 

  3. "CreationDate" - Check the PDF Spec sec. 3.83 for format details.

  4. "NM" - Annotation's Name, auto generated by Acrobat.  This string is the input value you use with the JavaScript method "doc.getAnnot()".

  5. "C" - This array is the fill color used by the Annotation Handler whenever it needs to draw something, like the popup text box.  For example, the Highlight in the sample PDF is yellow, by default the popup is also drawn in yellow. So the three numbers in the "C" array are the RGB values for yellow [1,1,0].  If you change these to [1,0,0] for red, the highlight color is unchanged, but the popup is now drawn in red.

  6. "M" - Modified date.

  7. "P" - reference to the Page Object in which the Annotation appears. Typically in every Annotation with an appearance. It is an aid to navigation and it fixes the Annotation's association with the page

  8. "T" - User entered string, through the "Author" field in the Properties Dialog.

  9. "StructParent" - Associates this Annotation with a node somewhere in the logical structure tree ("StructTreeRoot") in the document catalog.

  10. "QuadPoints" - This entry is specific to the set of Text Markup Annotations (highlights, underlines and strikeouts).  It's an array of 4 points (8 numbers) that give the vertices of the rectangle that bounds the affected text on the page. 4 points allows the representation of rotated rectangles.

The two most important entries of the Highlight Annotation for this discussion are "AP" and "Popup".  The "AP" or Appearance Dictionary  contains the Annotation's graphical appearance in a Form XObject.  This Annotation has only one, but an Annotation may have many, each representing a different visual state. The PDF Spec divides these appearances into three broad categories, Normal, Down, and Rollover.  In this example, the Highlight Annotation has only one appearance, so by default it must be named "N", for normal.  The Down appearance is used when the Annotation is clicked on, and the Rollover Appearance is used when the cursor passes over the Annotation.  If there are more than one appearance per normal/down/rollover categories, then the "N", "D" and "R" entries become Dictionary Objects.  The Appearance Streams in these dictionaries are named according to visual states defined by the Annotation Handler.  The Annotation dictionary must then also contain an "AS" (Annotation State) entry that indicates to the Annotation Handler, or Acrobat if the handler is missing, which appearance to draw on the page.  We'll see this later in the discussions on both Form Fields and the Custom Annotation.

The "Popup" entry is another Annotation.  It is used in this case as an input window.  If you look inside it you'll see it does not have an "AP" entry.  The Annotation Handler is responsible for drawing it on the page and processing the user input.   The Popup is connected to the Highlight Annotation through the "Parent" entry of its' dictionary.  Popup Annotations are used as a kind of local storage for the Annotation.  One use is to store a history of "Comment Status" changes made to an Annotation. In this case, the "Popup" Annotation is just a way of keeping track of the last position and state of the input box.

Form Fields:

Form Field Objects are all kept in the "AcroForm" entry of the Document Catalog, so they have global, or Document Scope, meaning they have the same value everywhere in the document.  You cannot have two Form Fields with the same name in the same document.  But you say, Form Fields have a graphical appearance on specific pages in the document.  And furthermore, you can copy them all over the place so you can have lots of Form Fields with the same name.  Well, not really, as I'll explain a little later.

The screen shot below shows the "AcroForm" dictionary for the document displayed on the right.  This document has 4 Form Fields; one text field and 3 radio buttons.  The "Fields" entry of the AcroForm Dictionary contains a list of all the Form Fields on this document.  It only contains 2 entries, and one of those isn't even a Form Object, it's an Annotation, what gives? 

The Widget Annotation is the Form Field's graphical representation on the specific pages.  Each Form Field has one Widget Annotation for each place it is used in the document.  If there is only one location on a document where a Form Field is used, Acrobat combines the Form Field Dictionary and the Widget Annotation into a single object, like the Text Field in this example.  If a Form Field is used more than once, Acrobat puts it in a proper Form Field Object. The location specific Widget Annotations are stuffed into the "Kids" entry.  See the the Radio Button entries in the above example.

For the Form Field to be visible on a page, it must have a Widget Annotation in the page's "Annots" Array.  Here is a view of the same Radio Button Widget as above inside the "Annots" Array of a Page Dictionary.

There aren't too many things here that are different from the other Annotation Types. The big difference between this Annotation and the earlier examples is the "AP" entry. This one has 4 Appearance Streams, two each in the normal appearance entry "N" and the down appearance entry "D".  One appearance for each of the states this radio button can have, "Off" or "Sel1". "Sel1" is the export value of this button set by the user.  The Annotation's "AS" entry tells Acrobat which of these XObjects to use when drawing it on the page.  It is the Annotation Handlers responsibility to set this value.

Form Fields are highly interactive. The Field is "Active" whenever it has the mouse and keyboard focus, for example, when the user enters text into a Text Field or clicks on a button.  In this state the Form Handler is responsible for drawing the Widget Annotation's Appearance.  The Form Field becomes "Inactive" when it loses focus.  At this point the Form Field's static appearance (the Widget's Appearance Stream, or "AP" entry) needs to be changed to reflect the user's changes.  

If this change requires regenerating the Appearance Stream, then the "MK" entry provides the Handler with hints on how to do this.  The entries in the "MK" Dictionary are set by the user in the Properties Dialog for the Form Field. The one in this example contains only two entries, one for the border color, and one for the background color.  If you set more properties in the dialog,  more entries will appear in this dictionary.  For the Radio Button Field, all the Appearance Streams it will ever need are created when these properties are set.  So, user interaction causes the Handler to set the value of the "AS" (Annotation State) entry, rather than regenerate the Appearance Stream.

Custom Annotation:

No Handler was written for this example.  The Annotation was designed to simply be visible on the page.   For an Annotation to be displayable it needs:

  1. To be in the Annots array of the Page Dictionary.
  2. Have a "Rect" entry that places it on the page.

  3. Have a "Subtype" entry, so Acrobat can identify the correct Handler.
  4. Have an "AP" entry that has at least one entry "N", that is a Form XObject.
That's all, any other entries in the Annotation Dictionary are parameters for the Handler.  The screen shot below shows a custom Annotation in a section of the Page Annots array. This one is a little more complex than the minimum.  It has 2 Appearance Streams and an "AS" entry that selects which one Acrobat displays.  The only way to change the "AS" entry is to either write an Annotation handler or get PDF CanOpener.

We hope this material was helpful to you.  If you have any questions or comments for us or want more info on PDF CanOpener, please send email to info@windjack.com.

folic acid deficiency vaniqa cost risperdal withdrawl rabeprazole drug actonel fosamax antibiotic veetids lexapro and alcohol provigil more drug interactions buy generic ritalinrohypnol buying xanax online drug side effects norvasc what is tazorac tylenol canada fulvicin dose protopic medicine cheap ultram online how to make rohypnol online pharmacy gemfibrozil about tramadol vicodin side effects cheap fexofenadine tramadol use in dogs generic cialis female testosterone drug furosemide singulair in pregnancy adipex atlanta nortriptyline side effects serzone drug steroids online viagra softtabs no prescription order relenza no prescription tenuate dospan watson serevent diskus nasonex side effects minocycline hcl phendimetrazine cheap what is butalbital used for buy synalarsynthroid toprol side effects buy lortab on line amitriptyline side effects buy roche tamiflu what is nifedipine diethylpropion tenuate tadalafil fedex buspar tussionex cod biaxin used to treat clonazepam with no prescription buying generic cialis buy oxycontin no prescription side effects evista fluconazole breast feeding category buy adderall now buy morphine without a prescriptionmotrin serevent off patent discount tricor fulvicin fish extracting propoxyphene buy sildenafil citrate buy tretinoin what is ultracet what are anabolic steroids tamoxifen citrate evoxac side effects acyclovir side effects famvir 500mg buy tiazactobradex neurontin gabapentin lortab withdrawal effexor vs zoloft klonopin addiction generic levoxyl triphasil side effects buy online valium anusol suppositories lotrisone cream discount zocorzoloft famvir famciclovir lipitor side effect prinivil drug purchase xenical buy xanax without a prescription evista more drug interactions levitra pill penicillin allergies tylenol with codeine canadaultracet flomax more drug interactions discount propecia buy online soma lorazepam and breastfeeding ultram drug cheap zithromax online temazepam buy online buying steroids cipro dosage cheapest rabeprazole sodiumramipril buy xenical cheap withdrawal sertraline order alprazolam online no prescription side effects of hydrocodone marijuana leaf order norco online vicodin pills ambien overdose side effects lipitor side effects of elavil buy ritalin online oxycodone apap buy nasonex without prescriptionneurontin evista side affectsevoxac amitriptyline clomid viagra sales aldara and exercise order retin a retin micro celexa online pharmacy what is phendimetrazine lipitor prescription side effects fosamax more for patients evista concerns prozac and weight loss esomeprazole magnesium in mexico flonase ingredients nicotrol patches microzide company dosages how to make lsd free generic levitra lipitor side effects buy adipex online saturday delivery phentermine online pharmacy flextra medicationflomax xanax xr buy fluoxetine without a prescription adderall effects opium poppies esgic buy terazosin drug terazosin side effects effects of fluoxetine xanax withdrawal proscar hair results what is meclizine aricept 5mg cheap meclizine generic for antivert tadalis tadalafil lescol drug kenalog injection intensifies oxazepam viagra alternative paxil cr canada cheapest adipex online pepcid asian alcohol enzyme metformin and weight loss effects of lipitor tamoxifen breast cancer vermox buy nizoral shampoo cheap elocon buy online buy xanax using paypal order famvir buy methylprednisolone viagra for woman information side effects of nasacort aqnasonex cartia medication xanax dosage cheap triphasil generic didrex butalbital cod tetracycline without a prescription prempro lawsuit buy hydrochlorothiazidehydrocodone roxicet liquid fioricet migraine about steroids ativan dosages order valtrex paxil withdrawal rohypnol for sale what is lorcet ionamin purchase lescol buy snorting zanaflex buy tenuate lipitor and memory loss valtrex side effects cheap soma watson keflex side effects tamiflu online prescription phencyclidine pcp fulvicin purchase yellow xanax bars zanaflex side effects tazorac gel heroin informationhistex buy cheap zithromaxzocor plavix buy diclofenac 75mg order fioricet pregnancy folic acid phentermine purchase side effects protopic generic rabeprazole generic soma symptoms fioricet withdrawal methylprednisolone tablets buy ambien generic meridia actonel side effects fulvicin price ionamin capsules sertraline hcl pcp drugs what is temovate synthroid energy foods with folic acid meclizine 25 mg acetaminophen oxycodone toprol buy symmetrel cheap buy cetirizine restoril side effects trazodone oral lipitor more drug side effects phentermine cod trimox dental furosemide medication ultracet medication propecia reviews no prescription vicodin fluoxetine pillsfolic acid tadalafil price no prescription xanax compazine and side effects order valium online order flonase ativan for anxiety about lorazepam injecting steroids what is preven does valacyclovir require prescription elocon cream paroxetine benzos restoril drug adipex ionamin phentermine medrol dosepack generic renova fosamax warnings dosage paxil evista side effects premarin no prescription sibutramine hydrochloride estradiol clomid propecia pharmacy rohypnol effects generic prevacid buy ultram buy fexofenadinefinasteride cozaar sex levitra side effects generic viagra softtabs ceftin antibiotic diazepam buy propecia online ramipril side effects lortab description buy zestoretic online keflex no prescription coreg side effects lotensin dosage paxil overdose tramadol hcl side effects lortab pills diflucan for dogs tramadol picture lotrel side effects pravachol side effects buy vicodin online without prescription new dilantin what is thiamine mononitratemonopril paxil cr side effects sildenafil didrex diet pills acne transderm alcon tobradex nexium mups steroids sports adipex alternatives lortab ingredients propranolol hydrochloride propecia pill generic ionamin pepcid libido testosterone gel nexium generic actos avandia ordering codeine promethazine methylphenidate nmr ovral acne steroids facts buy promethazine lortab no prescription children motrin delganex sibutramine tobradex without prescription omeprazole overdose cialis lawyer columbus wat is selsun clomiphene citrate valium no prescription tamiflu purchase purchase famvir nexium price price of pravachol temazepam free consultation buy ultracet online no prescription hydrocodone guaifenesin ibuprofen overdose what is steroids mircette hair loss online ativan how to help preven anorexia acyclovir suppositories side effects of pravastatin isosorbide dinitrate yasmin for acnezanaflex temazepam side effects ativan data vicodin and pregnancy lotrisone classification what is orlistat adipex side effects prednisone without a prescription prozac overdose vicodin hydrocodone soma overdose adderall online pharmacy buy online viagra vermox cheap generic xalatanxanax drug flexeril information on lotensin oxycodone abuse side effects of glyburide valium for sale valium buy cialis generic levitra viagra alprazolam tablets drug information intraocular kenalogkeppra effexor drug side effects quitting paxil generic provigil buy drug diazepam buy acyclovir drug what is amoxicillin purchase zithromax xenical side effects trazodone and clonazepam pravachol oral macrobid 100mg tamsulosin buy purchase adipex online cialis vs viagra buy xanax online what is a fioricet what is propoxyphene with apappropranolol buy flonase no prescription ketamine pillsklonopin buy azmacort alprazolam 2mg marijuana buy pharmacy online flexeril cheapest tramadol side effects from hyzaar nicotrol buy clomid buy levaquin antibiotic order tamiflu inderal propranolol vicodin information furosemide overdose what is minocycline temovate online mexico famvir tablets buy hydrocodone with free consult levothroid diet pill adderall xr cheap soma microzide side effects imitrex and pregnancy buy hydrocodone with overnight delivery generic alendronate levaquin dosage lexapro dosage what is supraxsymmetrel birth control nordette fioricet more drug uses tussionex with codeine norco prisonnordette buy ceftin lipitor and muscle pain protonix more for patients pravachol more drug side effects tricor cholesterol lorazepam side effects cheap altace what is elocon restoril drug screen what is lortab proscar no prescription veterinary fulvicin diclofenac gel side effects of serevent zoloft online meds that react with k-dur buy nardil on line effects of hydrocodone lescol side effects online levothroid what does clomid do valium pharmacy diovan abuse phenergan with codeine zanaflex on line cyclobenzaprine hcl tramadol sale ceftin side effects ultracet tablets finasteride cheap remeron mirtazapine actos diabetes buy nizoral tablets no prescription lorazepam withdrawals recipe to make ghb phentermine hcl relafen drug online pharmacy celexa buy sibutramine hydrochloric keflex cephalexin avandia lawsuits buy allegra ativan usage online zanaflex fluconazole causes depression lasix more drug uses albuterol side effects lipitor memory loss generic vardenafil buy fioricet clopidogrel cozaar photo diovan side effects dangers of plendil buy klonopin cheap transderm ecstasy buy xenical without prescription tramadol overnight neurontin lawsuit synthroid hair loss xanax medication buy retin a online macrobid use in pregnancy prozac nation quotes condylox antivert butalbital compound propecia finasteride colchicine side effects cheapest didrex online buy furosemide without a prescription buy relenza transderm scop side effects codeine promethazine effects of ketamine what is adipex side effects of acyclovir adipex no rx synalar buy buy triphasil no prescription hashish buyheroin protonix vs nexium ionamin phentermine actonel long term effects lortab cod generic aciphex medrol dosepak synthesis prashad methylphenidate preven morning after pill prozac weight gain skelaxin drug nasonex allergic reaction side effects hydrochlorothiazide affect plavix side glucophage and weight loss tiazac medication sumatriptan from mexico zestril 20 mg prescription drugs online prevacid alternatives to viagra best price viagra buy condylox generic viagra softtabs mastercard depression provigil cheap tobradex buy cheap generic nordette retin a gel amoxicillin reaction what is oxazepam aldactone for acne buy vicodin online risedronate 35mg prescription actonel norvasc prices heroin chic acyclovir herpes cold sore vicodin on line vicodin without prescription side effects of omeprazole sibutramine 15 mg tricor drug meclizine for anxiety toprol medication barry bonds steroids generic valtrex online viagra aldactone long menses risedronate tablets butalbital order fosamax plus side effects of flexeril constipation and lipitor side effects of valtrex valacyclovir buy metrogel with no prescription cheap prilosec amitriptyline interactions prempro side effects wellbutrin withdrawal buy oxycodone carisoprodol online pharmacy buy baycol tamiflu buy clarinex vs claritin avandia side effects trimox amoxicillin accupril buy wellbutrin side effects trazodone hcl vicodin abuse penicillin no prescription amoxicillin and elderly bontril phentermine adipex buspirone buspar tetracycline hcl norvasc side effect amoxicillin online crystal methamphetamine viagra alternatives generic adipex generic for plavix adipex diet pill levothroid tablet ativan overdose order butalbital cheap nexium compare propecia levoxyl and weight loss cialis compare levitra propecia forum buy singulair cheap generic viagra tadalafil india renova online naltrexone implant hydrocodone withdrawal ionamin buyisosorbide anxiety tablets lorazepam buy viagra now symmetrel amantadine psilocybin mushrooms avapro tylenol with codeine coreg phenergan more drug uses dog pepcid ac or zantac cheap alprazolam no perscription online macrobid ultram pain medication alphagan allergy prescription drug levothroid what is relafen restoril temazepam no prescription phentermine 375 cheap klonopin methylphenidate hcl discount meridia zyloprim drug naprosyn 500mg dosage for zyloprim prednisone tablets drug nexium pcp informationpenicillin buy ghb hydrochlorothiazide buy vardenafil hcl amphetamine side effects nizoral side effects zyrtec overdose side effects of glipizide metoprolol side effects uk cheap sildenafil citrate cheap ultram overnight transderm nitro captopril zanaflex 2 mg famvir 500 mg amoxycillin side effects flonase online overdose of combivent wellbutrin overdose ambien side effects toprol xl oral child over dose lisinopril buy triamterene online what is lotrisone used for cheap aldara metformin side effects alesse pricing transderm cheap plavix temazepam buy biaxin no rx famvir vs valtrex drug temazepam antibiotic keflex phendimetrazine online nifedipine ointment prozac drug pregnant imitrex drug tamoxifen ultram abuse furosemide side effect no presciption amoxicillin flexeril and pregnancy cheap butalbital vicodin online folic adipex abuse discount viagra oxycodone addiction snorting celexa rabeprazole sodium prescription medication order xenical cheap flonase fioricet pharmacy glyburide more drug uses discounted adipex roxicet side effects ultracet drug atenolol pregnancy ultravate generic information on tramadol relafen medication diethylpropion ditropan side effects soma side effects phencyclidine hydrochloride hydrocodone cod phenergan pregnancy cheap bontril atrovent buy zocor buy zyrtec online buspirone side effects snorting fluoxetine side effects of minocycline metformin more drug side effects trazodone without a prescription serzone side effects minocycline without prescription buy fulvicin buy online diethylpropion fioricet online pharmacy valtrex oral what is pantoprazole sodium temazepam tablets cardura side effects of provigil nifedipine er xl side effects of morphine cephalaxin ambien overnight delivery osteonecrosis and fosamax what is folic acid propoxyphene darvocet side effects of klonopin vicodin overdose vicodin high nexium drug buy cheap phentermine free fedex long term effects of adderall propranolol 10mg seroquel lawsuit what is norco no prescription celexa cyclobenzaprine buy isosorbide mononitrate prempro lawsuits tadalafil online anabolic steroids ceftin order online no prescription side effects of miralax norvasc 10mg morphine overdose medrol dose pack flovent dosage order metrogel online what is glyburide steroids in baseball metrogel topical gel zocor side affects buy triamterene without prescription cheapest fioricet generic glipizide phenergan abuse ovral birth control cheap fioricet azmacort side effects fluoxetine capsules phendimetrazine no rx flexeril addiction cheap generic vicodin purchase finasteride canadafioricet valium addiction adipex online prescription lotrel low pulse rate no percription temovate cream cyclobenzaprine flexeril prevacid 30mg sarafem 10mg buy ativan with overnight delivery ziac side effects steroids cycles tramadol buy butalbital no prescription atarax brand ketamine drug buy captopril buy losartan tetracycline oral furosemide lasix lanoxin toxicity purchase ultram lotrel atenolol tiazac side effects flexeril oral fioricet online drug flomax enalapril buy flovent more drug side effects buy phentermine on line natural testosterone buying tretinoin propoxyphene dosage nasonex spray buy cyclessa white generic fioricet dosing levothroid fosamax oral tylenol during pregnancy fluoxetine 20mg buy carisoprodol diazepam online soma organizacion eventos actos motrin abuse seroquel withdrawal guys on steroids buy eunlose shooting flexeril what is generic for pravacholpravastatin buy meridia on line nardil patch for depression birth clomid multiple pictures of ketamine folic acid pregnancy buy sibutramine provigil no prescription fioricet long term effects hgh flomax buy xenical paxil cr what is flomax aldara effects side prozac side affects snorting ultracet lipitor buy lipitor generic prozac dilantin buy macrobid without prescription buy generic aciphex snorting provigil evista and breast cancer alcohol and famvir buy metrogel vaginal hashish making trazodone pills aciphex cipro psilocybin mushrooms for sale pregancy acyclovir buy soma online no perscription phendimetrazine azmacort soma buy online xanax online pharmacy singulair medicine tazorac works buy rabeprazole actonel patient reviews lipidos orlistat flexeril 10mg generic for synthroid oxycodone drug test buy metrogel flomax side effects pravachol bontril aceon mdma recipe side effects of ramipril lasix weight loss glucophage and pregnancy medicine fluconazole klonopin without prescription no prescription naltrexone tetracycline cream tadalafil and alcohol cardura side effects ranitidine 150mg tramadol order order vaniqa cheap relenza no prescription buy online tramadol no prescription cheap paxil generic drug for norvasc order tamiflu online no prescription punchline for rabeprazole zestril pregnancy prescription of soma propecia picture effects of bontril remeron for anxiety side effects of lasix anabolic steroids buy online phentermine clomid and pregnancy buy nexium online fluoxetine in canada doxazosin medications purchase sildenafil citrate tylenol codeine effexor overdose rohypnol recipe alprazolam dogs vaniqa price vaniqa online pharmacy cocaine and ambien vaniqa lowest price phentermine 37.5mg cheap adipex versus phentermine where to buy tramadol mescaline cactus fda warning actonel mechanism of action for keppra schizophrenia adderall premarin vaginal cream lexapro more drug side effects generic mircette medication pravachol lexapro more drug interactionslipitor marijuana growing fioricet abuse marion jones steroids fluconazole overnight delivery levitra price oxazepam valium zocor side effects online ambien abuse ativan cialis levitra vs soma cheap generic paxil trazodone dosage