{ "info": { "author": "Joshua Tauberer", "author_email": "jt@occams.info", "bugtrack_url": null, "classifiers": [], "description": "# pdf-diff\n\nFinds differences between two PDF documents:\n\n1. Compares the text layers of two PDF documents and outputs the bounding boxes of changed text in JSON.\n2. Rasterizes the changed pages in the PDFs to a PNG and draws red outlines around changed text.\n\n![Example Image Output](example.png)\n\nThe script is written in Python 3, and it relies on the `pdftotext` program.\n\n## Requirements\n\n libxml2 >= 2.7.0, libxslt >= 1.1.23, poppler\n## Requirements installation for Ubuntu:\n\n sudo apt-get install python3-lxml poppler-utils\n## Requirements installation for OS X:\n\n brew install libxml2 libxslt poppler\n## Installation\n\nFrom PyPI:\n\n pip install pdf-diff\n\nFrom source:\n\n sudo python3 setup.py install\n## Running\n\nTurn two PDFs into one large PNG image showing the differences:\n\n pdf-diff before.pdf after.pdf > comparison_output.png\n\n\n", "description_content_type": "text/markdown", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/JoshData/pdf-diff", "keywords": "", "license": "CC0 1.0 Universal", "maintainer": "", "maintainer_email": "", "name": "pdf-diff", "package_url": "https://pypi.org/project/pdf-diff/", "platform": "", "project_url": "https://pypi.org/project/pdf-diff/", "project_urls": { "Homepage": "https://github.com/JoshData/pdf-diff" }, "release_url": "https://pypi.org/project/pdf-diff/0.9.1/", "requires_dist": [ "diff-match-patch-python", "lxml", "pillow" ], "requires_python": "", "summary": "Finds differences between two PDF documents", "version": "0.9.1" }, "last_serial": 5427147, "releases": { "0.9.0": [], "0.9.1": [ { "comment_text": "", "digests": { "md5": "332a7af33443036d87a763db607223b3", "sha256": "105a8d147552866da6d32860377ec84625044b43407bb59bf1f7ceb66d1f0c93" }, "downloads": -1, "filename": "pdf_diff-0.9.1-py3.5.egg", "has_sig": false, "md5_digest": "332a7af33443036d87a763db607223b3", "packagetype": "bdist_egg", "python_version": "3.5", "requires_python": null, "size": 15555, "upload_time": "2019-06-20T18:33:28", "url": "https://files.pythonhosted.org/packages/87/44/577264de99646cc14786c572b9a15827f5c4ea2d6040c04050c4850334c4/pdf_diff-0.9.1-py3.5.egg" }, { "comment_text": "", "digests": { "md5": "70a052342883854422b2479748570f38", "sha256": "ffc2bcc8a0db1cfb4a6728f3374f8e025cfcffc1e3a3ab9b1245d4964a42ddeb" }, "downloads": -1, "filename": "pdf_diff-0.9.1-py3-none-any.whl", "has_sig": false, "md5_digest": "70a052342883854422b2479748570f38", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 11563, "upload_time": "2019-06-20T18:33:26", "url": "https://files.pythonhosted.org/packages/d6/68/f212aa12ca9c9b2654b9a42957752b38374f5e61255f6fc8355bf0881b86/pdf_diff-0.9.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "d988f178c1f03c84ecb123b8440b7b50", "sha256": "6d31fe792a7fe3278e20a3a56c71c50cf895d650d4053cd02f12324137d352fe" }, "downloads": -1, "filename": "pdf-diff-0.9.1.tar.gz", "has_sig": false, "md5_digest": "d988f178c1f03c84ecb123b8440b7b50", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7991, "upload_time": "2019-06-20T18:33:29", "url": "https://files.pythonhosted.org/packages/31/e0/efcd2a80d5a2ca58265a26598e24b17f0b838ec2677bdab5232ba4e72abe/pdf-diff-0.9.1.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "332a7af33443036d87a763db607223b3", "sha256": "105a8d147552866da6d32860377ec84625044b43407bb59bf1f7ceb66d1f0c93" }, "downloads": -1, "filename": "pdf_diff-0.9.1-py3.5.egg", "has_sig": false, "md5_digest": "332a7af33443036d87a763db607223b3", "packagetype": "bdist_egg", "python_version": "3.5", "requires_python": null, "size": 15555, "upload_time": "2019-06-20T18:33:28", "url": "https://files.pythonhosted.org/packages/87/44/577264de99646cc14786c572b9a15827f5c4ea2d6040c04050c4850334c4/pdf_diff-0.9.1-py3.5.egg" }, { "comment_text": "", "digests": { "md5": "70a052342883854422b2479748570f38", "sha256": "ffc2bcc8a0db1cfb4a6728f3374f8e025cfcffc1e3a3ab9b1245d4964a42ddeb" }, "downloads": -1, "filename": "pdf_diff-0.9.1-py3-none-any.whl", "has_sig": false, "md5_digest": "70a052342883854422b2479748570f38", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 11563, "upload_time": "2019-06-20T18:33:26", "url": "https://files.pythonhosted.org/packages/d6/68/f212aa12ca9c9b2654b9a42957752b38374f5e61255f6fc8355bf0881b86/pdf_diff-0.9.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "d988f178c1f03c84ecb123b8440b7b50", "sha256": "6d31fe792a7fe3278e20a3a56c71c50cf895d650d4053cd02f12324137d352fe" }, "downloads": -1, "filename": "pdf-diff-0.9.1.tar.gz", "has_sig": false, "md5_digest": "d988f178c1f03c84ecb123b8440b7b50", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7991, "upload_time": "2019-06-20T18:33:29", "url": "https://files.pythonhosted.org/packages/31/e0/efcd2a80d5a2ca58265a26598e24b17f0b838ec2677bdab5232ba4e72abe/pdf-diff-0.9.1.tar.gz" } ] }