[{"data":1,"prerenderedAt":547},["ShallowReactive",2],{"project-39027543":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":33,"aspects":34,"strip":45,"post_text":48,"what":49,"said":87,"maker_in_thread":243,"shape":250,"grid":255,"attempts":510,"same_week":511,"maker_shows":31,"maker_hidden":539,"reader_version":540,"card":541},"39027543","Htmldocs","Typeset and generate pdfs with HTML\u002FCSS","title","Show HN: Htmldocs – Typeset and generate pdfs with HTML\u002FCSS","https:\u002F\u002Fhtmldocs.com","htmldocs.com","kelvinzhang",1705499041,2024,226,89,337,3515,10,"notable","dev_tools","pdf generation","web_app",[24,25,26,27],"html to pdf","css paged media","pdf generation api","typesetting","debated",-0.064,{"positive":18,"neutral":18,"mixed":31,"critical":32},2,12,34,{"execution":35,"docs":38,"performance":40,"idea":41,"pricing":42,"privacy":43,"design":44},{"positive":36,"critical":37},1,7,{"positive":39,"critical":31},0,{"positive":36,"critical":36},{"positive":37,"critical":31},{"positive":39,"critical":39},{"positive":39,"critical":39},{"positive":39,"critical":39},[36,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,36,36,46,39,46,46,46,47,39,39,36,46,47,47,36,36,47,36,46,46,47,36,47,31],5,3,"htmldocs is an Overleaf-style editor for typesetting documents using HTML\u002FCSS, which provides the same benefits as LaTeX while being more accessible, customizable, and familiar.\n\nI built this because I wanted to programatically generate invoices as well as automatically tailor my resume to jobs but had no good way of generating well-formatted PDFs. I ended up building a templating engine to Chromium rendering pipeline to generate PDFs, and due to the amount of engineering effort, turned it into a tool for others that might want to do the same. There's a built-in API (https:\u002F\u002Fhtmldocs.com\u002Fdocs\u002F",{"problem":50,"audience":56,"pricing":65,"motivation":71,"time_to_build":75,"stack":76,"openness":85,"stage":86,"team_size":85},{"value":51,"source":52,"evidence":53},"Generating well-formatted PDFs like invoices and resumes from HTML\u002FCSS","maker",[54],{"id":55},"post",{"value":57,"source":58,"evidence":59},"Developers and people who want HTML\u002FCSS-based PDF documents without setting up their own rendering pipeline","inferred",[60,61],{"id":55},{"id":62,"by":63,"text":64},"39030288","amcaskill","This looks awesome, congratulations. I think you’re onto something here. I work on an OSS reporting and analytics tool (https:\u002F\u002Fgithub.com\u002Fevidence-dev\u002Fevidence) and the amount…",{"value":66,"source":52,"evidence":67},"Monthly credit system, pricing shown in a modal under the user dropdown",[68],{"id":69,"by":11,"text":70},"39030472","Pricing info is in a modal under the user dropdown, it's currently based on a monthly credit system. If there's another pricing model you'd prefer, let me know!",{"value":72,"source":52,"evidence":73},"Needed programmatic invoices and tailored resume PDFs with no good formatting option",[74],{"id":55},null,[77,81],{"value":78,"source":52,"evidence":79},"Chromium rendering pipeline",[80],{"id":55},{"value":82,"source":52,"evidence":83},"JSON templating engine with API",[84],{"id":55},"unknown","launched",{"praise":88,"objections":117,"requests":154,"questions":181,"alternatives":197},[89,102],{"value":90,"source":91,"evidence":92},"Good idea, looks well implemented","commenter",[93,97,101],{"id":94,"by":95,"text":96},"39032004","shanecleveland","This looks well implemented. I will play with it some. I have a couple projects that rely on html interface to pdf output (or at least print > save to PDF reliability). I would…",{"id":98,"by":99,"text":100},"39028897","jdthedisciple","Awesome idea, been looking for something like this every now and then, esp right now. But could use some performance improvements... Maybe you tested this on your state of the…",{"id":62,"by":63,"text":64},{"value":103,"source":91,"evidence":104},"Requests for open source release",[105,109,113],{"id":106,"by":107,"text":108},"39029395","cpr","Great stuff! Yes, please open source it.",{"id":110,"by":111,"text":112},"39028408","nimalu","Please open source it!! I've looked for a solution like this multiple times. Well done!",{"id":114,"by":115,"text":116},"39030432","shafyy","Would love to see an open-source version. Also, are you thinking of making a version that one could run locally with the command line?",[118,128,135,142],{"value":119,"source":91,"evidence":120},"Chromium-based rendering lacks CSS Paged Media features compared to PrinceXML or WeasyPrint",[121,125],{"id":122,"by":123,"text":124},"39028540","chrismorgan","> htmldocs is different from other tools like Wkhtmltopdf and Weasyprint in that it uses Chromium to generate PDFs, meaning that it supports the most modern CSS features and…",{"id":126,"by":11,"text":127},"39030625","I think in the long term, HTML\u002FCSS will win out once there's better support for CSS Paged Module Level 3, and you'll be able to achieve that requirement with just ``` @page :left…",{"value":129,"source":91,"evidence":130},"Documentation is incomplete and sign-up required to try it",[131],{"id":132,"by":133,"text":134},"39030941","kayo_20211030","This might be great, and it might not. It's hard to tell as a lot of the documentation is missing, or has broken links. It would be really nice if the docs were more complete,…",{"value":136,"source":91,"evidence":137},"Google login blocked by verification for testers",[138],{"id":139,"by":140,"text":141},"39031052","amadeuspagel","Trying to login with google I get this error: > htmldocs.com has not completed the Google verification process. The app is currently being tested, and can only be accessed by…",{"value":143,"source":91,"evidence":144},"Mobile UI and performance issues reported",[145,149,150],{"id":146,"by":147,"text":148},"39037882","heads","It’s a good idea. You’ll want to support GitHub flavoured markdown as an input, if you don’t already. Be sure to allow an inline \u003Cstyle> so documents can still be customised…",{"id":98,"by":99,"text":100},{"id":151,"by":152,"text":153},"39028653","taulien","Hi @kelvinzhang, the burger menu does not work on firefox for android",[155,165,173,177],{"value":156,"source":91,"evidence":157},"Open source the project",[158,159,160,164],{"id":106,"by":107,"text":108},{"id":110,"by":111,"text":112},{"id":161,"by":162,"text":163},"39034297","QuiCasseRien","@kelvinzhang Quite frankly, htmldocs is the exact project i'm looking for months. I'm tired of word and same alternative and wanted something i can write html and css3 to convert…",{"id":114,"by":115,"text":116},{"value":166,"source":91,"evidence":167},"Offline or local rendering mode",[168,169],{"id":146,"by":147,"text":148},{"id":170,"by":171,"text":172},"39031764","matricaria","How does this compare to Typst?[1] What I like about Typst is that I can use it completely offline and with my editor of choice. Is this planned for htmldocs too? [1]…",{"value":174,"source":91,"evidence":175},"Command-line version",[176],{"id":114,"by":115,"text":116},{"value":178,"source":91,"evidence":179},"Markdown and inline style support",[180],{"id":146,"by":147,"text":148},[182,186,193],{"value":183,"source":91,"evidence":184},"How does it compare to Typst?",[185],{"id":170,"by":171,"text":172},{"value":187,"source":91,"evidence":188},"What is the pricing model?",[189],{"id":190,"by":191,"text":192},"39030414","cholmon","What is the pricing like, e.g., per-template created, per-PDF rendered, or per-API call? I don't see any pricing info on the public site.",{"value":194,"source":91,"evidence":195},"Long-term plans for the project and documents",[196],{"id":161,"by":162,"text":163},[198,208,215,226,233],{"value":199,"source":91,"evidence":200},"WeasyPrint",[201,205],{"id":202,"by":203,"text":204},"39028266","karteum","Some people might be interested in https:\u002F\u002Fweasyprint.org\u002F",{"id":206,"by":11,"text":207},"39028644","We actually ran off of WeasyPrint at first but switched to Chromium due to emojis not rendering properly, poor flexbox support, no custom fonts, and other differences between the…",{"value":209,"source":91,"evidence":210},"Typst",[211,212],{"id":170,"by":171,"text":172},{"id":213,"by":11,"text":214},"39037848","Offline isn’t a priority at the moment but can be done in the future by packaging with Electron. Typst is great but there are a few key differences: - full CSS support, allowing…",{"value":216,"source":91,"evidence":217},"PrinceXML",[218,222],{"id":219,"by":220,"text":221},"39029943","pitdicker","Prince has been doing this for 20 years and is in my opinion the gold standard, with good support for footnotes, endnotes, page headers and other little extensions that are only…",{"id":223,"by":224,"text":225},"39032305","zokier","Typesetting for print from HTML is one of those things that both keeps popping up but also never really seems to take off. Prince still remains the main player and as proprietary…",{"value":227,"source":91,"evidence":228},"Gotenberg",[229],{"id":230,"by":231,"text":232},"39033947","NanoWar","I have used Gotenberg [1] in a production environment. Dockerized in a Kubernetes Cluster. It just works! I can absolutely recommend it. Uses Chromium under the hood and was able…",{"value":234,"source":91,"evidence":235},"Pandoc",[236,240],{"id":237,"by":238,"text":239},"39029135","jppittma","Oh, is this like a paid version of pandoc?",{"id":241,"by":11,"text":242},"39029285","You can probably get away with Pandoc depending on your use-case, this is primarily built for: - having a web editor interface without needing to re-run a CLI command - people…",{"comments":18,"answered":46,"key":244},[245,246,247],{"id":126,"text":127},{"id":206,"text":207},{"id":248,"text":249},"39028779","Nice catch, I copy\u002Fpasted that from a previous project and forgot to remove - should be fixed now. TOS is pretty general and just there for legal reasons, tl;dr feel free to use…",{"commenters":251,"max_depth":252,"maker_replies":18,"first_comment_mins":253,"lifespan_hours":254},65,6,54,52,[256,258,262,266,269,271,273,275,278,281,284,288,290,293,296,298,300,303,306,308,311,314,316,318,321,323,325,326,329,331,333,335,338,341,344,348,351,356,358,359,363,366,369,372,375,378,381,384,387,388,392,395,400,403,404,409,412,415,417,419,421,422,424,427,428,432,435,439,441,444,447,450,454,458,460,463,465,467,471,474,476,480,484,488,492,494,497,501,506],[122,39,36,257,123,39],"project\u002Fcritical\u002Fexecution",[259,39,39,260,261,39],"39028849","other\u002Fneutral\u002Fexecution","tharos47",[263,39,39,264,265,39],"39031797","commenter\u002Fneutral\u002Fnone","monax",[267,39,39,264,268,39],"39033922","elmo2you",[270,39,39,264,265,39],"39035113",[272,39,39,264,268,39],"39035905",[219,36,39,274,220,39],"other\u002Fneutral\u002Fnone",[276,36,39,274,277,39],"39058410","tmcdos",[279,31,39,274,280,39],"39030136","cubefox",[282,31,39,274,283,39],"39030253","tingletech",[285,31,39,286,287,39],"39030413","other\u002Fcritical\u002Fdesign","lelanthran",[126,31,39,289,11,36],"maker\u002Fneutral\u002Fnone",[291,31,39,274,292,39],"39030993","x905",[294,31,39,274,295,39],"39030778","threatofrain",[297,31,39,274,287,39],"39038102",[299,31,39,274,280,39],"39040392",[301,31,39,274,302,39],"39031228","philistine",[304,31,39,274,305,39],"39033387","replwoacause",[307,31,39,274,302,39],"39037003",[309,31,39,274,310,39],"39037140","mgt19937",[312,31,39,274,313,39],"39037195","kaladin-jasnah",[315,31,39,274,287,39],"39038248",[317,31,39,264,280,39],"39040273",[319,31,39,274,320,39],"39034532","chrisfinazzo",[322,31,39,274,287,39],"39038124",[324,31,39,274,320,39],"39042672",[202,47,39,274,203,39],[327,47,39,274,328,39],"39028438","__jonas",[206,47,39,330,11,36],"project\u002Fneutral\u002Fexecution",[332,47,39,274,320,39],"39034704",[334,47,39,274,320,39],"39044596",[336,47,39,274,337,39],"39028852","the_jeremy",[339,47,39,274,340,39],"39028882","troyvit",[342,47,39,274,343,39],"39030022","rogue7",[345,47,39,346,347,39],"39029316","other\u002Fpositive\u002Fnone","sodimel",[349,47,39,274,350,39],"39030382","V__",[352,353,36,354,355,39],"39028603",4,"project\u002Fcritical\u002Fdocs","dsr_",[248,353,39,357,11,36],"maker\u002Fneutral\u002Fdocs",[139,46,36,257,140,39],[360,252,47,361,362,39],"39029434","project\u002Fneutral\u002Fperformance","leetrout",[364,252,39,274,365,39],"39029561","dotancohen",[367,252,46,368,362,39],"39032454","project\u002Fpositive\u002Fperformance",[370,252,39,371,365,39],"39033622","commenter\u002Fneutral\u002Fperformance",[373,37,39,274,374,39],"39032178","FootballMuse",[161,376,46,377,162,39],8,"project\u002Fpositive\u002Fidea",[379,376,39,380,11,36],"39037776","maker\u002Fneutral\u002Fidea",[382,376,46,377,383,39],"39042300","svsaraf",[170,385,47,386,171,39],9,"project\u002Fneutral\u002Fidea",[213,385,39,386,11,36],[389,18,46,390,391,39],"39029642","project\u002Fpositive\u002Fnone","tagyro",[393,18,39,264,394,39],"39030393","twobitshifter",[396,397,47,398,399,39],"39028746",11,"project\u002Fneutral\u002Fdocs","RobKohr",[401,397,39,402,11,36],"39028947","maker\u002Fpositive\u002Fdocs",[223,32,39,274,224,39],[405,406,39,407,408,39],"39031012",13,"other\u002Fneutral\u002Fdesign","nsim",[410,406,39,274,411,39],"39031798","mstijak",[413,406,39,274,414,39],"39034848","joshmarinacci",[416,406,39,346,408,39],"39036142",[132,418,36,354,133,39],14,[237,420,47,386,238,39],15,[241,420,39,386,11,36],[62,423,46,377,63,39],16,[190,425,47,426,191,39],17,"project\u002Fneutral\u002Fpricing",[69,425,39,426,11,36],[429,425,47,430,431,39],"39030829","project\u002Fmixed\u002Fpricing","ihaveajob",[146,433,47,434,147,39],18,"project\u002Fmixed\u002Fprivacy",[436,437,47,438,320,39],"39034631",19,"project\u002Fneutral\u002Fdesign",[151,440,36,257,152,39],20,[442,440,36,257,443,39],"39030289","atoav",[445,440,36,257,446,39],"39030406","gazook89",[448,440,39,449,11,36],"39030690","maker\u002Fneutral\u002Fexecution",[451,452,36,257,453,39],"39037467",21,"wombatpm",[455,456,46,377,457,39],"39038041",22,"bhavikchavda",[230,459,39,274,231,39],23,[98,461,36,462,99,39],24,"project\u002Fcritical\u002Fperformance",[464,461,39,330,11,36],"39029052",[106,466,46,377,107,39],25,[468,469,47,386,470,39],"39038278",26,"bashauma",[94,472,46,473,95,39],27,"project\u002Fpositive\u002Fexecution",[110,475,46,377,111,39],28,[477,478,39,274,479,39],"39034909",29,"criddell",[481,482,47,386,483,39],"39032419",30,"benoror",[485,486,36,257,487,39],"39030346",31,"thinkindie",[489,490,47,386,491,39],"39028647",32,"anilgulecha",[114,493,47,386,115,39],33,[495,33,39,274,496,39],"39032654","kitd",[498,499,46,377,500,39],"39028652",35,"awongh",[502,503,36,504,505,39],"39032894",36,"project\u002Fcritical\u002Fidea","Dowwie",[507,508,36,504,509,39],"39030255",37,"kevin_thibedeau",[],[512,517,522,526,530,534],{"id":513,"name":514,"points":515,"category":516},"39022693","sitinshade.com",963,"consumer_social",{"id":518,"name":519,"points":520,"category":521},"38951172","GodotOS",534,"productivity",{"id":523,"name":524,"points":525,"category":20},"38987109","#!\u002Fusr\u002Fbin\u002Fenv docker run",496,{"id":527,"name":528,"points":529,"category":20},"38971966","Marimo",448,{"id":531,"name":532,"points":533,"category":521},"38988019","Citadel",338,{"id":535,"name":536,"points":537,"category":538},"39030510","Shadeup",179,"languages",false,"v2",{"id":542,"name":5,"line":6,"ai":539,"cat":20,"year":13,"points":14,"comments":15,"rec":28,"s":543,"top":18,"kw":544,"maker":11,"domain":10,"tier":19,"attempts":39,"strip":545,"url":9,"mix":546,"praise":90,"objection":119,"sub":21},39027543,-0.06,[24,25,26,27],"1000000000000000115055530015331131553132",[18,18,31,32],1794036648338]