Read PNG and draw to buffer

Some one help me , how to read PNG file by binary, and then draw it to buffer , next draw to screen.
Thanks

public void paint( Graphics g )
    //double buffer
    Image img = Image.createImage( g.getClipWidth(), g.getClipHeight() );
    Graphics gr = img.getGraphics();
    try
    gr.drawImage( Image.createImage( "/image.png" ), 0, 0, Graphics.TOP | Graphics.LEFT )
    catch( Exception e )
    g.drawImage( img, 0, 0, Graphics.TOP | Graphics.LEFT );
}Of course, this is just an example.

Similar Messages

  • Read .txt file of numbers and draw

    Hello.
    I am trying to utlize BufferedReader and g.drawline to read numbers from a text file and output to the screen as a "line".
    I know I still need a while loop and some error checking, but, am having trouble finishing the more 'basic' portion of the code.
    The GUI class is already taken care of. I am just trying to open the file, read, turn to int, produce lines, then close file.
    I have commented out some of the code that was provided with the assignment.
    Any help would be appreciated.
    Thank you.
    import javax.swing.*;
    import java.awt.*;
    * DrawingPanel creates a panel used for drawing
    * a map
    * Numbers stored in text file, usa.txt.
    * one number per line.  Read each number
    * create a map on screen. GUI provided in a
    * 2nd class.
    public class DrawingPanel extends JPanel {
         /** Graphics object used for drawing on the panel */                           
         private Graphics g;                  
         /** Tells if it is time to draw */
         private boolean timeToDrawPath;
         /** The filename of the hurricane path */
                                  //private String pathFile; 
         private String usa.txt;
         * Creates a new, white DrawingPanel for drawing the maps
         public DrawingPanel() {
              setBackground(Color.white);
              this.timeToDrawPath = false;
                                  //this.pathFile = null;
              this.usa.txt = null;
         * This method is called automatically by Java.  There will NEVER
         * be a direct call to paint() anywhere in the code.  Anytime that we
         * need to update what is drawn on the screen, we call repaint().
         * @param grph The graphics window to paint
         public void paint(Graphics grph) {
              g = grph;
              super.paint(g);
              processUSA();
              if (timeToDrawPath){
                   drawPath();
         * Reads the USA coastline coordinates from a file and draws the path
         * to the panel
         public void processUSA( ) {
                        //just an example of how to draw a single
                        //line segment from (50,50) to (200,200)
                        //g.drawLine( 300, 50, 200, 200);
         //Insert the while loop here??
         //Include the parse.Int statement
         //Open the file
         String inFile = ("usa.txt");
         FileReader fileReader = new FileReader (inFile);
                   //BufferedReader bufReader = newBufferedReader (fileReader);
         BufferedReader bufReader=newBufferedReader (new fileReader ("usa.txt"));
                        //Insert beginning of while loop here????
         //read data from the file
         String str=bufReader.readLine();
         g.drawLine(x1,y1,x2,y2);
         }

    Yep, you are right in deciding the positioning of the while loop.
    But the folly you are committing is while creating object of BufferedReader ... It is to be created by passing to the constructor, the reference of the FileReader object you have created.
    so the line of code shud look like ...
    BufferedReader bufReader = new BufferedReader(FileReaderObject);
    And then you can go ahead with readLine() as per your requirement in the while loop.

  • When I plug my ipod into my computer, the computer dosnt read it and I get a messege saying the USB device is drawing to much power. How do I solve this problem?

    When I plug my ipod into my computer the computer dosnt read it and I get a messege saying that the device is drawing to much power. How do I solve this problem???

    I had the same problem with mine when I connect the ipod when it's full charged and turn on. The problem never happen when the ipod is charging or i'ts full charged and it's turn off. So just turn off your ipod down and connect to your mac again.

  • How to read and write Png and jpeg with  Alpha

    Hi
    I have trouble reading and writeing PNG and JPEGs that have an alpha channel (for transparency).
    Reading works, if i use Toolkit.getImage() method, but works NOT if i use ImageIO.read() method.
    Writing does NOT work using ImageIO.write()method. Instead i got a "java.lang.UnsupportedOperationException: Unsupported write variant!"
    See Test class and commandline output below:
    /****************START*****************************/
    package de.multivisual.bodo.test;
    import java.awt.*;
    import java.awt.image.*;
    import java.io.File;
    import java.net.URL;
    import java.util.Iterator;
    import javax.imageio.*;
    import javax.imageio.metadata.IIOMetadata;
    import javax.imageio.stream.ImageInputStream;
    import javax.imageio.stream.ImageOutputStream;
    public class AlphaChannelTest implements ImageObserver {
      Toolkit toolkit;
      Image img;
      public AlphaChannelTest() {
        super();
        toolkit = Toolkit.getDefaultToolkit();
        URL url =
          AlphaChannelTest.class.getResource(
            "/de/multivisual/bodo/test/" + "alphatest.png");
        img = toolkit.getImage(url);
        try {
          ImageInputStream imageInput =
            ImageIO.createImageInputStream(url.openStream());
          Iterator it = ImageIO.getImageReaders(imageInput);
          ImageReader reader = null;
          while (it.hasNext()) {
            reader = (ImageReader) it.next();
            System.out.println(reader.toString());
          reader.setInput(imageInput);
          ImageReadParam param = reader.getDefaultReadParam();
          BufferedImage bimg = reader.read(0, param);
          SampleModel samMod = bimg.getSampleModel();
          ColorModel colMod =       bimg.getColorModel();
          String[] propNames = bimg.getPropertyNames();
          IIOMetadata meta = reader.getImageMetadata(0);
          System.err.println("\n*****test image that was read using new Jdk 1.4 ImageIO.read() method");
          alphaTest(bimg);
        } catch (Exception e) {
          //e.printStackTrace();
        if (img != null)
          toolkit.prepareImage(img, -1, -1, this);
        try {
          synchronized (this) {
            System.out.println("wait");
            this.wait();
        } catch (Exception e) {
          e.printStackTrace();
        System.out.println("end");
      public void alphaTest(BufferedImage bi) {
        Raster raster = bi.getData();
        float[] sample = null;
        System.out.println("raster :");
        for (int y = 0; y < raster.getHeight(); y++) {
          for (int x = 0; x < raster.getWidth(); x++) {
            sample = raster.getPixel(x, y, sample);
            System.out.print("(");
            for (int i = 0; i < sample.length; i++) {
              System.out.print(":" + sample);
    System.out.print(")");
    System.out.println();
    Raster araster = bi.getAlphaRaster();
    if (araster == null){
         System.err.println("there is no Alpha channel!!!!!!!!!");
         return ;
    } else {
         System.out.println("Alpha channel found !");
    float[] asample = null;
    System.out.println("raster alpha:");
    for (int y = 0; y < araster.getHeight(); y++) {
    for (int x = 0; x < araster.getWidth(); x++) {
    asample = araster.getPixel(x, y, asample);
    for (int i = 0; i < asample.length; i++) {
    System.out.print(" " + asample[i]);
    System.out.println();
    String format ="PNG";
    System.out.println("##########Test Writing using new JDK1.4.1 ImageIO:");
    Iterator writers = ImageIO.getImageWritersByFormatName(format);
    ImageWriter writer = (ImageWriter) writers.next();
    ImageWriteParam param = writer.getDefaultWriteParam();
    ImageTypeSpecifier imTy = param.getDestinationType();
    ImageTypeSpecifier imTySp =
    ImageTypeSpecifier.createFromRenderedImage(bi);
    param.setDestinationType(imTySp);
    File f = new File("c:/tmp/myimage."+format);
    try {
    ImageOutputStream ios = ImageIO.createImageOutputStream(f);
    writer.setOutput(ios);
    writer.writeInsert(0, new IIOImage(bi, null, null), param);
    } catch (Exception e) {
         System.err.println("could not write "+format+" file with alpha channel !");
    e.printStackTrace();
    public boolean imageUpdate(
    Image img,
    int infoflags,
    int x,
    int y,
    int width,
    int height) {
    if ((toolkit.checkImage(img, -1, -1, null)
    & (ImageObserver.HEIGHT | ImageObserver.WIDTH | ImageObserver.ALLBITS))
    == 35) {
    int iw = img.getWidth(this);
    int ih = img.getHeight(this);
    BufferedImage bi = new BufferedImage(iw, ih, BufferedImage.TYPE_4BYTE_ABGR);
    Graphics2D big = bi.createGraphics();
    big.drawImage(img, 0, 0, this);
    System.err.println("+++++test image that was read using old Toolkti.getImage method");
    alphaTest(bi);
    synchronized (this) {
    this.notifyAll();
    return false;
    return true; // image is not yet completely loaded into memory
    public static void main(String[] args) {
    //     BufferedImage image = new
    // BufferedImage();
    new AlphaChannelTest();
    /*************************END********************/
    The commandline looks like this:
    [i]
    com.sun.imageio.plugins.png.PNGImageReader@d1fa5
    *****test image that was read using new Jdk 1.4 ImageIO.read() method
    raster :
    there is no Alpha channel!!!!!!!!!
    wait
    +++++test image that was read using old Toolkti.getImage method
    raster :
    Alpha channel found !
    raster alpha:
    ##########Test Writing using new JDK1.4.1 ImageIO:
    could not write PNG file with alpha channel !
    java.lang.UnsupportedOperationException: Unsupported write variant!
         at javax.imageio.ImageWriter.unsupported(ImageWriter.java:600)
         at javax.imageio.ImageWriter.writeInsert(ImageWriter.java:973)
         at de.multivisual.bodo.test.AlphaChannelTest.alphaTest(AlphaChannelTest.java:113)
         at de.multivisual.bodo.test.AlphaChannelTest.imageUpdate(AlphaChannelTest.java:135)
         at sun.awt.image.ImageWatched.newInfo(ImageWatched.java:55)
         at sun.awt.image.ImageRepresentation.imageComplete(ImageRepresentation.java:636)
         at sun.awt.image.ImageDecoder.imageComplete(ImageDecoder.java:135)
         at sun.awt.image.PNGImageDecoder.produceImage(PNGImageDecoder.java:511)
         at sun.awt.image.InputStreamImageSource.doFetch(InputStreamImageSource.java:257)
         at sun.awt.image.ImageFetcher.fetchloop(ImageFetcher.java:168)
         at sun.awt.image.ImageFetcher.run(ImageFetcher.java:136)
    end

    in between i found out that the my png and jpeg test images did not have an alpha channel, since the tool i used to create them, did not write the alpha channel to disk.
    if i use png with alpha channel, then the read works correktly with ImageIO.read()
    however the read problem still remains for gifs and the write does not work for gifs and neither for pngs.
    whether jpegs can be read with alphachannel i don't know since i don't have a tool to create jpeg with alpha channel. (at least gimp and corel9 are not able to )
    and it is not possible to write the previous read png with alpha channel back as and jpeg with alpha channel

  • Destructive and non-destructive buffer reads on branch wires

    I was asked this morning what are "Destructive and non-destructive buffer reads on branched wires" are.
    I was at a loss at first and the I thought some and read a posting by Jim that inspried me.
    My first thought was the case of an array wired to a replace array element and an index array function. I that case the the index has to execute before the replace array element because the replace re-uses its input buffer. Not really detructive but seemed close.
    There is also the case of a buffer (like a string) being wired into a CIN and the same buffer being re-used be the CIN to return the result. The CIN "destroys" the original values.
    Jim mentioned the concatenate string having to destroy the buffer
    s hold the strings that are concantenated and moved to another buffer.
    Also when I do a AI read the buffer I read from is destroyed after I read it. Similarly with reading from VISA and the like.
    What does the above phrase really mean and are there other examples that I have missed?
    Trying to learn something here,
    Ben
    Ben Rayner
    I am currently active on.. MainStream Preppers
    Rayner's Ridge is under construction

    That phrase may have been describing a combination of factors. Documentation from NI points out that if a wire branches, LabVIEW will try to avoid making a copy of the data, including scheduling (as in your example) read operations on branch A before write operations on branch B if possible. Since branch A doesn't tamper with the data, no copy is necessary.
    The author of a CIN or DLL could indeed choose to create his function in such a manner that it uses the same physical buffer in memory for input and output. This is by no means the only way to return values from a function, but it's quite common for efficiency reasons. LabVIEW might even assume that a CIN or DLL always overwrites any buffer passed into it (and may therefore make a copy if a wire branche
    s both to a CIN and somewhere else).
    So to me, the phrase you cited connotes the G compiler's decision of whether or not a wire branch modifies the data (e.g., string concatenation, removing elements from arrays) or just reads it (e.g., an index or input to a calculation).

  • Load PNG Images and draw on them.

    I have to load a png image in a JPanel and then draw on this image. How is the way to do it? I've tried several ways but I don't achieve nothing.

    Hi,
    Re:
    <BLOCKQUOTE><font size="1" face="Verdana, Arial, Helvetica">quote:</font><HR>
    ...I guess the conclusion is even though you can use PL/SQL to get the
    PNG images into the database - like we've done here. There is no real
    point, because one cannot retieve them with standard Java Intermedia
    calls.
    <HR></BLOCKQUOTE>
    On the contrary - I just grabbed a PNG image from our 9i test system, uploaded it using the photo album servlet demo to my 8.1.7 database (which doesn't 'do' PNG) and retrieved it using the same servlet. My Netscape came with the QuickTime Plugin, so the PNG image got displayed as would any other image.
    OK, I admit I had to admit modify the demo a little, but it is just a sample after all, not a full-blown, production web application. For upload, all I had to do was trap the exception raised when it tries to create the thumb-nail. There were 2 changes for retrieval. For the thumb-nail page, if there isn't a thumb-nail, ie getContentLength() == 0, then it displays the text "[view image]" instead of the thumb0nail image. For the full-size page, it only generates the height and width tags if getHeight() and getWidth() both return non-0 values. I didn't have to modify the method that actually delivers the data at all. It just uses the BLOB, MIME type and content length (which you sent when you loaded the image, right?!). The height and width tags aren't required. They just speed things up if present, because the browser knows ahead of time how much space to reserve, so can keep rendering the page, rather than wait for the image to arrive.
    Re:
    <BLOCKQUOTE><font size="1" face="Verdana, Arial, Helvetica">quote:</font><HR>
    Can't begin to explain how sad this makes me :(
    <HR></BLOCKQUOTE>
    Cheer up! :-)
    Simon
    null

  • Color and depth lost when reading PNG

    Hello,
    I'm using IMAQ Read Image And Vision Info.vi to read a PNG saved with IMAQ Write Image And Vision Info.vi. The saved image is 24 bits, color. When I open the image and display it using an image control, it shows up as an 8-bit grayscale. How do I get it to open in color?
    Thanks.

    Are you passing a 24-bit color image into the image terminal of this VI? Most likely, you have the default Grayscale (U8) Image type for the initialization of the image that you feed into the IMAQ Read Image And Vision Info.vi. It is a terminal on the bottom of the IMAQ Create vi.
    Hope that this helps,
    Bob
    Bob Young - Test Engineer - Lapsed Certified LabVIEW Developer
    DISTek Integration, Inc. - NI Alliance Member
    mailto:[email protected]

  • Print images in PNG and BMP formats

    I have converted images from xwd to bmp by using JAI. now I want to print them.
    How can I print PNG and BMP Files? How can I read images in different formats and make them print.
    Please help me !

    JAI follows the Java 2D printing model. All you need to do is to read your PNG, BMP images as RenderedImage, Renderable, or BufferedImage objects. To print an image, draw the image object on the printer's graphics context using one of drawImage(), drawRenderedImage(), and drawRenderableImage() methods of the Graphics2D class.
    I have some sample code at http://www.geocities.com/larryhr/samplecode/samplecode.html. See the Printing section. JAIImagePrint.java should give you some indication as to how to print images read by the JAI codec.

  • Acquiring from bluetooth spp and draw signal

    Dear Sir:
    I'm using labview 8.5
    How can I use bluetooth vis to draw ecg signals coming from adc and sended to bluetooth module(as server) , and draw it??
    I've saw bluetooth client examples but I still need help
    thanks for help
    Sajed

    Hi,
    We have a similar problem. We're trying to visualize an ECG signal using a Bluetooth connection and LabView 8.
    The Bluetooth module we are using is a Parani ESD-200, and it works using the Serial Port Profile (SPP); we also have a MSI Bluetooth dongle which allow us to create a Virtual Comm and connect the Laptop and the ECG.
    We are using VISA to write and read from the virtual port; we don't have any problem with the reading, we configure and open the port and read the input data, but when we try to write, LabView doesn't recognize the port.
    The funny thing is that the data we try to send with LabView IS sent to the port, we know that because we programmed the DSP to turn on a led when it recibes any data in the input buffer...
    So, we don't know why LabView gives us that error, we'll be very thankful if anybody can help us...
    P.D. The error LabView gives is:
    VISA:  (Hex 0xBFFF003E) Could not perform operation because of I/O error.
    Mensaje editado por Luego

  • Urgent help needed!! Layout table and Draw layout cell dissapeared.

    I need some urgent help. I'm using CS3 but for a while my
    Layout Table and Draw Layout Cell icons appear greyed and can't use
    them at all. Is there any kind soul out there who knows how to fix
    this? I'm going nuts trying all the possible options but none seem
    to work.
    Help please!!!!!!

    > How would you about designing a page without using html?
    You don't. But I don't recall suggesting that you not use
    HTML. I just
    suggested that you use best-practice HTML, no? Or maybe you
    meant to ask
    how you would go about building your site without learning
    HTML? In that
    case, I think you are outta luck. Using DW without knowing
    HTML is a very
    punishing experience, I'm afraid.
    > PS: A virtual box of 12 bottles of Moet Chandon is
    already on your way!!
    I'd prefer Cristal, please.
    Murray --- ICQ 71997575
    Adobe Community Expert
    (If you *MUST* email me, don't LAUGH when you do so!)
    ==================
    http://www.projectseven.com/go
    - DW FAQs, Tutorials & Resources
    http://www.dwfaq.com - DW FAQs,
    Tutorials & Resources
    ==================
    "Untersberg" <[email protected]> wrote in
    message
    news:g4tj9a$m5o$[email protected]..
    > Ahhhhhh!!!!! They came up!!!! They came up again!!
    > I was on standard mode. Now going back to your
    suggestion, which I really
    > appreciate. How would you about designing a page without
    using html? I'm
    > just
    > redesigning my website at the moment and need it to get
    going urgently,
    > hence
    > the reluctance to start learning HTML at the moment.
    I'll do after but I
    > need
    > to get this up and running fairly quickly.
    >
    > Cheers.
    >
    > PS: A virtual box of 12 bottles of Moet Chandon is
    already on your way!!
    >

  • Convert a Tiff Image to png and show

    Hello;
    I wanto to convert a Tif image to png and show this in my web page but i dont want to save the png iamge in my server.
    Actualy i do that:
    byte[] bytes = imagenData;
                    ByteArraySeekableStream tiffStrm = new ByteArraySeekableStream(bytes);
                    String[] CdcNms = ImageCodec.getDecoderNames(tiffStrm);
                    ImageDecoder tifDecoder = ImageCodec.createImageDecoder(CdcNms[0], tiffStrm, new TIFFDecodeParam());
    //                 Check the number of pages
                    int IFDs = tifDecoder.getNumPages();
    //                 Get the first page
                    RenderedImage ren = tifDecoder.decodeAsRenderedImage(1);
                    byte[] bytes2 = doSingleConversion(ren);AND
    protected byte[] doSingleConversion(RenderedImage tifImage) throws Exception
              byte[] bytes = null;
              String out = "temp.png";
              try {
                   //      Create the PNG file
                   PNGEncodeParam pngParm = PNGEncodeParam.getDefaultEncodeParam(tifImage);
                   JAI.create("filestore", tifImage, out, "PNG", pngParm);
                   //Read the file into a byte array
                   File f = new File(out);
                   FileInputStream in = new FileInputStream(f);
                   bytes = new byte[(int) f.length()];
                   in.read(bytes);
                   in.close();
                   return bytes;
              catch(Exception e) {
                   e.printStackTrace ();
                   throw(e);
         }But this code save de image in the server; it�s posible do it without save.

    Numbers the iWorks program? Not sure you can convert it to that or just a list of numbers. Never heard of anyone that would even want to convert an Image file, Photo, to any other format. Other then another image format like JPG, PNG or a PSD Photoshop file.

  • How to decoding and encoding PNG and GIF images?

    I could decode and encode JPEG images using following create functions which are in com.sun.image.codec.jpeg package.
    JPEGImageDecoder decoder = JPEGCodec          .createJPEGDecoder(inputStream);
    JPEGImageEncoder encoder = JPEGCodec                    .createJPEGEncoder(outputStream);
    But I dont know required package and functions to decode and encode PNG and GIF images. Please help me.

    Is the API that hard to follow?
    ImageIO.read( file/stream/url)
    ImageIO.write( image, format (e.g. PNG, GIF(1), JPEG), file/stream what have you)
    1) Not sure if Java supports GIF saving, it might if you install JAI, or Java 6.

  • Color difference between PNG and JPG in Save For Web

    I am working on a website and I while building images for the site I am using a mix of png and jpg images. When I "Save for Web" the same source image creates two different color images when I save them as either png or jpg. How do I make sure the images are saving with identical colors in both png and jpg. Thanks

    >My working space is Adobe RGB but I'm not opening the sRGB PNG into Adobe RGB. I am choosing "Leave as is (don't color manage)" this should preserve the PNG's RGB numbers.
    are you certain it is not being converted when you open it?
    The numbers you quoted are the numbers I get if I open an untagged sRGB image into Adobe RGB (assuming Adobe RGB), and then convert to sRGB.
    If I open my sRGB images, either PNG or JPEG, into sRGB, they always match. I've been working on a web site for the past 3 weeks, doing this regularly.
    If you are working in Adobe RGB with sRGB images that are not tagged, you add a level of complexity that requires you make the right decision at every step. You need to open them without conversion, then assign sRGB, to keep working.
    Or just open the images in Firefox 2, which cannot color manage, and see if the sRGB jpeg and the sRGB PNG match. This is the acid test.

  • Error 1004 occurred at Open VI Reference in Directory of Top Level VI.vi- Check Path.vi- Read PNG File.vi- ValveUI.xctl:LoadBackgroundImage.vi- ValveUI.xctl:Facade 1.vi:29- ValveUI.xctl:Facade 1.vi.ProxyCaller

    I am trying to dynamically load the background image of an XControl facade using a 'LoadBackgroundImage.vi' that I have written. This SubVI has worked with a normal VIs panel before. It utilizes the 'Read PNG File.vi' from Labview to read in a transparent PNG file to overwrite the Facade background. When the XControl is loaded during design-time it generates an Error 1004 indicating that the 'Read PNG File.vi' is not in memory. I have tried to place a static reference to this vi to force it to load but I still get this error. What is the solution?
    Attachments:
    Error Dialog.PNG ‏9 KB
    LoadBackgroundImage_VI.PNG ‏33 KB

    Darin, thanks for your reply.
    The XControl Facade is rendered on the Main FP when the Main.vi is opened in design mode. Previously I have placed a PNG image onto the Facade pane (i.e. drag-n-drop the image onto the Facade FP during design) and it is displayed on the Main.vi FP in design mode when Main is loaded. However, when I include a call to Read PNG File.vi in the Facade I get the 1004 error. You may not see this error without using a Simple Error Dialog. This failure to find Read PNG File.vi in memory is the main issue.
    I have tried to use SubPanels before - they are useless for my purposes for many reasons (they don't show the underlying SubVI pane in design mode, they require the use of SubVI references to load - preventing the use of direct wiring to the SubVI connector, etc.).
    Do you know how to dynamically load and call 'Read PNG File.vi' so that Labview is forced to load the VI and then Read PNG File can load the PNG image? I can get 'Read PNG File.vi' to dynamically load and show property values but to call it with the 'Call By Reference Node Function' I need a strict type def to be generated, etc. So what are the steps needed to create a dynamic call to 'Read PNG File.vi'? I haven't seen any good working examples that show how to create the strict typedefs that are required etc. There is no right-click > Make Type Def > ...  for Read PNG File.vi or other ways to do this that I have noticed. Showing a finished example doesn't show you how to do it (menu selections, etc.). Or, do I have to hand construct these typedefs by reverse engineering the VI?

  • Adobe Reader 6 and windows 8.1

    i recently bought a new laptop and it has windows 8.1.  i have always preferred to use Adobe Reader 6 because i can delete pages, insert pages, etc.  problem is it won't work with 8.1.  how do i get the new adobe reader to do what i used to be able to do?

    The fact is no version of Adobe Reader (or prior to the Acrobat 6.x product family the "Acrobat Reader") can delete, insert, etc to PDF pages. The release of Adobe Reader X made the Sticky Note and Highlight annotation tools available.
    The release of Adobe Reader XI made the full set of Comment and Drawing Mark Up annotation tools available.
    If you've deleted, inserted, etc. for PDF pages in the past you would have been using a release of Acrobat, not Reader.
    If you need to "work" PDFs then you need Acrobat. The currently marketed release is "XI".
    Be well...

Maybe you are looking for