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. >> > >