Questpdf
DocumentsquestpdfQuestpdf is an Agent Skill for documents published in the majiayu000/claude-skill-registry repository on GitHub: a SKILL.md instruction file an AI agent can load to do this task.
QuestPDF report generation with fluent C# API. Use when generating PDF documents, designing report layouts, creating invoices/data tables, implementing page structures with headers/footers, or building reusable document components.
How to use this skill
Bring this guide into your coding agent with a prompt tailored to the tool you use.
- Open your project in Codex.
- Copy and paste the prompt below.
- Review files and risks before approving any action.
Inspect the Agent Skill at https://github.com/majiayu000/claude-skill-registry/blob/HEAD/skills/design/questpdf-keithdv-claudeskills/SKILL.md and all supporting files. Report provenance, permissions, scripts, dependencies, and security risks. Propose an exact installation into .agents/skills/questpdf, but wait for my approval before writing files or running scripts.
Copying this prompt does not install or run the skill. Review third-party files before use.
QuestPDF Report Generation
Overview
QuestPDF is a modern C# library for PDF document generation with a dedicated layout engine optimized for PDF creation. It uses a component-based, fluent API architecture where simple elements are composed into sophisticated documents.
Key Benefits
| Feature | Description |
|---|---|
| Native C# API | No HTML-to-PDF conversion - direct PDF generation |
| Component-Based | Reusable IComponent pattern for modular documents |
| Automatic Pagination | Content flows naturally across pages |
| Type-Safe | Compile-time checked document structure |
| Fluent API | Intuitive chaining syntax for layout definition |
Installation
dotnet add package QuestPDF
License: Free for individuals, non-profits, and businesses < $1M annual revenue.
Quick Start
using QuestPDF.Fluent;
using QuestPDF.Infrastructure;
using QuestPDF.Helpers;
Document.Create(container =>
{
container.Page(page =>
{
page.Size(PageSizes.A4);
page.Margin(50);
page.Header().Text("My Report").FontSize(24).Bold();
page.Content().Column(column =>
{
column.Spacing(10);
column.Item().Text("Hello, QuestPDF!");
column.Item().Text($"Generated: {DateTime.Now:g}");
});
page.Footer().AlignCenter().Text(text =>
{
text.Span("Page ");
text.CurrentPageNumber();
text.Span(" of ");
text.TotalPages();
});
});
}).GeneratePdf("report.pdf");
Common Pitfalls
| Pitfall | Solution |
|---|---|
| Constraint conflicts | Ensure parent containers provide sufficient space for width/height constraints |
| Header/Footer height | Combined header + footer must leave space for content |
| Image loading | Load images once and reuse for performance |
| Text overflow | Use .ClampLines() or ensure adequate width |
| DateTime metadata | Use DateTimeOffset.Now instead of DateTime.Now |
Additional Resources
For detailed guidance, see:
- Document Architecture - IDocument pattern, models, three-layer architecture
- Layout Components - Column, Row, Table, Inlined, Layers, Decoration
- Text & Styling - Fonts, typography, colors, DefaultTextStyle
- Tables - Table structure, headers, footers, cell spanning, styling
- Images & Media - Loading, scaling, SVG, optimization
- Page Flow - Page breaks, sections, navigation, conditional rendering
- Report Patterns - Invoices, data tables, reusable components
API Reference
For complete API documentation, see: https://www.questpdf.com/api-reference/