[{"data":1,"prerenderedAt":283},["ShallowReactive",2],{"project-10452048":3},{"id":4,"name":5,"line":6,"line_source":7,"title":8,"url":9,"domain":10,"maker":11,"posted_at":12,"year":13,"points":14,"comments":15,"rank_in_year":16,"shown_in_year":17,"top":18,"tier":19,"category":20,"subcategory":21,"format":22,"keywords":23,"reception":29,"sentiment":30,"stance_mix":31,"scored_comments":35,"aspects":36,"strip":41,"post_text":43,"what":44,"said":65,"maker_in_thread":154,"shape":164,"grid":169,"attempts":245,"same_week":246,"maker_shows":34,"maker_hidden":276,"reader_version":277,"card":278},"10452048","PDFx","Extract Metadata and URLs from PDFs, and Download Referenced PDFs","title","Show HN: PDFx – Extract Metadata and URLs from PDFs, and Download Referenced PDFs","http:\u002F\u002Fwww.metachris.com\u002Fpdfx\u002F","metachris.com","metachris",1445873255,2015,93,35,273,2565,11,"notable","dev_tools","pdf command line tool","cli",[24,25,26,27,28],"pdf metadata extraction","pdf url extraction","pdf downloader","doi","python pdf tools","mixed",-0.2,{"positive":32,"neutral":33,"mixed":32,"critical":34},1,4,3,9,{"idea":37,"execution":39},{"positive":38,"critical":32},0,{"positive":32,"critical":40},2,[32,38,38,38,38,38,38,38,42,38,38,38,38,38,38,38,34,38,38,32,38,38,34,34,38,38,34,38,38,38,34,38,32,38,38],5,null,{"problem":45,"audience":43,"pricing":43,"motivation":43,"time_to_build":43,"stack":51,"openness":62,"stage":63,"team_size":64},{"value":46,"source":47,"evidence":48},"Extracting metadata and referenced URLs from PDFs, and downloading referenced PDFs","maker",[49],{"id":50},"post",[52],{"value":53,"source":47,"evidence":54},"Python",[55,59],{"id":56,"by":57,"text":58},"10452832","rossmounce","Most PDF scientific articles sadly don't have good embedded metadata [0], so this & the DOI issue make this not very useful (at least for the journals I read). I also would have…",{"id":60,"by":11,"text":61},"10453310","pdfx will output json if you use the -j flag! ``` pdfx -j \u003Cfile-or-url.pdf> ``` jq looks neat btw.","open_source","launched","unknown",{"praise":66,"objections":76,"requests":95,"questions":121,"alternatives":129},[67],{"value":68,"source":69,"evidence":70},"Useful tool and neat to have a Python implementation","commenter",[71,72],{"id":56,"by":57,"text":58},{"id":73,"by":74,"text":75},"10453165","adelevie","This is really neat! For work, I've found myself from time to time exploring the tech around PDFs. I find this tech strangely fascinating. It's like a shim on top of something…",[77,81,88],{"value":78,"source":69,"evidence":79},"Most scientific PDFs lack good embedded metadata, so the tool is less useful",[80],{"id":56,"by":57,"text":58},{"value":82,"source":69,"evidence":83},"Does not handle DOI links, only direct PDF links",[84],{"id":85,"by":86,"text":87},"10452443","aroch","While nice, it really only works with the reference has a direct link to the PDF while the majority of citations use the DOI in the sciences. DOI traversal would be required",{"value":89,"source":69,"evidence":90},"Fails on some PDFs with a traceback",[91],{"id":92,"by":93,"text":94},"10454142","fit2rule","Nice work Chris .. doesn't work on all my PDF's, though: ``` j@w1x8-dev:~\u002FDocuments\u002FPDF Documents {} $ pdfx xhyve\\ –\\ Lightweight\\ Virtualization\\ on\\ OS\\ X\\ Based\\ on\\ bhyve\\ _\\…",[96,104,108,115],{"value":97,"source":69,"evidence":98},"Support DOI traversal to find PDFs",[99,100],{"id":85,"by":86,"text":87},{"id":101,"by":102,"text":103},"10452548","IanCal","DOIs are great for humans, unfortunately they'll take you to the publishers webpage and I don't know of a standard way of getting an actual PDF from a DOI. Maybe with PLOS, I…",{"value":105,"source":69,"evidence":106},"JSON output from the CLI",[107],{"id":73,"by":74,"text":75},{"value":109,"source":69,"evidence":110},"Google Scholar integration",[111],{"id":112,"by":113,"text":114},"10452805","NeatoJn","Maybe consider a Google Scholar integration? Its search results include links to full-text pdf at times. Even not, extracted links to publisher websites could be helpful for a…",{"value":116,"source":47,"evidence":117},"Kivy-based cross-platform GUI",[118],{"id":119,"by":11,"text":120},"10452461","Glad if this tool\u002Flib is useful to some. I'm happy to answer any and all questions! A Kivy [1] based cross-platform GUI would be a nice addition at some point. [1] http:\u002F\u002Fkivy.org",[122],{"value":123,"source":69,"evidence":124},"How does it handle XFA forms?",[125],{"id":126,"by":127,"text":128},"10453768","prolepunk","How does this tool handle XFA forms? Or I should ask how does any tool besides Adobe LiveCycle designer handles XFA. I've been using Apache Tika with Apache Solr to index PDF…",[130,134,138,143,147],{"value":131,"source":69,"evidence":132},"exiftool and pdftotext",[133],{"id":56,"by":57,"text":58},{"value":135,"source":69,"evidence":136},"Apache Tika with Solr",[137],{"id":126,"by":127,"text":128},{"value":139,"source":69,"evidence":140},"pdftk",[141,142],{"id":73,"by":74,"text":75},{"id":126,"by":127,"text":128},{"value":144,"source":69,"evidence":145},"pdf_scraper",[146],{"id":92,"by":93,"text":94},{"value":148,"source":69,"evidence":149},"Crossref API",[150],{"id":151,"by":152,"text":153},"10452727","afandian","The standard way for getting the actual PDF from a DOI, when it's a Crossref DOI (which it probably is) is to use the full-text link, available in the CrossRef API. For DOI…",{"comments":155,"answered":40,"key":156},7,[157,160,161],{"id":158,"text":159},"10454828","Thanks, interesting read.",{"id":60,"text":61},{"id":162,"text":163},"10454483","Thanks for the stack trace. Yes please, sample PDFs with problems would be great! You can find my email in my profile.",{"commenters":165,"max_depth":166,"maker_replies":155,"first_comment_mins":167,"lifespan_hours":168},16,6,62,65,[170,172,175,177,179,182,184,187,189,191,193,195,199,202,205,207,209,211,212,214,216,218,220,221,222,224,226,228,230,232,233,234,236,239,241],[56,38,32,171,57,38],"project\u002Fcritical\u002Fidea",[173,38,38,174,152,38],"10452859","commenter\u002Fneutral\u002Fnone",[176,38,38,174,57,38],"10452957",[178,38,38,174,152,38],"10453782",[180,38,38,174,181,38],"10455679","gcr",[183,38,38,174,152,38],"10455765",[185,32,38,174,186,38],"10453621","chriswarbo",[158,32,38,188,11,32],"maker\u002Fneutral\u002Fnone",[73,40,42,190,74,38],"project\u002Fpositive\u002Fexecution",[60,40,38,192,11,32],"project\u002Fneutral\u002Fexecution",[194,40,38,174,74,38],"10453428",[196,40,38,197,198,38],"10454041","other\u002Fneutral\u002Fnone","PaulHoule",[200,34,38,197,201,38],"10453917","retSava",[203,34,38,197,204,38],"10454789","lcswi",[206,34,38,197,201,38],"10454833",[208,34,38,174,204,38],"10461580",[92,33,34,210,93,38],"project\u002Fmixed\u002Fexecution",[162,33,38,188,11,32],[213,33,38,174,93,38],"10458933",[85,42,32,215,86,38],"project\u002Fcritical\u002Fexecution",[217,42,38,188,11,32],"10452471",[219,42,38,174,86,38],"10452513",[101,42,34,192,102,38],[151,42,34,188,152,38],[223,42,38,174,102,38],"10453394",[225,42,38,174,152,38],"10453649",[112,42,34,227,113,38],"project\u002Fneutral\u002Fidea",[229,42,38,174,152,38],"10452846",[231,42,38,174,86,38],"10453110",[119,166,38,188,11,32],[126,166,34,192,127,38],[235,166,38,188,11,32],"10454490",[237,155,32,215,238,38],"10465168","afenc",[240,155,38,188,11,32],"10469745",[242,243,38,197,244,38],"10454525",8,"based2",[],[247,252,257,261,266,271],{"id":248,"name":249,"points":250,"category":251},"10445380","Freeze",160,"infrastructure",{"id":253,"name":254,"points":255,"category":256},"10453136","SVG Path Builder",95,"creative",{"id":258,"name":259,"points":260,"category":20},"10445461","Desk",94,{"id":262,"name":263,"points":264,"category":265},"10457429","NotCRUD",70,"consumer_social",{"id":267,"name":268,"points":269,"category":270},"10433615","Hibou",69,"productivity",{"id":272,"name":273,"points":274,"category":275},"10434387","great puzzles",59,"learning_science",false,"v2",{"id":279,"name":5,"line":6,"ai":276,"cat":20,"year":13,"points":14,"comments":15,"rec":29,"s":30,"top":18,"kw":280,"maker":11,"domain":10,"tier":19,"attempts":38,"strip":281,"url":9,"mix":282,"praise":68,"objection":78,"sub":21},10452048,[24,25,26,27,28],"10000000500000003001003300300030100",[32,33,32,34],1794036537042]