Ok, well, disappointingly we've missed the deadline to submit a proposal
and review said proposal. Thanks for all the support from everyone, sorry
we couldn't arrange it this year.

Mehdi

On 10 April 2012 08:22, mehdi houshmand <med1...@gmail.com> wrote:

> Hi Tharaka,
>
> Sorry for the slow response, my bad, I don't have any worthwhile excuse
> other than it's holiday season over here. As for the proposal, thats fine,
> I'd be happy with that proposal. If no one else has any comments on this,
> I'd suggest moving writing this up on google-melange and getting the ball
> rolling.
>
> Keep up the good work,
>
> Mehdi
>
>
> On 5 April 2012 08:45, Tharaka Nayanajith Wijebandara <
> tharaka...@gmail.com> wrote:
>
>> Hi,
>>
>> Thank you very much for your feedbacks and suggestions.
>>
>> After going through all of your feedbacks, I modified the proposal with
>> them and used some my own ideas also. Additionally, I included the
>> proposed
>> time line of the project and I would like to see your comments here.
>>
>>
>> *Project Title*
>>
>> Implement PDF object inspector and enhance features of PDFReader GUI.
>>
>>
>> *Abstract*
>>
>> PDFReader is small GUI application which comes with Apache PDFBox pure
>> java
>> PDF library. Currently it is only capable of rendering PDFs. This project
>> is to redesign PDFReader GUI with a plugin framework and implement some
>> developer oriented features for it. Primary objectives of project are as
>> follows.
>>
>> (1). Design a plugin framework for the PDFReader.
>>
>> (2). Implement PDF basic viewing features. (Zooming, rotating, page
>> thumbnail viewer)
>>
>> (3). Implement a PDF object inspector to display PDF object properties.
>>
>> (4). Implement Export command for converting PDFs into different file
>> formats (JPEG, PNG, TXT).
>>
>>
>>
>> *Project Details*
>>
>> *
>> *
>>
>> PDFBox already has so many features required, but currently most of them
>> only available for developers and from command line. Aim of this project
>> is
>> extending PDFReader into well designed application which allows access to
>> some PDFBox features through GUI and integrating some developer oriented
>> features. However, project itself is not going to consider GUI access to
>> all available PDFBox features. Instead of that it re-architects PDFReader
>> into pluggable application which developer can easily integrate other
>> features by developing plugins.
>>
>>
>> In that case, most important primary objective of the project is designing
>> a simple plugin framework for the PDFReader. In the implementation, we can
>> use JAR Service Provider mechanism as the base of the plugin framework.
>> For
>> that first, it's required to identify what are pluggable classes which is
>> going to use in the application and define interfaces for those classes
>> with the basic methods. Then we can implement some mechanism for plugin
>> developer to define what are the classes to use, and where (which
>> JAR/directory) to load them from. When application loads, it will check
>> specific locations for plugins and create instance of those plugins using
>> class loader. Here after application can use those plugin instances as
>> components of application itself.
>>
>>
>> Rotating and zooming functions are basic features which is available in
>> every PDF viewer and it allow user to view PDF pages from different
>> perspectives. However current PDFReader is unable to provide those
>> features. This project will address to this problem as part of second
>> primary objective by implementing some menu commands for those features.
>> In
>> the implementation, it will be matter of changing some codes in PageDrawer
>> and other related class which are responsible to render PDF pages using
>> Java2D.
>>
>>
>> Other interesting feature which is going to archive as another part of
>> second objective is developing page thumbnail viewer for the PDFReader.
>> This will be cool GUI component for user to navigate through the PDF
>> Document very easily. It will be image list which has small image of the
>> every PDF page of the current document with page numbers. User can simply
>> click on the image to jump the particular page. This component will be
>> developed as plugin for PDFReader and user will be able to show and hide
>> using the menu command.
>>
>>
>> Third objective is implementing an object inspector for PDFReader and it
>> will be very much useful to developer who wants to debug PDF documents.
>> User can enable click one the any object on the PDF viewer and then in a
>> small window, it will show the information about particular object while
>> highlighting the object inside the viewer. As an example if user click on
>> image of the PDF it will show the information such as image size, color
>> space, resolution and bit depth. If object is text, it will show the
>> details about font, color space and color values. In implementation this
>> also will be developed as another plugin for the PDFReader.
>>
>>
>> Export feature is last primary objective which I'm going to implement
>> within this project and it also will be developed as several plugins. As
>> most of the available software, it's good idea to add 'Export' menu item
>> into file menu. This menu item will have submenu which contains different
>> commands for different file formats (JPEG, PNG, TXT) and each of those
>> commands will popup small dialog box which allows user to change export
>> settings such as page range, password, encoding type, file name and
>> location. After change those settings, user can simply click 'OK' button
>> of
>> the settings dialog box to start the converting process. Every command for
>> particular file format will be developed as a plugin and in future
>> developers can easily integrate commands for new file formats to convert
>> PDFs.
>>
>>
>> In addition to these primary objectives there are few secondary objectives
>> which I'm going to consider with this project and major one will be the
>> 'Add Text' feature. It will allow user to draw textbox in any place of the
>> PDF page and type new text. There will be Small window or view will appear
>> in this mode and user can change the font size, color and other related
>> properties. These new text objects will added to PDF page by inserting new
>> optional content group to the page and in case user wants to remove or
>> edit
>> this newly added text, it's possible before saving PDF permanently.
>>
>>
>>
>> Add 'print' menu item, develop plugin for mange (add, edit, delete)
>> bookmarks and View for the basic PDF properties will be the set of another
>> secondary objectives which I'm going to look at within this project. Since
>> most of them are already available in command line, it will be easy to add
>> those features as plugins for GUI if there will be enough time after
>> achieving primary objectives.
>>
>>
>>
>> *Benefits to PDFBox*
>>
>> Most of the modern code libraries are delivered with GUI application to
>> test the features before studying API. However, features of PDFBox are
>> mostly accessible through the command line interface and it discourages
>> users and new developers from using PDFBox. By having GUI for access these
>> features any user can simply use them and developer can test the features
>> without going through the code. Since designing plugin framework is a
>> primary objective of the project, developers will be able to easily append
>> new features for GUI in future.
>>
>> PDF object inspector will be great tool for developer and it will make
>> easy
>> debugging PDFs. Furthermore, it will help to new developers to study the
>> structure of PDF file and understanding PDFBox core functionalities.
>>
>>
>>
>> *Project Timeline and Deliverables*
>>
>> *May 21 - May 28*
>>
>> ·   Read and understand the current PDFReader Code
>>
>> ·   Create basic design for plugin framework
>>
>> *May 28 - Jun 08*
>>
>>                Discuss plugin framework design with community
>>
>>  *Jun 08 - Jun 18*
>>
>>                Implement plugin framework
>>
>>  *Jun 18 - Jun 25*
>>
>>                Code some basic examples and test cases for plugin
>> framework
>>
>>  *Jun 25 - Jul 02*
>>
>>                Implement basic zooming and rotating features
>>
>>  *Jul 02 - Jul 09*
>>
>>                Implement page thumbnail viewer
>>
>>  *Jul 09 - Jul 11*
>>
>>                Study and Create design for Object Inspector
>>
>>  *Jul 12 - Jul 13*
>>
>>                Submit mid-term evaluation
>>
>>  *Jul 13 - Jul 23*
>>
>>                Implement PDF Object Inspector
>>
>>  *Jul 23 - Jul 30*
>>
>>                Implement export PDF feature
>>
>>  *Jul 30 - Aug 06*
>>
>>                Implement some secondary objectives
>>
>>  *Aug 06 - Aug 13*
>>
>>                Test, debug the code and complete documentation
>>
>>  *Aug 13 - Aug 20*
>>
>>                Submit the design and conclusion
>>
>>
>>
>> *Exams and other commitments*
>>
>> I have semester end examination of University from 28th May to 8th June.
>> After that I can work fulltime (40+ hours per week) on this project until
>> end.
>>
>>
>>
>>
>> On Wed, Apr 4, 2012 at 12:44 PM, mehdi houshmand <med1...@gmail.com>
>> wrote:
>>
>> > >
>> > >
>> > > <snip>
>> > > How about just implementing the "add text" feature? That should be
>> > > relatively easy. Add a new optional content group to the page and add
>> > > all text as part of that. That makes this a cool tool to fill out
>> forms
>> > > that were scanned, or that are not AcroForms. I fully agree that the
>> > > replace feature is going to be tough, relatively speaking.
>> > >
>> >
>> > Yeah, my bad here, I shouldn't have missed it but I'm inclined to agree
>> > with Andreas. If we implemented deleting text, it could get pretty
>> tricksy,
>> > especially when CID coded fonts are used. This is a perfect candidate
>> of a
>> > secondary objective.
>> >
>> >
>> > > I wouldn't put the bar too high for this project. Get some low-hanging
>> > > fruit that adds some cool and useful functionality to the GUI. More
>> can
>> > > always be added later.
>> > >
>> > > More ideas for low-hanging fruit (as additional tasks if you end up
>> with
>> > > spare time after the main objectives above):
>> > > - Allow the "Save As..." menu item not only save a modified PDF, but
>> > > also bitmaps (PNG, JPEG), plain text and HTML (i.e. from text
>> > extraction).
>> > > That would make a plug-in for each output format, so we could add
>> others
>> > > later.
>> > > - Add a "Print..." menu item.
>> > > - Integrate preflight as a plug-in into the application.
>> > > - Split, concatenate, page reorder, page rotation (not just viewing
>> but
>> > > modifying the PDF), overlay/underlay.
>> > > - Menu item: "Create PDF from image(s)" and "Add page from image".
>> > > - A dialog/view listing the fonts in the PDF.
>> > > - A dialog/view for the basic PDF properties like in Acrobat's
>> > > Properties Dialog.
>> > > - A dialog/view listing all images with their properties and effective
>> > > resolution in the PDF.
>> > > - I could go on and on... :-) I'm seeing a serious itch going to catch
>> > > me once you've set up a good base for that GUI. I'm so looking forward
>> > > to this!
>> > >
>> > > Anyway, points 1 and 2 will be the most important tasks because they
>> > > provide the basis for easily adding additional functionality.
>> > >
>> >
>> > Yeah, those look like good tasks, maybe we'll add the two you suggest to
>> > the primary objectives and the rest into secondary or even tertiary
>> > objectives. It's good to see you getting geared up for this Jeremias,
>> we're
>> > no doubt going to call on your expertise ;-).
>> >
>> > Thanks for the support
>> >
>> > Mehdi
>> >
>>
>>
>>
>> --
>> Thanks & Regards,
>> Tharaka Wijebandara,
>> Faculty of Information Technology,
>> University of Moratuwa.
>>
>
>

Reply via email to