ICEpdf
  1. ICEpdf
  2. PDF-12

Addition of Page thumbnail views to outline panel

    Details

    • Type: Improvement Improvement
    • Status: Closed
    • Priority: Major Major
    • Resolution: Fixed
    • Affects Version/s: 3.0
    • Fix Version/s: 4.3
    • Component/s: Core/Parsing, Viewer RI
    • Labels:
      None
    • Environment:
      none

      Description

      The PDF specification allows documents to embed page thumbnails in the content stream. These thumbnails can be used/loaded by the viewer application to provide the end users with a mini page summary of pages in the document. Not all documents have embedded thumbnails but in such a case it is up the viewer implementation to create the thumbnail view.

      I would recommend that we augment our existing multi-page view code to build the thumbnail tab in the viewer RI. If a pages thumbnail is not available then we uses a page view component to draw the page thumbnail.

        Activity

        Hide
        Patrick Corless added a comment -

        Try and fit this into the next release. It's a bit of work but not terribly complex.

        Show
        Patrick Corless added a comment - Try and fit this into the next release. It's a bit of work but not terribly complex.
        Hide
        Techarch Mw added a comment -

        Thanks for the effort Patrick! I think that is a really nice feature for IcePDF.

        Show
        Techarch Mw added a comment - Thanks for the effort Patrick! I think that is a really nice feature for IcePDF.
        Hide
        Patrick Corless added a comment -

        Sorry but I have to push this to the next release. I maintenance release is due at the end of the month leaving me short of time. I think there is a still a good change this will get implemented before end of year.

        Show
        Patrick Corless added a comment - Sorry but I have to push this to the next release. I maintenance release is due at the end of the month leaving me short of time. I think there is a still a good change this will get implemented before end of year.
        Hide
        Patrick Corless added a comment -

        Pushing to 4.3.

        Show
        Patrick Corless added a comment - Pushing to 4.3.
        Hide
        Patrick Corless added a comment -

        I've checked in a fairly simple implementation of thumb nails for the core API and Viewer reference implementation.

        The Page class no has a getThumbnail() method that will return a new PDF object Thumbnail. The new Thumbnail class allows the end developer to get at the thumbnail dimension as well as the actual image. If getThumbnail() returns null the document doesn't have a thumbnail associated with it.

        The viewer RI has been updated, with a new "thumbnail" tab being added to the utility pane. the new Thumbnail tab contains a panel in which page thumbnails are drawn. If a document has encoded thumbnails then the thumbnail view is populated quite quickly. Otherwise each page needs to be parsed and painted to generate the thumbnail. This happens on the fly on a separate worker thread.

        Each thumbNail in the thumbnail view is represented by a fairly smart component that stores the thumbnail or painted page in a buffer that is stored in a WeakList. The overall memory usage is actually quite small for this enhancement. .

        Show
        Patrick Corless added a comment - I've checked in a fairly simple implementation of thumb nails for the core API and Viewer reference implementation. The Page class no has a getThumbnail() method that will return a new PDF object Thumbnail. The new Thumbnail class allows the end developer to get at the thumbnail dimension as well as the actual image. If getThumbnail() returns null the document doesn't have a thumbnail associated with it. The viewer RI has been updated, with a new "thumbnail" tab being added to the utility pane. the new Thumbnail tab contains a panel in which page thumbnails are drawn. If a document has encoded thumbnails then the thumbnail view is populated quite quickly. Otherwise each page needs to be parsed and painted to generate the thumbnail. This happens on the fly on a separate worker thread. Each thumbNail in the thumbnail view is represented by a fairly smart component that stores the thumbnail or painted page in a buffer that is stored in a WeakList. The overall memory usage is actually quite small for this enhancement. .
        Hide
        Patrick Corless added a comment -

        Further work should be done to make the thumb nails look a little nice and perhaps be more interactive.

        The thumbnails is painted on top of a white box, the addition of a border or page shadow might help the view look a little sharper.

        When a thumbnail component is clicked the the corresponding page is loaded in the main viewer panel. In the future the current view clip could be drawn on the thumbnail. The clip box could be dragged or re sized to change the main view port.

        Show
        Patrick Corless added a comment - Further work should be done to make the thumb nails look a little nice and perhaps be more interactive. The thumbnails is painted on top of a white box, the addition of a border or page shadow might help the view look a little sharper. When a thumbnail component is clicked the the corresponding page is loaded in the main viewer panel. In the future the current view clip could be drawn on the thumbnail. The clip box could be dragged or re sized to change the main view port.
        Hide
        Patrick Corless added a comment -

        Marking as resolved for now. There could be a little more polished but the core api changes seem to be well enough.

        Show
        Patrick Corless added a comment - Marking as resolved for now. There could be a little more polished but the core api changes seem to be well enough.

          People

          • Assignee:
            Patrick Corless
            Reporter:
            Patrick Corless
          • Votes:
            2 Vote for this issue
            Watchers:
            2 Start watching this issue

            Dates

            • Created:
              Updated:
              Resolved: