{ "info": { "author": "David Brenneman", "author_email": "db@davidbrenneman.com", "bugtrack_url": null, "classifiers": [ "Framework :: Plone", "Programming Language :: Python", "Topic :: Software Development :: Libraries :: Python Modules" ], "description": ".. image:: https://travis-ci.org/collective/collective.pdfpeek.png?branch=master\r\n :target: https://travis-ci.org/collective/collective.pdfpeek\r\n\r\n.. image:: https://coveralls.io/repos/collective/collective.pdfpeek/badge.png\r\n :target: https://coveralls.io/r/collective/collective.pdfpeek\r\n\r\nIntroduction\r\n============\r\n\r\nPdfPeek is a Plone 4 add-on product that utilizes GNU Ghostscript to generate\r\nimage thumbnail previews of PDF files uploaded to ATFile based content\r\nobjects. Dexterity (and ``plone.app.contenttypes``) support was added in\r\n``2.0.0``\r\n\r\n* This product, when installed in a Plone 4.x site, will automatically generate\r\n preview and thumbnail images of each page of uploaded PDF files and store\r\n them annotated onto the content object containing the PDF file.\r\n\r\n* Image generation from the PDF file is processed asynchronously so that the\r\n user does not have to wait for the images to be created in order to continue\r\n using the site, as the processing of large PDF files can take many minutes to\r\n complete.\r\n\r\n Since ``2.0.0`` pdfpeek supports *rabbitmq* message queuing to generate\r\n thumbnails, see Installation section for more details\r\n\r\n* When a file object is initialized or edited, PdfPeek checks to see if a PDF\r\n file was uploaded. If so, a ghostscript image conversion job is added to the\r\n pdfpeek job queue (or rabbitmq in case of ``collective.zamqp`` usage).\r\n\r\n* If the file uploaded is not of content type 'application/pdf', an image\r\n removal job is added to the pdfpeek job queue. This job queue is processed\r\n periodically by a cron job or a zope clock server process. The image\r\n conversion jobs add the IPDF interface to the content object and store the\r\n resulting image preview and thumbnail for each page of the PDF annotated on\r\n to the content object itself. The image removal jobs remove the image\r\n annotations and the IPDF interface from the content object.\r\n\r\n* If a job fails, it is removed from the processing queue and appended to a\r\n list of failed jobs. If a job succeeds, it is removed from the processing\r\n queue and appended to a list of successfully completed jobs.\r\n\r\n\r\nViewlet\r\n-------\r\n\r\nPdfPeek ships with an example user interface that is turned on by default. This\r\nUI displays the thumbnail images of each page of the PDF file when a user views\r\nthe content object in their browser. This example UI is not quite working yet,\r\nand is meant to be just that, an example. I don't claim to be a javascript\r\nmaster.\r\n\r\nA custom traverser is available to make it easy to access the images and\r\npreviews directly, as well as to build custom views incorporating image\r\npreviews of file content.\r\n\r\nInstallation\r\n------------\r\n\r\nUse ``zc.buildout`` to install. If you want asynchronous queue processing using\r\n``collective.zamqp`` you may want to add ``collective.pdfpeek [zamqp]``. Use\r\n\r\n- ``collective.pdfpeek [dexterity]`` for dexterity support\r\n- ``collective.pdfpeek [archetype]`` for archetype support\r\n- ``collective.pdfpeek [zamqp]`` for ``collective.zamqp`` support\r\n\r\nYou can also combine those extras as shown below (see ``buildout-zamqp.cfg``\r\nfor a working buildout configuration)::\r\n\r\n [buildout]\r\n ...\r\n parts =\r\n instance\r\n\r\n [instance]\r\n recipe = plone.recipe.zope2instance\r\n user = admin:admin\r\n http-address = 8080\r\n eggs =\r\n ...\r\n collective.pdfpeek [dexterity, zamqp]\r\n\r\n zope-conf-additional =\r\n %import collective.zamqp\r\n \r\n connection_id superuser\r\n hostname 127.0.0.1\r\n port 5672\r\n username guest\r\n password guest\r\n heartbeat 120\r\n keepalive 60\r\n \r\n\r\nConfiguration\r\n-------------\r\n\r\nPdfPeek ships with a configlet that allows the site administrator to adjust the\r\nsize of the generated preview and thumbnail images, as well as toggle the\r\nexample user interface and default event handlers on and off.\r\n\r\n\r\nRequirements\r\n------------\r\n\r\n* Plone 4.1+\r\n\r\n* Requires the GNU ghostscript gs binary to be available on the $PATH!\r\n\r\n* Tested on POSIX compliant systems such as LINUX and MacOS 10.8.\r\n\r\n* Untested on Windows systems. (Wouldn't be surprised if it works, as long as\r\n you can install gs.)*\r\n\r\n* As of version 0.17, Plone 3.x is no longer officially supported.\r\n\r\n\r\nCode, Issues, Comments\r\n----------------------\r\n\r\n* Code repository: https://github.com/collective/collective.pdfpeek\r\n\r\n* Report bugs on github: https://github.com/collective/collective.pdfpeek/issues\r\n\r\n* Questions and comments to db@davidbrenneman.com\r\n\r\n\r\nTODO\r\n====\r\n\r\n- Implement a processing queue model that can process files asyncronously,\r\n more than one at a time (Should be work using RabbitMQ, but will cause\r\n conflict errors).\r\n\r\n- Implement control panel for adding and removing image previews on file\r\n objects containing PDF files.\r\n\r\n\r\nInstallation\r\n============\r\n\r\nVia zc.buildout\r\n---------------\r\n\r\nThe recommended method of using collective.pdfpeek is by installing via\r\nzc.buildout using the plone.recipe.zope2instance recipe.\r\nPdfPeek uses z3c.autoinclude to load it's zcml, so you don't need a zcml slug.\r\n\r\nAdd collective.pdfpeek to the list of eggs in the instance section of your\r\nbuildout.cfg like so::\r\n\r\n [instance]\r\n ...\r\n eggs =\r\n ...\r\n collective.pdfpeek\r\n ...\r\n\r\nThen re-run your buildout like so to activate the installation::\r\n\r\n $ bin/buildout\r\n\r\nVia setuptools\r\n--------------\r\n\r\nTo install collective.pdfpeek into the global Python environment (or a virtualenv),\r\nusing a traditional Zope 2 instance, you can do this:\r\n\r\n* When you're reading this you have probably already run\r\n ``easy_install collective.pdfpeek``. Find out how to install setuptools\r\n (and EasyInstall) here:\r\n http://peak.telecommunity.com/DevCenter/EasyInstall\r\n\r\n* If you are using Zope 2.9 (not 2.10), get `pythonproducts`_ and install it\r\n via::\r\n\r\n python setup.py install --home /path/to/instance\r\n\r\ninto your Zope instance.\r\n\r\n* Create a file called ``collective.pdfpeek-configure.zcml`` in the\r\n ``/path/to/instance/etc/package-includes`` directory. The file\r\n should only contain this::\r\n\r\n \r\n\r\n.. _pythonproducts: http://plone.org/products/pythonproducts\r\n\r\n\r\nConfiguration\r\n=============\r\n\r\n\r\nVia zc.buildout\r\n---------------\r\n\r\nFor automatic processing of the PdfPeek job queue, a simple cron script using\r\ncurl or wget would suffice. It is nice to keep all of the configuration for a\r\nproject in your buildout, however. For this reason, a zope clock server process\r\nis the recommended way to automatically process the job queue. You can do so by\r\nadding the following snippet to your [instance] part in your buildout\r\nconfiguration::\r\n\r\n [instance]\r\n ...\r\n zope-conf-additional=\r\n # process the job queue every 5 seconds\r\n \r\n method /Plone/@@pdfpeek.utils/process_conversion_queue\r\n period 5\r\n user admin\r\n password admin\r\n host localhost\r\n \r\n ...\r\n\r\nYou will have to edit the above snippet to customize the name of the plone site,\r\nthe admin username and password, and the hostname the instance is running on.\r\nYou can also adjust the interval at which the queue is processed by the clock\r\nserver.\r\n\r\nThen re-run your buildout like so to activate the clock server::\r\n\r\n $ bin/buildout\r\n\r\n\r\nVia cron\r\n--------\r\n\r\nInstall ``wget``. \\\r\n\r\nEdit your crontab file and append the following line::\r\n\r\n 5 * * * * wget --user=admin --password=admin http://localhost:8080/Plone/@@pdfpeek.utils/process_conversion_queue\r\n\r\nYou will have to customize the above line with the hostname, port number, username, password and path to your plone instance.\r\n\r\nSave your crontab file and wget will now call the view method that triggers the\r\nprocessing of the pdf conversion queue every five minutes.\r\n\r\n\r\nVia RabbitMQ\r\n------------\r\n\r\nInstall rabbitmq-server on your machine. There are very good documentations\r\non the rabbitmq website, see: http://www.rabbitmq.com/download.html\r\n\r\nInstead of configuring a clockserver, you should configure collective.zamqp to\r\nwork, see following example::\r\n\r\n [buildout]\r\n parts =\r\n instance\r\n worker\r\n\r\n ...\r\n\r\n [instance]\r\n recipe = plone.recipe.zope2instance\r\n http-address = 8080\r\n eggs =\r\n ...\r\n collective.pdfpeek\u00a0[zamqp]\r\n\r\n ...\r\n zope-conf-additional =\r\n %import collective.zamqp\r\n \r\n connection_id superuser\r\n hostname my.rabbithostname.com\r\n port 5672\r\n username guest\r\n password guest\r\n heartbeat 120\r\n keepalive 60\r\n \r\n\r\n [worker]\r\n <= instance\r\n http-address = 8081\r\n zserver-threads = 1\r\n environment-vars =\r\n ZAMQP_LOGLEVEL INFO\r\n zope-conf-additional =\r\n ${instance:zope-conf-additional}\r\n \r\n connection_id superuser\r\n site_id Plone\r\n user_id admin\r\n \r\n\r\nFor advanced configuration see ``collective.zamqp`` documentation here:\r\nhttps://pypi.python.org/pypi/collective.zamqp\r\n\r\n\r\nChangelog\r\n=========\r\n\r\n2.0.0 (2014-12-04)\r\n------------------\r\n\r\n- Update ``README.rst`` to include a configuration example\r\n [saily]\r\n\r\n- Fix failing tests by including metadata into annotation storage of\r\n processed files. Test updates.\r\n [saily]\r\n\r\n- Use ``abc.ABCMeta`` as metaclass for abstract base class.\r\n [saily]\r\n\r\n- Fix dependencies and don't include ``collective.zamqp`` into tests to allow\r\n test of default event handlers.\r\n [saily]\r\n\r\n- Updated events and added subscriber for ``IObjectCreatedEvent``.\r\n [agitator]\r\n\r\n- Drop support for Plone 4.1, Fix test setup with ``plone.app.contenttypes``.\r\n [saily]\r\n\r\n- Flake8, PEP8 cleanup, remove double quotes, PEP3101, jshint, jscs and csslint\r\n checks using ``plone.recipe.codeanalysis``. This is also done on travis.\r\n [saily]\r\n\r\n- Update ``buildout`` and travis config.\r\n [saily]\r\n\r\n- Update ``bootstrap.py`` for buildout 2.x.\r\n [saily]\r\n\r\n\r\n2.0b2 (2013-10-17)\r\n------------------\r\n\r\n- Fix missing README.rst in package.\r\n [saily]\r\n\r\n\r\n2.0b1 (2013-10-17)\r\n------------------\r\n\r\n- Add a basic behavior to allow users to create PDF thumbnails for their own\r\n dexterity content types.\r\n [saily]\r\n\r\n- Add ``collective.zamqp`` integration to allow queuing PDF thumbnail jobs into\r\n RabbitMQ message queuing server.\r\n [saily]\r\n\r\n- Switch to PyPDF2 which is maintained compared to pyPdf and can be used as\r\n a drop-in replacement.\r\n [saily]\r\n\r\n- Add travis-ci for Plone 4.1, Plone 4.2 and Plone 4.3.\r\n [saily]\r\n\r\n- Use ``plone.app.testing`` and layers for tests. Add more tests for dexterity\r\n and ATContentTypes.\r\n [saily]\r\n\r\n- Huge refactoring to replace transformers and functions with more flexible\r\n adapters.\r\n [saily]\r\n\r\n- Plone 4.3 compatibility by removing deprecated imports from\r\n ``zope.app.component``.\r\n [saily]\r\n\r\n- Add a new ``.gitignore`` file.\r\n [saily]\r\n\r\n- Add egg-contained buildout. Rename ``*.txt`` to ``*.rst`` to support github\r\n markup directly.\r\n [saily]\r\n\r\n- Dexterity types integration with field retrieval using IPrimaryFieldInfo\r\n adapter. This brings full functionality for ``plone.app.contenttypes``.\r\n [saily]\r\n\r\n- Updated docs.\r\n [saily]\r\n\r\n\r\n1.3 (2011-05-31)\r\n----------------\r\n\r\n - Switched to PNG from JPEG.\r\n [dbrenneman]\r\n\r\n1.2 (2010-12-7)\r\n----------------\r\n\r\n - Fixed issue where local utilities would clash if pdfpeek was installed on\r\n multiple Plone instances within the same zope.\r\n [dbrenneman]\r\n\r\n - Fixed uninstall profile so that local persistent utilities are removed and\r\n image annotations are removed on uninstall of product.\r\n [dbrenneman]\r\n\r\n1.0 (2010-5-27)\r\n----------------\r\n\r\n - Fixed jQuery UI.\r\n [reedobrien]\r\n\r\n0.19 (2010-4-8)\r\n----------------\r\n\r\n - Modified transform to use cStringIO instead of StringIO, in the hopes of making things more efficient.\r\n [dbrenneman]\r\n\r\n - Modified conversion function to grab file data from object using getFile method, as this is the *proper* way of doing things...\r\n [dbrenneman]\r\n\r\n0.18 (2010-2-26)\r\n----------------\r\n\r\n - Fixed bug in reST rendering of changelog.\r\n [dbrenneman]\r\n\r\n0.17 (2010-2-26)\r\n-----------------\r\n\r\n - Added wide variety of pdf files to run through the unit tests for the\r\n ghostscript image transform.\r\n [dbrenneman]\r\n\r\n - Added unit tests for low level ghostscript transform.\r\n [dbrenneman]\r\n\r\n - Refactored transform code to make class and method names make more sense.\r\n [dbrenneman]\r\n\r\n - Updated README, including instructions for configuring the clock server.\r\n [dbrenneman]\r\n\r\n - Added asyncronous processing queue for ghostscript transform jobs.\r\n [dbrenneman]\r\n\r\n - Updated functional doctests to work on Plone 4 with blobfile storage.\r\n [dbrenneman]\r\n\r\n - Updated functional doctests to test transform queue.\r\n [dbrenneman]\r\n\r\n - Updated documentation.\r\n [dbrenneman]\r\n\r\n - Added unit testing harness.\r\n [dbrenneman]\r\n\r\n0.16 (2009-12-12)\r\n-----------------\r\n\r\n - Bugfix release.\r\n [dbrenneman]\r\n\r\n0.15 (2009-12-12)\r\n-----------------\r\n\r\n - Added configurable preview and thumbnail sizes.\r\n [claytron]\r\n\r\n - reST police! Fixing up the docs so that they might get rendered\r\n correctly.\r\n [claytron]\r\n\r\n0.13 (2009-11-12)\r\n-----------------\r\n\r\n - Refactored transform code to deal with encrypted pdf files better.\r\n [dbrenneman]\r\n\r\n - Made transform code more robust.\r\n [dbrenneman]\r\n\r\n - Added ability to toggle default event handler on and off.\r\n [dbrenneman]\r\n\r\n0.12 (2009-10-25)\r\n-----------------\r\n\r\n - Bugfix release.\r\n [dbrenneman]\r\n\r\n0.11 (2009-10-25)\r\n-----------------\r\n\r\n - Bugfix release.\r\n [dbrenneman]\r\n\r\n0.10 (2009-10-25)\r\n-----------------\r\n\r\n - Added code to check for EOF at the end of the pdf file data string and to\r\n insert one if it is not there. Fixes many corrupt pdf files.\r\n [dbrenneman]\r\n\r\n0.9 (2009-10-13)\r\n----------------\r\n\r\n - Fixed another bug in the transform code to allow functioning with any\r\n filefield, as long as it is called file.\r\n [dbrenneman]\r\n\r\n0.8 (2009-10-13)\r\n----------------\r\n\r\n - Fixed a bug in the transform code to allow functioning with any filefield,\r\n as long as it is called file.\r\n [dbrenneman]\r\n\r\n0.7 (2009-10-13)\r\n----------------\r\n\r\n - Streamlined transform code.\r\n [dbrenneman]\r\n\r\n - Added ability to toggle the pdfpeek viewlet display on and off via configlet.\r\n [dbrenneman]\r\n\r\n0.6 (2009-10-05)\r\n----------------\r\n\r\n - Bugfix release.\r\n [dbrenneman]\r\n\r\n0.5 (2009-10-05)\r\n----------------\r\n\r\n - Added control panel configlet.\r\n [dbrenneman]\r\n\r\n - Removed unneeded xml files from uninstall profile.\r\n [dbrenneman]\r\n\r\n - Optimized transform.\r\n [dbrenneman]\r\n\r\n - Added storage of image thumbnail along with image, generated with PIL.\r\n [dbrenneman]\r\n\r\n - Changed annotation to store images in a dict instead of a list.\r\n [dbrenneman]\r\n\r\n - Changed event handler to listen on all AT based objects instead of ATFile.\r\n [dbrenneman]\r\n\r\n - Added custom pdfpeek icon for configlet.\r\n [dbrenneman]\r\n\r\n - Added custom traverser to allow easy access to the OFS.Image.Image()\r\n objects stored on IPDF objects.\r\n [dbrenneman]\r\n\r\n - Modified pdfpeek viewlet code to display images using the custom traverser.\r\n [dbrenneman]\r\n\r\n - Added custom scrollable gallery with tooltips using jQuery Tools to the\r\n pdfpeek viewlet for display.\r\n [dbrenneman]\r\n\r\n0.4 (2009-10-01)\r\n----------------\r\n\r\n - Refactored storage to use OFS.Image.Image() objects instead of storing the\r\n raw binary data in string format.\r\n [dbrenneman]\r\n\r\n - Refactored event handler object variable name.\r\n [dbrenneman]\r\n\r\n - Removed unneeded files from default GS Ext. profile.\r\n [dbrenneman]\r\n\r\n - Removed unneeded javascript files and associated images and css.\r\n [dbrenneman]\r\n\r\n0.3 - 2009-08-03\r\n----------------\r\n\r\n- fixed parsing of pdf files with multiple pages\r\n [piv]\r\n\r\n0.1 - Unreleased\r\n----------------\r\n\r\n- Initial release", "description_content_type": null, "docs_url": null, "download_url": "UNKNOWN", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/collective/collective.pdfpeek", "keywords": "Plone Zope Python PDF", "license": "GPL", "maintainer": "", "maintainer_email": "", "name": "collective.pdfpeek", "package_url": "https://pypi.org/project/collective.pdfpeek/", "platform": "UNKNOWN", "project_url": "https://pypi.org/project/collective.pdfpeek/", "project_urls": { "Download": "UNKNOWN", "Homepage": "https://github.com/collective/collective.pdfpeek" }, "release_url": "https://pypi.org/project/collective.pdfpeek/2.0.0/", "requires_dist": null, "requires_python": null, "summary": "A Plone 4 product that generates image thumbnail previews of PDF files stored on ATFile based objects.", "version": "2.0.0" }, "last_serial": 1331019, "releases": { "0.10": [ { "comment_text": "", "digests": { "md5": "85ca42b9e0602a74daa71586205037e5", "sha256": "9982329ab1318b60347db5dad2eb34254e105f0bea890260e72264249140ca24" }, "downloads": -1, "filename": "collective.pdfpeek-0.10.tar.gz", "has_sig": false, "md5_digest": "85ca42b9e0602a74daa71586205037e5", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 272087, "upload_time": "2009-10-25T21:51:42", "url": "https://files.pythonhosted.org/packages/75/6d/f10bf0d170117e138cd249aa0c9662c4f629233a3b6674a6aeda3792e88f/collective.pdfpeek-0.10.tar.gz" } ], "0.11": [ { "comment_text": "", "digests": { "md5": "b91ce84fbc4e617f3982eb9b4a39fd5c", "sha256": "9779f15e7d548efc533cb5c7fc320c0e20c042872c6444518c531bef23902e12" }, "downloads": -1, "filename": "collective.pdfpeek-0.11.tar.gz", "has_sig": false, "md5_digest": "b91ce84fbc4e617f3982eb9b4a39fd5c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 272115, "upload_time": "2009-10-25T22:51:52", "url": "https://files.pythonhosted.org/packages/1b/cb/c9a73a3520596079d31243eabf758bf321dcb5c40bf55e77e09304cffd3f/collective.pdfpeek-0.11.tar.gz" } ], "0.12": [ { "comment_text": "", "digests": { "md5": "a16de361e07a5b3acb4af47bccc00898", "sha256": "fd5bc8770ddeeb5379dc2c2e4fe871603d7771397c370c48eebf0987590b0574" }, "downloads": -1, "filename": "collective.pdfpeek-0.12.tar.gz", "has_sig": false, "md5_digest": "a16de361e07a5b3acb4af47bccc00898", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 272095, "upload_time": "2009-10-25T23:49:28", "url": "https://files.pythonhosted.org/packages/6c/a1/7fcdb1410311623a8cb180d792a0a54cd1d14f7a55c203b2bc809c93c428/collective.pdfpeek-0.12.tar.gz" } ], "0.13": [ { "comment_text": "", "digests": { "md5": "49ecabe716ebc25330ee48db0db6edf3", "sha256": "5a8defaf79d2bfd1659e942a4c9bf7a6fc86891f51c16c2ca037056f84c5ec05" }, "downloads": -1, "filename": "collective.pdfpeek-0.13.tar.gz", "has_sig": false, "md5_digest": "49ecabe716ebc25330ee48db0db6edf3", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 272620, "upload_time": "2009-11-12T15:58:06", "url": "https://files.pythonhosted.org/packages/b3/2d/6e66d3899e9ce665f4ce8ff27b769ab45e982c93e47a918776ec1c466096/collective.pdfpeek-0.13.tar.gz" } ], "0.14": [ { "comment_text": "", "digests": { "md5": "abb2391939fb307f447d4493ebb3d046", "sha256": "3a5c833d56b3e3ced8d3b4ed641ec4eac53e19f2a019c925afeedf84ae0bb07d" }, "downloads": -1, "filename": "collective.pdfpeek-0.14.tar.gz", "has_sig": false, "md5_digest": "abb2391939fb307f447d4493ebb3d046", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 272486, "upload_time": "2009-12-01T22:36:12", "url": "https://files.pythonhosted.org/packages/43/39/f1265289563b63d8a774898c6351c70da5495fcfdee1ee8a57b4a7baa5fd/collective.pdfpeek-0.14.tar.gz" } ], "0.15": [ { "comment_text": "", "digests": { "md5": "87ec8bd5d190531bd6a769c6f486da97", "sha256": "512610b8785ea220af65b1706d060754dc5d3098b2a2605effc10304395eb6ce" }, "downloads": -1, "filename": "collective.pdfpeek-0.15.tar.gz", "has_sig": false, "md5_digest": "87ec8bd5d190531bd6a769c6f486da97", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 272839, "upload_time": "2009-12-21T23:17:02", "url": "https://files.pythonhosted.org/packages/28/8b/2cd7b3aaa904c8581a2bd99ab3f54c157e86d6f89de2592cb1ad40b83c1e/collective.pdfpeek-0.15.tar.gz" } ], "0.16": [ { "comment_text": "", "digests": { "md5": "869d7b9876f55e3fe193d52e38a196ce", "sha256": "495fb4338d506ccf00bdee610db5bc0a938f6eb13d06c5660394b30716c922e2" }, "downloads": -1, "filename": "collective.pdfpeek-0.16.tar.gz", "has_sig": false, "md5_digest": "869d7b9876f55e3fe193d52e38a196ce", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 273141, "upload_time": "2009-12-21T23:35:38", "url": "https://files.pythonhosted.org/packages/a1/80/5107adfe1cd8ab0ba580af5d5fb3399c77059c71f3149d9895ae543a4431/collective.pdfpeek-0.16.tar.gz" } ], "0.17": [ { "comment_text": "", "digests": { "md5": "1bf6413d1aee934bf8f483c28d22dde4", "sha256": "54a0b78a33cce899b5f8978928518ed5ff3e31d29f0c4201e9ac4055232d4aee" }, "downloads": -1, "filename": "collective.pdfpeek-0.17.tar.gz", "has_sig": false, "md5_digest": "1bf6413d1aee934bf8f483c28d22dde4", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 11062339, "upload_time": "2010-02-26T19:20:21", "url": "https://files.pythonhosted.org/packages/10/4e/e1bd37064733ed79d572dbf39d4bed4009f9758e6449bd37a4a399931c9b/collective.pdfpeek-0.17.tar.gz" } ], "0.18": [ { "comment_text": "", "digests": { "md5": "c1992d191019893b3ac7f6d61102376e", "sha256": "a390baef010b246b8b8d41b22bd84b952bfa79ebd64ca0822160f59d3286aec4" }, "downloads": -1, "filename": "collective.pdfpeek-0.18.tar.gz", "has_sig": false, "md5_digest": "c1992d191019893b3ac7f6d61102376e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 11062448, "upload_time": "2010-02-26T20:41:18", "url": "https://files.pythonhosted.org/packages/4f/a6/4666bba09b65ac3a2194ec8861d692dbf24c8257738a655631d521d6a1df/collective.pdfpeek-0.18.tar.gz" } ], "0.19": [ { "comment_text": "", "digests": { "md5": "eeab304e1ebb605d6ab3cec3623bb422", "sha256": "d064ffe934c035a10f58f71bb05395849c65709049700c36a86a8d6ea8570fb5" }, "downloads": -1, "filename": "collective.pdfpeek-0.19.tar.gz", "has_sig": false, "md5_digest": "eeab304e1ebb605d6ab3cec3623bb422", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 11062412, "upload_time": "2010-04-09T00:07:01", "url": "https://files.pythonhosted.org/packages/40/15/88c5f184b73ece358b42331278747933d5131d01ffa81175dc9a60ff1311/collective.pdfpeek-0.19.tar.gz" } ], "0.1dev-r84743": [ { "comment_text": "", "digests": { "md5": "61638e99bb11a7250c841664ffd15d95", "sha256": "491e081664fbe89fb24afe3c642350bce687ef9cc852742716a0f96886eab71a" }, "downloads": -1, "filename": "collective.pdfpeek-0.1dev-r84743.tar.gz", "has_sig": false, "md5_digest": "61638e99bb11a7250c841664ffd15d95", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 96575, "upload_time": "2009-04-21T06:37:12", "url": "https://files.pythonhosted.org/packages/7f/f2/151637382842e551c4d75cb8e7939e3badf5a913cf0434310f827d23b71e/collective.pdfpeek-0.1dev-r84743.tar.gz" } ], "0.1dev-r84786": [ { "comment_text": "", "digests": { "md5": "2a31f4cf399692d2baad6ab797a29fa4", "sha256": "58103dcf6d88843f65a7ff2cab0b1a736de68ead1813ceef09c615393cbe7417" }, "downloads": -1, "filename": "collective.pdfpeek-0.1dev-r84786.tar.gz", "has_sig": false, "md5_digest": "2a31f4cf399692d2baad6ab797a29fa4", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 96580, "upload_time": "2009-04-21T17:32:10", "url": "https://files.pythonhosted.org/packages/96/67/304e9d1b40133a962973986a24c24481b31a21b78b626398bf441a40c261/collective.pdfpeek-0.1dev-r84786.tar.gz" } ], "0.2dev-r85204": [ { "comment_text": "", "digests": { "md5": "ac124c66d484469fa21130d969659c3f", "sha256": "923fd005a17fb2f63cd1c0b789854f7aac28e5eb96e28464f0e49be2beee711f" }, "downloads": -1, "filename": "collective.pdfpeek-0.2dev_r85204-py2.4.egg", "has_sig": false, "md5_digest": "ac124c66d484469fa21130d969659c3f", "packagetype": "bdist_egg", "python_version": "2.4", "requires_python": null, "size": 162229, "upload_time": "2009-04-29T05:14:52", "url": "https://files.pythonhosted.org/packages/cd/78/a3b9392d5dc75942e1adaae4c7aa6f9e53a98618ec7acb86f34bf945e1ff/collective.pdfpeek-0.2dev_r85204-py2.4.egg" }, { "comment_text": "", "digests": { "md5": "42aeaace8842b4c6f84e21fd1db286b0", "sha256": "5d759b29785cc033647fa97b97c09eebf4e4784352c9820914f22727031b33a8" }, "downloads": -1, "filename": "collective.pdfpeek-0.2dev-r85204.tar.gz", "has_sig": false, "md5_digest": "42aeaace8842b4c6f84e21fd1db286b0", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 149563, "upload_time": "2009-04-29T05:14:47", "url": "https://files.pythonhosted.org/packages/72/e2/530e216c4ecb26f83decdd8b95191948da9b86c2a1f5733ced0e818fd178/collective.pdfpeek-0.2dev-r85204.tar.gz" } ], "0.3": [ { "comment_text": "", "digests": { "md5": "c6d1478a324a7e54ee03e63d99031283", "sha256": "26b0f60a083a63a6a9f53f5970b6f56d8de6aa6c7c4c00e6f43fe66476e580d3" }, "downloads": -1, "filename": "collective.pdfpeek-0.3-py2.5.egg", "has_sig": false, "md5_digest": "c6d1478a324a7e54ee03e63d99031283", "packagetype": "bdist_egg", "python_version": "2.5", "requires_python": null, "size": 164696, "upload_time": "2009-08-04T01:26:18", "url": "https://files.pythonhosted.org/packages/d5/5c/fa759f0ae116ebba4e8f037d1e9cd3472dd4b4c58e176d773b98d49bca42/collective.pdfpeek-0.3-py2.5.egg" }, { "comment_text": "", "digests": { "md5": "62cfac6c3d52429dab30e7ad144214d3", "sha256": "c304de7eb765281c59b5611cea8047ec570835cc8c55f4b88982ce3154400382" }, "downloads": -1, "filename": "collective.pdfpeek-0.3.tar.gz", "has_sig": false, "md5_digest": "62cfac6c3d52429dab30e7ad144214d3", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 149196, "upload_time": "2009-08-04T01:26:58", "url": "https://files.pythonhosted.org/packages/c0/6d/0fe64ef2306b5f27f616c4f29dcf8eca8a44be3d065e9616b4260a75c567/collective.pdfpeek-0.3.tar.gz" } ], "0.3dev-r89230": [ { "comment_text": "", "digests": { "md5": "592c91a863adae75d9a4152498e14bfe", "sha256": "50cf874b820c208eec9684ecacf6211cf2b9d0b6242d6c572dea4d2fda841fc6" }, "downloads": -1, "filename": "collective.pdfpeek-0.3dev-r89230.tar.gz", "has_sig": false, "md5_digest": "592c91a863adae75d9a4152498e14bfe", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 149301, "upload_time": "2009-07-04T00:50:10", "url": "https://files.pythonhosted.org/packages/b3/46/2504c864d3165fbde924999913bef518fdb899d057d16459bc3ee45f326b/collective.pdfpeek-0.3dev-r89230.tar.gz" } ], "0.5": [ { "comment_text": "", "digests": { "md5": "ba0c8518f9a84289e0f802d4122ca238", "sha256": "9de8914581884a533e56e2b881d6e7a406214d3de9a8811dee375252397e5596" }, "downloads": -1, "filename": "collective.pdfpeek-0.5.tar.gz", "has_sig": false, "md5_digest": "ba0c8518f9a84289e0f802d4122ca238", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 270988, "upload_time": "2009-10-05T18:02:38", "url": "https://files.pythonhosted.org/packages/c3/fd/6a0af8a3887da8bd36e55de951329a2ac94eff36dd643afff5a5b20dfbbf/collective.pdfpeek-0.5.tar.gz" } ], "0.5dev-r0": [ { "comment_text": "", "digests": { "md5": "547a7624675ddf7fd878aa60fb0a0cd0", "sha256": "998cac29149e61e0bf981710157602d864b0f5ceac49758116525b8f89356ae1" }, "downloads": -1, "filename": "collective.pdfpeek-0.5dev-r0.tar.gz", "has_sig": false, "md5_digest": "547a7624675ddf7fd878aa60fb0a0cd0", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 271026, "upload_time": "2009-10-05T18:00:34", "url": "https://files.pythonhosted.org/packages/7d/e1/b9902b4f2558934e28751fd3f397f005ac471414a4cca833bf7a630ecadd/collective.pdfpeek-0.5dev-r0.tar.gz" } ], "0.6": [ { "comment_text": "", "digests": { "md5": "6c93512d9202ee3f2695b53c8051bc07", "sha256": "91754cd1b7a848f4d2a44c727ae109a936976c51c09499a038472fc4c5b08d77" }, "downloads": -1, "filename": "collective.pdfpeek-0.6.tar.gz", "has_sig": false, "md5_digest": "6c93512d9202ee3f2695b53c8051bc07", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 271145, "upload_time": "2009-10-05T18:20:38", "url": "https://files.pythonhosted.org/packages/bb/e2/685401de4d1fefafde8109f3dcba4dd421098b5ec43f9993a9ac98526f6a/collective.pdfpeek-0.6.tar.gz" } ], "0.7": [ { "comment_text": "", "digests": { "md5": "3345b5696280612e13d1a18d4ff6bff4", "sha256": "9123fb735b45218d844c3985102e6ff2bfbb9dae003f4823ba56618ea452c8c0" }, "downloads": -1, "filename": "collective.pdfpeek-0.7.tar.gz", "has_sig": false, "md5_digest": "3345b5696280612e13d1a18d4ff6bff4", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 271407, "upload_time": "2009-10-14T03:12:48", "url": "https://files.pythonhosted.org/packages/c3/8b/723efd64e4f34761366b17955dd032191689b161077dce79e3b7c9c8f178/collective.pdfpeek-0.7.tar.gz" } ], "0.8": [ { "comment_text": "", "digests": { "md5": "92474faef5e9c9e2f52c17eb414bb719", "sha256": "fb20899202eafef2881adccafc8eea672a93d86e9bcb33173f9955d50dd0186a" }, "downloads": -1, "filename": "collective.pdfpeek-0.8.tar.gz", "has_sig": false, "md5_digest": "92474faef5e9c9e2f52c17eb414bb719", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 271466, "upload_time": "2009-10-14T05:01:05", "url": "https://files.pythonhosted.org/packages/2c/64/cee989bd2881acb82da516cbe3d9be5b22e7499875e2ae5076b426c8e816/collective.pdfpeek-0.8.tar.gz" } ], "0.9": [ { "comment_text": "", "digests": { "md5": "3620152712e09c8a57b2a14a601e652c", "sha256": "e1e12905645b99d33c094198859ce7472a7b08d0cdb32b6d23b8d85ba3ad2436" }, "downloads": -1, "filename": "collective.pdfpeek-0.9.tar.gz", "has_sig": false, "md5_digest": "3620152712e09c8a57b2a14a601e652c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 271781, "upload_time": "2009-10-14T05:39:06", "url": "https://files.pythonhosted.org/packages/44/09/9f613a68fd1cd6ae104db982104d7ad5f5e02f070c56b62e922f52f08759/collective.pdfpeek-0.9.tar.gz" } ], "1.0": [ { "comment_text": "", "digests": { "md5": "b87699f0185190afd13cc5dca8851b8c", "sha256": "8904c9fb072dec062501d6451ec95f09c21d8f33947518e3d62956814764a74c" }, "downloads": -1, "filename": "collective.pdfpeek-1.0.tar.gz", "has_sig": false, "md5_digest": "b87699f0185190afd13cc5dca8851b8c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 11067610, "upload_time": "2010-05-27T16:41:35", "url": "https://files.pythonhosted.org/packages/de/57/bae373b7b790be76270b81171723613f108dc9969c4638b7e0584328d9e2/collective.pdfpeek-1.0.tar.gz" } ], "1.1": [ { "comment_text": "", "digests": { "md5": "5ada55e7a824176d191855aa773edf8c", "sha256": "2500a69518a5916d26cf9e3084d8f9c13ed9ba63ee6cfb7b4ecead8613540829" }, "downloads": -1, "filename": "collective.pdfpeek-1.1.tar.gz", "has_sig": false, "md5_digest": "5ada55e7a824176d191855aa773edf8c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 2902064, "upload_time": "2010-05-27T16:57:07", "url": "https://files.pythonhosted.org/packages/9b/11/60a52f5596787128e33f7db906da3a8ba80f14e007182a665318dc023c58/collective.pdfpeek-1.1.tar.gz" } ], "1.2": [ { "comment_text": "", "digests": { "md5": "4c75a3f7951472c0224983a6bad6635e", "sha256": "e4e940d1cbb7c55b90f9ae27dae5a7cb6e931fdec8c4e2e08cc2a131af17a1a7" }, "downloads": -1, "filename": "collective.pdfpeek-1.2.tar.gz", "has_sig": false, "md5_digest": "4c75a3f7951472c0224983a6bad6635e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 2900287, "upload_time": "2010-12-07T23:47:30", "url": "https://files.pythonhosted.org/packages/41/13/fbe9d4184b206f5551b6a1a88e935a7e1cbac6c5d9d3984ca3ec12fea9b2/collective.pdfpeek-1.2.tar.gz" } ], "2.0.0": [ { "comment_text": "", "digests": { "md5": "f57ad997f8a5d655e7f771edd173db26", "sha256": "3a0f87962c35065dc6a670f1d4a2566839b469b2e562627c41142fe7f8c9b097" }, "downloads": -1, "filename": "collective.pdfpeek-2.0.0.zip", "has_sig": false, "md5_digest": "f57ad997f8a5d655e7f771edd173db26", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 671485, "upload_time": "2014-12-04T14:38:32", "url": "https://files.pythonhosted.org/packages/d7/fb/2b3aa4ed6b6d0853dad7fe3e463b99006d2ea600fa7176ef5c32d1646d06/collective.pdfpeek-2.0.0.zip" } ], "2.0b1": [ { "comment_text": "", "digests": { "md5": "04a71bbb8f09c13871ad785f00d7a830", "sha256": "68350ee2f1abb1f878153587856477c0fb0da90c4351adcad9fa8d4c60ec7541" }, "downloads": -1, "filename": "collective.pdfpeek-2.0b1.zip", "has_sig": false, "md5_digest": "04a71bbb8f09c13871ad785f00d7a830", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 667796, "upload_time": "2013-10-17T07:29:55", "url": "https://files.pythonhosted.org/packages/a7/5e/6fddd26b7cc98f28d54d51138bbdb56c430ff9c3aa7b6e324dccfd970c77/collective.pdfpeek-2.0b1.zip" } ], "2.0b2": [ { "comment_text": "", "digests": { "md5": "bd4ebf8dfba62698116b7b0eb7a5cd3e", "sha256": "311e375ee286bfbb9a3596bd46731118d6416118a5697e505503c12ee438344e" }, "downloads": -1, "filename": "collective.pdfpeek-2.0b2.zip", "has_sig": false, "md5_digest": "bd4ebf8dfba62698116b7b0eb7a5cd3e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 669598, "upload_time": "2013-10-17T09:40:19", "url": "https://files.pythonhosted.org/packages/26/ca/4a24ee149d1d246fd81bf20341bca251b15d6c3009ddd8df133a1712da0f/collective.pdfpeek-2.0b2.zip" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "f57ad997f8a5d655e7f771edd173db26", "sha256": "3a0f87962c35065dc6a670f1d4a2566839b469b2e562627c41142fe7f8c9b097" }, "downloads": -1, "filename": "collective.pdfpeek-2.0.0.zip", "has_sig": false, "md5_digest": "f57ad997f8a5d655e7f771edd173db26", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 671485, "upload_time": "2014-12-04T14:38:32", "url": "https://files.pythonhosted.org/packages/d7/fb/2b3aa4ed6b6d0853dad7fe3e463b99006d2ea600fa7176ef5c32d1646d06/collective.pdfpeek-2.0.0.zip" } ] }