{"id":40717551,"url":"https://github.com/cantabular/pdf2msgpack","last_synced_at":"2026-01-21T13:30:59.290Z","repository":{"id":50533356,"uuid":"56055323","full_name":"cantabular/pdf2msgpack","owner":"cantabular","description":"Efficiently export PDF content in an easily machine readable format","archived":false,"fork":false,"pushed_at":"2025-09-19T12:05:40.000Z","size":1648,"stargazers_count":11,"open_issues_count":10,"forks_count":1,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-09-20T10:01:59.557Z","etag":null,"topics":["msgpack","pdf","poppler"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/cantabular.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.seccomp","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2016-04-12T10:59:52.000Z","updated_at":"2025-09-15T18:19:43.000Z","dependencies_parsed_at":"2023-11-10T12:47:43.273Z","dependency_job_id":"895e3c7b-e2a2-4d2c-b37b-704110edff01","html_url":"https://github.com/cantabular/pdf2msgpack","commit_stats":{"total_commits":312,"total_committers":7,"mean_commits":44.57142857142857,"dds":0.5448717948717949,"last_synced_commit":"c0026723ac23fd43a00c130c21cc7fc33a6f9aa2"},"previous_names":["scraperwiki/pdf2msgpack","cantabular/pdf2msgpack","sensiblecodeio/pdf2msgpack"],"tags_count":29,"template":false,"template_full_name":null,"purl":"pkg:github/cantabular/pdf2msgpack","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cantabular%2Fpdf2msgpack","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cantabular%2Fpdf2msgpack/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cantabular%2Fpdf2msgpack/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cantabular%2Fpdf2msgpack/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/cantabular","download_url":"https://codeload.github.com/cantabular/pdf2msgpack/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cantabular%2Fpdf2msgpack/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28633760,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-21T04:47:28.174Z","status":"ssl_error","status_checked_at":"2026-01-21T04:47:22.943Z","response_time":86,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["msgpack","pdf","poppler"],"created_at":"2026-01-21T13:30:59.179Z","updated_at":"2026-01-21T13:30:59.270Z","avatar_url":"https://github.com/cantabular.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# About\n\n`pdf2msgpack` is designed to efficiently dump information from a PDF in a portable format which is easy to consume without heavyweight PDF libraries.\n\nAt the moment it dumps glyphs (a rectangle and text) and path information.\n\n# `pdf2msgpack` is Alpha Software\n\n`pdf2msgpack` is used internally at The Sensible Code company. It's still quite young and the output might change significantly.\n\n# Installation\n\nTo configure and build, run:\n\n```\n./waf configure\n./waf build\n```\n\nThere is an accompanying docker file which enables building a static binary.\n\nTo build the static binary, just ensure submodules are checked out and\ninvoke `make`.\n\n```\ngit submodule update --init\nmake\n```\n\n# Running\n\n```\n./pdf2msgpack \u003cpdf-file\u003e\n```\n\n# Output\n\n`pdf2msgpack` writes its output to [msgpack](http://msgpack.org), which is a convenient, fast serialization format with libraries available in many languages.\n\nHere is a description of the wire format.\n\nAt the top level the document is not a list but consecutive objects written to\nthe stream.\n\n```\ndocument (consecutive objects): \u003cwire version : int\u003e \u003cmetadata\u003e \u003cpage\u003e...\n\nmetadata (dict): {\n  \"Pages\": int,\n  \"FileName\": str,\n  \"XFA\": dict,\n  \"EmbeddedFiles\": [\u003cembedfile\u003e...],\n  \"FontInfo\": [\u003cfontinfo : dict\u003e...],\n  (other string fields supplied in PDF),\n}\n\npage (dict): {\n  \"Size\": [\u003cwidth : int\u003e, \u003cheight : int\u003e],\n  \"Glyphs\": [\u003cglyph\u003e...],\n  \"Paths\": [\u003cpathitem\u003e...],\n  \"Bitmap\": [ [\u003cwidth : int\u003e, \u003cheight : int\u003e], \u003cpixeldata : uint8\u003e ]\n}\n\nembedfile (list):\n  [ \u003cname : str\u003e, \u003cdescription : str\u003e, \u003cmime-type : str\u003e,\n    \u003ccreated-date : str\u003e, \u003cmodified-date : str\u003e, \u003ccontent : bin\u003e]\n\npathitem (list): [\u003ctype : (EO_FILL|STROKE|FILL|SET_STROKE_COLOR|\n                           SET_STROKE_WIDTH|SET_FILL_COLOR)\u003e,\n                  [\u003cpathdata\u003e...]]\n\npathdata (list): depending on pathitem type\n  EO_FILL, FILL, STROKE: pathcoord\n  SET_FILL_COLOR: [\u003cr : uint8\u003e, \u003cg : uint8\u003e, \u003cb : uint8\u003e]\n  SET_STROKE_WIDTH: \u003cwidth : float\u003e\n\npathcoord (2 list or 6 list):\n  point: [\u003cx : float\u003e, \u003cy : float\u003e]\n  quadratic curve: [\u003ca : float\u003e, \u003cb : float\u003e, \u003cc : float\u003e, \u003cd : float\u003e, \u003ce : float\u003e, \u003cf : float\u003e]\n\nfontinfo (dict): {\u003cName\u003e \u003cType\u003e \u003cEncoding\u003e \u003cEmbedded\u003e \u003cSubset\u003e \u003cToUnicode\u003e}\n```\n\n# Options\n\nSome of the options affect the wire format generated by the command.\n\n* `--meta-only`: changes `document` to skip generation of `page` objects.\n* `--bitmap`: generate grayscale bitmap in `page` object (otherwise absent)\n* `--xfa`: generate XML Forms Architecture (XFA) data in `metadata` object (otherwise nil)\n* `--embedded-files`: generate embedded files in `metadata` object (otherwise nil)\n\n# Licence\n\n`pdf2msgpack` is licensed under the GPLv2.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcantabular%2Fpdf2msgpack","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcantabular%2Fpdf2msgpack","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcantabular%2Fpdf2msgpack/lists"}