[{"data":1,"prerenderedAt":428},["ShallowReactive",2],{"project-15070686":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":28,"sentiment":29,"stance_mix":30,"scored_comments":34,"aspects":35,"strip":43,"post_text":46,"what":47,"said":70,"maker_in_thread":176,"shape":187,"grid":191,"attempts":391,"same_week":392,"maker_shows":33,"maker_hidden":420,"reader_version":421,"card":422},"15070686","Pdf-Bot","An API\u002FCLI for Generating PDFs Using Headless Chrome","title","Show HN: Pdf-Bot, an API\u002FCLI for Generating PDFs Using Headless Chrome","https:\u002F\u002Fgithub.com\u002Fesbenp\u002Fpdf-bot","github.com","esbenp",1503392000,2017,235,79,114,2242,6,"notable","dev_tools","pdf generation","api",[24,25,26,27],"html to pdf","headless chrome","pdf generation api","pdf cli","curious",0.089,{"positive":31,"neutral":32,"mixed":33,"critical":18},7,15,1,29,{"idea":36,"execution":38,"design":40,"docs":41,"performance":42},{"positive":33,"critical":37},0,{"positive":33,"critical":39},4,{"positive":37,"critical":33},{"positive":33,"critical":37},{"positive":37,"critical":33},[44,45,45,33,44,37,33,44,44,37,37,37,45,44,37,45,45,44,44,33,37,37,37,37,44,45,37,37,37,44,44,44,37,45,37,37,33,44,44,33],3,5,null,{"problem":48,"audience":46,"pricing":46,"motivation":46,"time_to_build":46,"stack":54,"openness":68,"stage":69,"team_size":68},{"value":49,"source":50,"evidence":51},"Generating PDFs from web pages","inferred",[52],{"id":53},"post",[55,60],{"value":56,"source":57,"evidence":58},"headless Chrome","maker",[59],{"id":53},{"value":61,"source":62,"evidence":63},"Node.js","commenter",[64],{"id":65,"by":66,"text":67},"15072678","joshribakoff","What's up with the built in queue? I feel like that belongs in a different script. For one, the built in nodeJS queue is useless in a multiple server environment. You'd still…","unknown","launched",{"praise":71,"objections":89,"requests":104,"questions":119,"alternatives":131},[72,82],{"value":73,"source":62,"evidence":74},"Headless Chrome is more stable and accurate than wkhtmltopdf",[75,78],{"id":76,"by":11,"text":77},"15071434","We actually used wkhtmltopdf before we started using pdf-bot. wkhtmltopdf development has slowed a lot, it is very unstable and you need to run a 2 year old alpha version to…",{"id":79,"by":80,"text":81},"15084472","kyriakos","wkhtmltopdf is a solid tool but its mostly abandoned now. rendering in chrome headless is way faster and more accurate. chrome headless though is lacking a lot of features that…",{"value":83,"source":62,"evidence":84},"Good documentation and architecture explanation",[85],{"id":86,"by":87,"text":88},"15071517","rmetzler","Thank you very much. I'm excited to try it out. Great documentation, I wish more people would explain their project's software architecture in the README.",[90,94],{"value":91,"source":62,"evidence":92},"Built-in queue is local to one process and won't scale across servers",[93],{"id":65,"by":66,"text":67},{"value":95,"source":62,"evidence":96},"Chrome lacks CSS paged media, headers and footers, and good page breaks",[97,100],{"id":98,"by":80,"text":99},"15084520","as far as I know wkhtmltopdf still exceeds in some aspects, better page control, margins, headers, footers and tables of contents. chrome still doesn't support them and also no…",{"id":101,"by":102,"text":103},"15071360","flashman","How well does it work with multiple-page PDFs? One of our banes is generating mixed text\u002Fimage downloadable reports with sensible page breaks. To save time, we're actually doing…",[105,112],{"value":106,"source":62,"evidence":107},"Support for CMYK color",[108],{"id":109,"by":110,"text":111},"15070799","czechdeveloper","All I need now is CMYK support in Chrome and I can make HTML based print ready PDF rendering. That would be quite upgrade compared to my current options.",{"value":113,"source":62,"evidence":114},"Table of contents with page numbers",[115],{"id":116,"by":117,"text":118},"15071236","criddell","Can it generate a table of contents with page numbers?",[120,124],{"value":121,"source":62,"evidence":122},"How well does it handle multi-page PDFs and page breaks",[123],{"id":101,"by":102,"text":103},{"value":125,"source":62,"evidence":126},"Whether it works on AWS Lambda",[127],{"id":128,"by":129,"text":130},"15071815","titel","Whould this work on AWS Lambda?",[132,143,154,165],{"value":133,"source":62,"evidence":134},"Puppeteer",[135,139],{"id":136,"by":137,"text":138},"15070910","umpox","Pretty cool! Check out Google's headless browser API Puppeteer too, they provide a few really useful functions for doing stuff like this.…",{"id":140,"by":141,"text":142},"15071032","bharani_m","Really nice work. I've had a great experience working with Headless Chrome to convert webpages to PDF for my side project EmailThis (https:\u002F\u002Fwww.emailthis.me). It uses Puppeteer…",{"value":144,"source":62,"evidence":145},"wkhtmltopdf",[146,150],{"id":147,"by":148,"text":149},"15071596","DonnyV","Just use WkhtmlToPdf https:\u002F\u002Fwkhtmltopdf.org and wrap a simple service around it.",{"id":151,"by":152,"text":153},"15071346","igitur","How does this compare to wkhtmltopdf, which, IIRC, uses WebKit to render the pdf?",{"value":155,"source":62,"evidence":156},"Prince XML",[157,161],{"id":158,"by":159,"text":160},"15077709","oxplot","Unfortunately, Chrome's kerning when it comes to printing is atrocious. Over the years, I've constantly tested it every once in a while with the hope that it would improve to no…",{"id":162,"by":163,"text":164},"15083315","cpr","PrinceXML does a solid job of it, and has for years.",{"value":166,"source":62,"evidence":167},"athenapdf",[168,172],{"id":169,"by":170,"text":171},"15073662","gbuk2013","This is interesting :-) I am currently using athenapdf[1] but I will have a play with pdf-bot. [1] https:\u002F\u002Fgithub.com\u002Farachnys\u002Fathenapdf",{"id":173,"by":174,"text":175},"15074183","MrSaints","Core developer of `athenapdf` here :) I had a quick look at `pdf-bot`, and though we both rely on the same underlying technology (we are only just moving to headless Chromium; we…",{"comments":39,"answered":33,"key":177},[178,181,184],{"id":179,"text":180},"15071126","Yeah I think Puppeteer is a very cool project. Unfortunately, it came out literally one or two days after i finished the initial version of pdf-bot. Maybe I will incorporate it…",{"id":182,"text":183},"15071121","Appreciate it. EmailThis lookes very cool! I have considered using Puppeteer for pdf-bot, it came out right after I finished it :-)",{"id":185,"text":186},"15071131","That is a cool idea! Would only require to setup a small server as webhook endpoint that creates the e-mail.",{"commenters":188,"max_depth":45,"maker_replies":39,"first_comment_mins":189,"lifespan_hours":190},51,28,223,[192,194,196,200,201,202,206,209,213,215,218,221,224,225,228,232,234,237,238,239,242,244,247,249,251,253,255,258,262,264,267,270,272,273,274,276,278,280,282,284,287,289,293,296,299,301,304,307,310,314,317,322,325,328,330,333,337,340,342,347,350,352,354,356,358,360,363,365,366,368,371,373,376,377,378,381,383,385,388],[136,37,44,193,137,37],"project\u002Fmixed\u002Fidea",[179,37,37,195,11,33],"commenter\u002Fneutral\u002Fnone",[197,37,45,198,199,37],"15073431","project\u002Fpositive\u002Fnone","rememberlenny",[140,33,45,198,141,37],[182,33,37,195,11,33],[203,33,33,204,205,37],"15072442","project\u002Fcritical\u002Fexecution","RepressedEmu",[207,33,37,208,141,37],"15072530","commenter\u002Fneutral\u002Fexecution",[210,33,44,211,212,37],"15082474","project\u002Fneutral\u002Fdesign","johnwaynedoe",[214,33,37,195,141,37],"15087281",[109,216,37,217,110,37],2,"other\u002Fneutral\u002Fnone",[219,216,37,217,220,37],"15073765","hwc",[222,216,37,217,223,37],"15075654","synthmeat",[65,44,33,204,66,37],[226,44,37,195,227,37],"15072873","chatmasta",[229,44,44,230,231,37],"15074543","project\u002Fneutral\u002Fidea","xg15",[101,39,44,233,102,37],"project\u002Fneutral\u002Fnone",[235,39,37,217,236,37],"15071383","mnsc",[162,39,37,217,163,37],[147,39,37,217,148,37],[240,39,37,195,241,37],"15072021","bshimmin",[243,39,37,195,148,37],"15141188",[245,39,37,217,246,37],"15072089","moocowtruck",[248,39,37,217,66,37],"15072650",[250,39,37,195,148,37],"15141159",[79,39,45,252,80,37],"project\u002Fpositive\u002Fexecution",[254,39,37,217,148,37],"15141176",[256,39,44,211,257,37],"15071692","j_s",[259,39,37,260,261,37],"15071817","other\u002Fneutral\u002Fdesign","lucaspiller",[263,39,37,195,257,37],"15072348",[265,45,37,217,266,37],"15071298","sdeframond",[268,45,45,198,269,37],"15071413","vegbrasil",[271,45,37,217,257,37],"15071509",[169,18,45,198,170,37],[173,18,44,230,174,37],[275,18,37,217,170,37],"15074698",[277,18,37,217,174,37],"15079640",[279,18,44,211,80,37],"15084493",[281,18,37,260,174,37],"15088363",[158,31,33,283,159,37],"project\u002Fcritical\u002Fdesign",[285,31,37,217,286,37],"15081121","sk5t",[288,31,37,217,80,37],"15084481",[290,291,37,217,292,37],"15070794",8,"vbezhenar",[294,291,37,217,295,37],"15070903","keyle",[297,291,37,217,298,37],"15070926","wibr",[300,291,37,217,241,37],"15071004",[302,291,37,217,303,37],"15073570","matthewmacleod",[305,291,37,217,306,37],"15071029","_Codemonkeyism",[308,291,37,217,309,37],"15070907","alfonsodev",[311,312,44,233,313,37],"15071504",9,"brajesh",[315,312,37,217,316,37],"15072917","dagurp",[318,319,45,320,321,37],"15070921",10,"project\u002Fpositive\u002Fidea","matallo",[323,319,37,217,324,37],"15071000","rcarmo",[326,319,37,217,327,37],"15071003","unmole",[185,319,37,329,11,33],"commenter\u002Fneutral\u002Fidea",[331,319,37,217,332,37],"15071180","pcnix",[334,335,37,217,336,37],"15071181",11,"bm98",[338,335,37,217,339,37],"15071414","Wilya",[341,335,37,217,257,37],"15071554",[343,344,44,345,346,37],"15071211",12,"project\u002Fneutral\u002Fexecution","shubhamjain",[348,344,44,345,349,37],"15071287","gima",[351,344,44,345,346,37],"15071313",[353,344,44,345,349,37],"15071502",[355,344,37,217,257,37],"15071727",[357,344,37,217,220,37],"15073807",[359,344,37,217,163,37],"15083312",[86,361,45,362,87,37],13,"maker\u002Fpositive\u002Fdocs",[151,364,44,233,152,37],14,[76,364,37,252,11,33],[367,364,37,217,241,37],"15071973",[369,364,37,217,370,37],"15073998","boundlessdreamz",[372,364,37,217,241,37],"15074368",[374,364,33,204,375,37],"15071602","shimon_e",[98,364,33,204,80,37],[116,32,44,345,117,37],[379,32,37,217,380,37],"15071293","aumerle",[382,32,44,345,220,37],"15073826",[128,384,44,345,129,37],16,[386,384,33,387,66,37],"15072742","project\u002Fcritical\u002Fperformance",[389,384,37,217,390,37],"15072887","benmanns",[],[393,398,403,408,413,417],{"id":394,"name":395,"points":396,"category":397},"15074526","Champion Traveler",395,"consumer_social",{"id":399,"name":400,"points":401,"category":402},"15041620","Product Graveyard",265,"other",{"id":404,"name":405,"points":406,"category":407},"15076727","got-book-6",143,"ai",{"id":409,"name":410,"points":411,"category":412},"15073519","YC Remix",132,"productivity",{"id":414,"name":415,"points":416,"category":20},"15043432","basic-build",100,{"id":418,"name":419,"points":15,"category":20},"15035747","Appster",false,"v2",{"id":423,"name":5,"line":6,"ai":420,"cat":20,"year":13,"points":14,"comments":15,"rec":28,"s":424,"top":18,"kw":425,"maker":11,"domain":10,"tier":19,"attempts":37,"strip":426,"url":9,"mix":427,"praise":73,"objection":91,"sub":21},15070686,0.09,[24,25,26,27],"3551301330005305533100003500033305001331",[31,32,33,18],1793990963060]