Now I'm happily running Windows 11 with WSL2.
Now I'm happily running Windows 11 with WSL2.
I asked Claude to create me something to do this. It worked first go.
import json from reportlab.lib.pagesizes import letter from reportlab.platypus import SimpleDocTemplate, Table, TableStyle, Paragraph from reportlab.lib.styles import getSampleStyleSheet from reportlab.lib import colors
def create_pdf_from_json(json_file, pdf_file): # Read JSON data with open(json_file, 'r') as file: data = json.load(file)
# Create PDF document
doc = SimpleDocTemplate(pdf_file, pagesize=letter)
elements = []
# Add title
styles = getSampleStyleSheet()
elements.append(Paragraph("JSON Data Report", styles['Title']))
elements.append(Paragraph("\n", styles['Normal']))
# Create table data
table_data = [["Key", "Value"]]
for key, value in data.items():
table_data.append([str(key), str(value)])
# Create table
table = Table(table_data, colWidths=[200, 300])
table.setStyle(TableStyle([
('BACKGROUND', (0, 0), (-1, 0), colors.grey),
('TEXTCOLOR', (0, 0), (-1, 0), colors.whitesmoke),
('ALIGN', (0, 0), (-1, -1), 'CENTER'),
('FONTNAME', (0, 0), (-1, 0), 'Helvetica-Bold'),
('FONTSIZE', (0, 0), (-1, 0), 14),
('BOTTOMPADDING', (0, 0), (-1, 0), 12),
('BACKGROUND', (0, 1), (-1, -1), colors.beige),
('TEXTCOLOR', (0, 1), (-1, -1), colors.black),
('ALIGN', (0, 0), (-1, -1), 'CENTER'),
('FONTNAME', (0, 1), (-1, -1), 'Helvetica'),
('FONTSIZE', (0, 1), (-1, -1), 12),
('TOPPADDING', (0, 1), (-1, -1), 6),
('BOTTOMPADDING', (0, 1), (-1, -1), 6),
('GRID', (0, 0), (-1, -1), 1, colors.black)
]))
elements.append(table)
# Build PDF
doc.build(elements)
if __name__ == "__main__":
create_pdf_from_json("input.json", "output.pdf")Where it gets tricky is handling more complex data structures: deeply nested objects and arrays, different date formats, varying element types and adapting the layout based on the structure. SnazzyPDF's layout engine automates those decisions. The configuration options are still limited but that's what I'm focusing on improving next.
I could see some devs opting to use an open source software version and electing to host with your cloud hosting when devs do not want to bother keeping it securely hosted.
Small market though. Better to create a bunch of freemium sites to help normies do things with pdfs like convert them to docx or other image types… normies pay a fee to do a bunch of them, a big one, or to unlock a password protected one…
Open sourcing the project is not something that I have decided against. Maybe it could drive more adoption. I've found Chrome to be the best tool for PDF creation in this use case, so the API is actually running a pool of Chrome instances that are used for the rendering. This makes self-hosting slightly more complicated.
Though I worry about the narrowness and "whip-up-ability" for the price and target market. It's a small enough featureset in a domain that skews technical, many would be inclined to template an HTML table to wkhtml2pdf and call it a day. Maybe they'd open source it after. I suppose you're aiming for the people who wouldn't do that, but would still expend the effort of integrating with an external HTTP API (and paying monthly for it)
I know a measure of a project's usefulness is "if a HN commenter says they could make it in a weekend but haven't, you've got something!", so maybe I'm wrong.
P.s. 50 pages / 1Mb per PDF is ludicrously far too small for a business tier.
Regarding the page/file size limits, that's helpful input. I have set the current limits based on my own experience but haven't had much opportunity to validate them yet. I’ll definitely take another look and try to find a good balance.
The worlds a great and diverse place though- there must be people who like genuinely Windows over Mac or Linux. Any chance one of them is reading this and wants to share what they love about Windows?
I don't like Mac keyboard layout, keyboard shortcuts or window management. I like the hardware but I cannot get over this stuff.
Windows gives me WSL2 so I can basically use Linux with Windows user interface. I've heard a lot of complaints about Windows user experience but personally I like it way more than Mac. It has it's issues but I can live with those. So Windows it is.