[{"data":1,"prerenderedAt":290},["ShallowReactive",2],{"project-37710087":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":27,"sentiment":28,"stance_mix":29,"scored_comments":32,"aspects":33,"strip":42,"post_text":45,"what":46,"said":91,"maker_in_thread":188,"shape":195,"grid":198,"attempts":252,"same_week":253,"maker_shows":31,"maker_hidden":282,"reader_version":283,"card":284},"37710087","PDF Debugger","Inspect Structure of PDF Files","title","Show HN: PDF Debugger – Inspect Structure of PDF Files","https:\u002F\u002Fpdf.hyzyla.dev\u002F","pdf.hyzyla.dev","hyzyla",1696021627,2023,157,26,386,3109,13,"notable","dev_tools","pdf inspector","web_app",[21,24,25,26],"pdf structure","pdf debugger","pdf objects","loved",0.241,{"positive":30,"neutral":30,"mixed":31,"critical":31},8,1,18,{"idea":34,"performance":37,"privacy":38,"docs":39,"execution":40},{"positive":35,"critical":36},4,0,{"positive":31,"critical":36},{"positive":36,"critical":36},{"positive":36,"critical":36},{"positive":41,"critical":31},2,[43,36,44,44,43,44,36,44,36,43,43,44,44,36,44,44,36,43,43,31,36,44,36,43,36,43],5,3,null,{"problem":47,"audience":57,"pricing":45,"motivation":65,"time_to_build":45,"stack":72,"openness":88,"stage":89,"team_size":90},{"value":48,"source":49,"evidence":50},"Hard to see the internal structure of PDF files","inferred",[51,53],{"id":52},"post",{"id":54,"by":55,"text":56},"37720387","qingcharles","I needed this last night when I was trying to edit some text in a PDF and I ended up having to use iText Rups to browse the tree. Is there a way to view the stream content in…",{"value":58,"source":49,"evidence":59},"Developers and people who troubleshoot PDFs",[60,61],{"id":54,"by":55,"text":56},{"id":62,"by":63,"text":64},"37716667","pixelgeek","So I don't know what your intended audience was but there are elements of this that would be handy for people trying to trouble check PDFs for Print on Demand projects. I'm going…",{"value":66,"source":67,"evidence":68},"Built quickly as an MVP before losing interest","maker",[69],{"id":70,"by":11,"text":71},"37742379","Thanks for sharing your story! My goal was to have MVP as fast as possible; otherwise, I could lose interest in it. It is the biggest reason why I chose to use an existing parser…",[73,82],{"value":74,"source":67,"evidence":75},"PDF.js (forked core for low-level primitives)",[76,79],{"id":77,"by":11,"text":78},"37714635","I haven't decided if I want to create an open-source version. In the first place, I made it private to worry less about my code quality and to finish the product faster before I…",{"id":80,"by":11,"text":81},"37714565","I want to be honest and open here: I did not write the PDF parser on my own. I heavily relied on the PDF.js project from Mozilla. I have a disclosure in the footer, but perhaps I…",{"value":83,"source":67,"evidence":84},"Posthog analytics",[85],{"id":86,"by":11,"text":87},"37715640","Uploaded PDF is fully processed inside a browser. I use Posthog analytics, so there are definitely requests to analytics sever","unknown","launched","solo",{"praise":92,"objections":112,"requests":127,"questions":154,"alternatives":163},[93,105],{"value":94,"source":95,"evidence":96},"Useful for inspecting PDFs, a better alternative to heavy tools","commenter",[97,98,101],{"id":54,"by":55,"text":56},{"id":99,"by":55,"text":100},"37728582","This works perfectly now on my test files. I can find the pages that have specific strings I was looking for. This has saved me clogging up my PC by installing the Java runtime…",{"id":102,"by":103,"text":104},"37748731","davedx","No, it was clear already from the webpage that it uses PDF.js. I've also used it. I just think this is a really great way of visualizing PDF's, I shared it with my team as we…",{"value":106,"source":95,"evidence":107},"Shipped quickly and works well",[108],{"id":109,"by":110,"text":111},"37735282","svat","This is great, thanks for sharing! It is also inspiring to me, because I have had the same idea and been working on something like this on-and-off since early 2022, but the…",[113,120],{"value":114,"source":95,"evidence":115},"No privacy information about uploads",[116],{"id":117,"by":118,"text":119},"37714887","Gys","An example output would have been nice. There is also nothing about privacy and stuff. What happens to the uploaded pdf? Or is it processed inside the browser? But then there…",{"value":121,"source":95,"evidence":122},"Typo and selection bug in the UI",[123],{"id":124,"by":125,"text":126},"37713761","mkl","Very neat! I spotted a typo, which led me to a bug. When I click on a \"stream contents\" node, the right panel says \"It's a actual content\" (instead of \"an\"), and there is some…",[128,132,140,147],{"value":129,"source":95,"evidence":130},"Show decoded stream content as UTF-8 text",[131],{"id":54,"by":55,"text":56},{"value":133,"source":95,"evidence":134},"Open-source the project",[135,136],{"id":109,"by":110,"text":111},{"id":137,"by":138,"text":139},"37713465","anymoonus","That's very cool! 1. Is the source available anywhere? I'm curious to see how it works. 2. Is there a way to connect the structure displayed here, to the rendered version in the…",{"value":141,"source":95,"evidence":142},"Link PDF spec references for each element",[143],{"id":144,"by":145,"text":146},"37715091","nraynaud","very cool. Do you think you could hot link the PDF spec of each element for the casual observer?",{"value":148,"source":95,"evidence":149},"Better JavaScript support in PDFs",[150],{"id":151,"by":152,"text":153},"37714899","Uptrenda","What's your aim making this here? Is it mostly just to show the sub-components of a PDF? Because if you added more support for Javascript it would fill a need (IDK how niche,…",[155,159],{"value":156,"source":95,"evidence":157},"Is the source available?",[158],{"id":137,"by":138,"text":139},{"value":160,"source":95,"evidence":161},"Does uploaded PDF leave the browser?",[162],{"id":117,"by":118,"text":119},[164,171,177,184],{"value":165,"source":95,"evidence":166},"iText RUPS",[167,168],{"id":54,"by":55,"text":56},{"id":169,"by":11,"text":170},"37731613","I took inspiration from RUPS by iText [1]. It’s maybe most popular tool for inspecting PDF files 1. https:\u002F\u002Fgithub.com\u002Fitext\u002Fi7j-rups",{"value":172,"source":95,"evidence":173},"pdfsyntax",[174],{"id":175,"by":110,"text":176},"37751187","For editing, I was able to make some simple edits (not of individual objects, but things like removing or duplicating pages, or editing crop boxes) using pdf-lib instead of…",{"value":178,"source":95,"evidence":179},"ngPDF",[180],{"id":181,"by":182,"text":183},"37713910","zauguin","Regarding 2.: Most of these objects do not directly correspond to rendered elements. Basically every page has one (typically) content stream which will contain all rendered…",{"value":185,"source":95,"evidence":186},"pdf-explorer",[187],{"id":109,"by":110,"text":111},{"comments":30,"answered":35,"key":189},[190,191,192],{"id":70,"text":71},{"id":169,"text":170},{"id":193,"text":194},"37725239","Thanks for the idea. I added this feature a few minutes ago [1]. I'm trying to convert stream content to UTF-8. Maybe later, I will add a more flexible solution to convert to…",{"commenters":18,"max_depth":44,"maker_replies":30,"first_comment_mins":196,"lifespan_hours":197},641,88,[199,201,203,205,207,208,212,213,214,216,219,221,223,226,227,229,230,232,234,238,240,242,244,246,250,251],[109,36,43,200,110,36],"project\u002Fpositive\u002Fidea",[70,36,36,202,11,31],"maker\u002Fneutral\u002Fexecution",[175,36,44,204,110,36],"project\u002Fneutral\u002Fidea",[151,31,44,206,152,36],"project\u002Fmixed\u002Fidea",[62,41,43,200,63,36],[209,44,44,210,211,36],"37722631","project\u002Fneutral\u002Fnone","phonon",[169,44,36,204,11,31],[54,35,44,204,55,36],[193,35,36,215,11,31],"maker\u002Fpositive\u002Fexecution",[217,35,43,218,55,36],"37728506","maker\u002Fpositive\u002Fnone",[99,35,43,220,55,36],"project\u002Fpositive\u002Fperformance",[117,43,44,222,118,36],"project\u002Fneutral\u002Fprivacy",[224,43,44,225,125,36],"37715114","maker\u002Fneutral\u002Fdocs",[86,43,36,222,11,31],[137,228,44,204,138,36],6,[181,228,44,204,182,36],[77,228,36,231,11,31],"project\u002Fneutral\u002Fexecution",[233,228,43,215,63,36],"37716689",[235,236,43,200,237,36],"37715550",7,"vendiddy",[124,30,31,239,125,36],"project\u002Fcritical\u002Fexecution",[241,30,36,215,11,31],"37714545",[144,243,44,225,145,36],9,[245,243,36,225,11,31],"37715604",[247,248,43,249,103,36],"37714141",10,"project\u002Fpositive\u002Fexecution",[80,248,36,202,11,31],[102,248,43,200,103,36],[],[254,259,263,268,273,277],{"id":255,"name":256,"points":257,"category":258},"37763098","Classic Video Poker",578,"games",{"id":260,"name":261,"points":262,"category":258},"37704760","overflow",400,{"id":264,"name":265,"points":266,"category":267},"37695530","Fill",360,"creative",{"id":269,"name":270,"points":271,"category":272},"37740870","OpenStatus",171,"infrastructure",{"id":274,"name":275,"points":276,"category":20},"37763822","Shuttle",167,{"id":278,"name":279,"points":280,"category":281},"37744563","pcz",154,"languages",false,"v2",{"id":285,"name":5,"line":6,"ai":282,"cat":20,"year":13,"points":14,"comments":15,"rec":27,"s":286,"top":18,"kw":287,"maker":11,"domain":10,"tier":19,"attempts":36,"strip":288,"url":9,"mix":289,"praise":94,"objection":114,"sub":21},37710087,0.24,[21,24,25,26],"50335303055330330551030505",[30,30,31,31],1794036642562]