PDF Export
ForgeX provides robust PDF generation capabilities to create professional bid proposals directly from the application. Export complete bids with detailed cost breakdowns, scope summaries, and customizable messaging.
PDF generation happens client-side using jsPDF, ensuring fast exports without server load. All bid data is formatted and styled automatically.
Featuresโ
Complete Bid Breakdown
Export all scopes, items, and cost summaries in a professional layout
Customizable Message
Include custom introduction/cover letter for each bid
Tax & Compliance Flags
Display tax exemption status, certified payroll, insurance type
Exclusions List
Automatically include active exclusions from templates
What's Included in the Exportโ
Every PDF export contains the following sections:
Header Sectionโ
- Company branding (Precision Site Services logo)
- Bid metadata: Job name, client name, location
- Prepared by: Estimator name
- Date prepared: Creation/last updated timestamp
Bid Summaryโ
Cost rollup showing totals by module:
| Module | Description |
|---|---|
| Concrete | Total concrete items cost |
| Labor | Total labor cost (including per diem if enabled) |
| Equipment | Total equipment rental cost |
| Materials | Total materials cost |
| Subcontractor | Total subcontractor/sublet cost |
| Miscellaneous | Total misc items cost |
Financial Summary:
Subtotal: $X,XXX.XX
Overhead (X%): $X,XXX.XX
Profit (X%): $X,XXX.XX
โโโโโโโโโโโโโโโโโโโโโโโโโ
Total: $X,XXX.XX
Scope Overviewโ
High-level table showing each scope's cost breakdown:
| Scope Name | Concrete | Labor | Equipment | Materials | Sublet | Misc | Total |
|---|---|---|---|---|---|---|---|
| Foundation | $10,000 | $5,000 | $3,000 | $2,000 | $1,500 | $500 | $22,000 |
| Driveway (5ร) | $15,000 | $7,500 | $4,000 | $2,500 | $1,000 | $0 | $30,000 |
Scope multipliers are displayed (e.g., "Driveway (5ร)") to indicate repeated areas.
Detailed Scope Breakdownโ
For each scope, the PDF includes:
Module-Level Detailsโ
Each module shows individual items with descriptions and costs:
Concrete Items:
โข 3000 PSI Slab
100 SF โข 3.70 CY โข 500 lbs rebar โข #4 @ 18"
$2,410.00
โข Foundation Walls
50 SF โข 1.85 CY โข 250 lbs rebar โข #5 @ 12"
$1,850.00
Labor Items:
โข Concrete Finisher
2.0 crew โข 8.0 hrs/day ร 5.0 days โข $38/hr
$2,052.00
โข Laborer
4.0 crew โข 8.0 hrs/day ร 5.0 days โข $28/hr
$3,584.00
Equipment Items:
โข Dozer
1.0 units โข 5.0 days โข $931/day โข Delivery $150 โข Fuel $250
$5,055.00
Material Items:
โข Rebar #4
1000.0 LB โข $0.92/LB โข Waste 5.0%
$966.00
Subcontractor Items:
โข Concrete Pumping
1.0 LS โข $2,500/LS โข Buffer 10.0%
$2,750.00
Miscellaneous Items:
โข Permits
1.0 units โข $500/unit
$500.00
Compliance & Flagsโ
The PDF displays important bid flags:
| Flag | Description |
|---|---|
| Tax Exempt | โ if bid is tax-exempt, โ otherwise |
| Per Diem Enabled | โ if per diem costs are included |
| Certified Payroll | โ if certified payroll required |
| C3 Required | โ if C3 form required |
| Drug Testing Required | โ if drug testing required |
| Insurance Type | CCIP, OCIP, RCIP, or None |
Exclusionsโ
If the bid has active exclusions, they're listed at the bottom:
Exclusions:
โข Permits and fees (owner-provided)
โข Site utilities (existing connections assumed)
โข Disposal of hazardous materials
โข Work outside of scope listed above
Only active exclusions from templates are included. Inactive exclusions are omitted.
Custom Messageโ
Optional custom message/cover letter at the top of the PDF:
"Thank you for the opportunity to bid on this project. We have reviewed the plans and specifications thoroughly. This proposal includes all labor, materials, and equipment necessary to complete the work as specified. We look forward to working with you."
Generating a PDFโ
Navigate to the bid you want to export.
Click the "Export PDF" button in the top toolbar.
The export modal displays:
- Scope selection (export all or select specific scopes)
- Custom message field
- Preview of financial summary
Enter a custom message to appear at the top of the PDF. This is useful for:
- Cover letters
- Special notes to the client
- Clarifications or assumptions
By default, all scopes are exported. Uncheck scopes to exclude them:
- Useful for partial bids or alternates
- Excluded scopes won't appear in scope overview or details
- Financial summary adjusts automatically
Click "Generate PDF".
The browser generates the PDF and prompts you to download:
- Filename:
Bid_[JobName]_[Date].pdf - Example:
Bid_Commercial_Foundation_2025-01-29.pdf
Save generated PDFs to your bid attachments for easy reference and version tracking.
Customization Optionsโ
Message Customizationโ
The custom message field supports:
- Plain text (no formatting, line breaks preserved)
- Multi-paragraph content (separate with blank lines)
- No length limit (but keep it concise for readability)
Best practices:
- Keep it professional and concise
- Use bullet points for clarity (manual formatting)
- Avoid special characters that may not render correctly
Scope Selectionโ
Use cases for selective scope export:
Bid Alternates
Export separate PDFs for base bid vs. alternate scopes.
Example:
- Base bid: Foundation + Driveway
- Alternate 1: Add Sidewalks scope
- Alternate 2: Add Retaining Wall scope
Phased Proposals
Split large projects into phases:
- Phase 1 PDF: Excavation + Foundation
- Phase 2 PDF: Slab + Parking Lot
Client Comparison
Create multiple proposals for the same project with different scope combinations for client to compare options.
Template Variables (Future)โ
Planned Feature: Future versions will support template variables like {{clientName}}, {{bidNumber}}, and {{date}} in custom messages for dynamic content.
PDF Layout & Stylingโ
Page Formatโ
- Paper size: US Letter (8.5" ร 11")
- Orientation: Portrait
- Margins: 0.5" all sides
- Font: Helvetica (sans-serif)
Typographyโ
| Element | Font Size | Style |
|---|---|---|
| Title (Job Name) | 20pt | Bold |
| Section Headers | 14pt | Bold |
| Subsection Headers | 12pt | Bold |
| Body Text | 10pt | Regular |
| Item Details | 9pt | Regular, Gray |
Color Schemeโ
- Headers: Dark blue (#1a365d)
- Body text: Black (#000000)
- Item details: Gray (#718096)
- Borders: Light gray (#e2e8f0)
Table Formattingโ
- Headers: Bold, dark background
- Rows: Alternating white/light gray for readability
- Borders: Thin gray lines
- Alignment: Numbers right-aligned, text left-aligned
API Endpointโ
Generate PDF Dataโ
The backend provides a dedicated endpoint for fetching PDF-ready data:
POST /api/bids/:bidId/pdf-data
Request Body:
{
"scopes": ["scope-id-1", "scope-id-2"], // Optional: filter scopes
"message": "Custom message text", // Optional
"overheadPercent": 10, // Optional: override
"profitPercent": 5 // Optional: override
}
Response:
{
"meta": {
"bidId": "bid-123",
"jobName": "Commercial Foundation",
"clientName": "ABC Construction",
"clientEmail": "contact@abc.com",
"location": "Austin, TX",
"preparedBy": "jmckenzie@precisionsiteservices.com",
"createdAt": "2025-01-15T10:00:00Z",
"updatedAt": "2025-01-29T14:30:00Z"
},
"flags": {
"taxExempt": false,
"perDiemEnabled": true,
"certifiedPayroll": true,
"c3Required": false,
"drugTestingRequired": true
},
"compliance": {
"insuranceType": "CCIP",
"certifiedPayroll": true,
"c3Required": false,
"drugTestingRequired": true
},
"exclusions": [
"Permits and fees (owner-provided)",
"Site utilities (existing connections assumed)"
],
"message": "Custom message text",
"modules": [
{ "key": "concrete", "label": "Concrete", "amount": 40000.00 },
{ "key": "labor", "label": "Labor", "amount": 20000.00 },
...
],
"overview": [
{
"id": "scope-1",
"name": "Foundation",
"totals": {
"concrete": 10000.00,
"labor": 5000.00,
"equipment": 3000.00,
"materials": 2000.00,
"subcontractor": 1500.00,
"misc": 500.00,
"total": 22000.00
},
"multiplier": 1,
"shape": "Slab"
}
],
"scopes": [
{
"id": "scope-1",
"name": "Foundation",
"multiplier": 1,
"shape": "Slab",
"totals": { ... },
"modules": {
"concrete": {
"key": "concrete",
"label": "Concrete",
"total": 10000.00,
"items": [
{
"description": "3000 PSI Slab",
"detail": "100 SF โข 3.70 CY โข 500 lbs rebar โข #4 @ 18\"",
"totalCost": 2410.00
}
]
},
...
}
}
],
"financial": {
"subtotal": 60000.00,
"overheadAmount": 6000.00,
"profitAmount": 3300.00,
"totalCost": 69300.00,
"overheadPercent": 10.0,
"profitPercent": 5.0
}
}
The prepareBidPdfPayload function in /services/bids/backend/src/services/pdf/bidPdfData.js handles all data transformation and formatting.
Best Practicesโ
Review Before Exporting
Always review the bid summary in-app before generating PDF to catch errors or missing data.
Use Descriptive Job Names
Job names appear prominently in the PDF. Use clear, descriptive names for professionalism.
Keep Exclusions Updated
Regularly review and update exclusion templates to ensure they're relevant to current bids.
Save PDFs as Attachments
Upload generated PDFs to bid attachments for version tracking and easy sharing.
Troubleshootingโ
Common Issuesโ
| Issue | Cause | Solution |
|---|---|---|
| Missing scopes in PDF | Scopes not linked to bid | Verify scope-bid relationships |
| Zero costs displayed | Cost rollup not triggered | Manually trigger cost rollup before export |
| Tax amounts incorrect | Tax rates outdated | Update pricing database tax rates |
| PDF won't download | Browser popup blocker | Allow popups for ForgeX domain |
| Custom message cut off | Message too long | Keep message under ~500 words |
Browser Compatibilityโ
| Browser | Support | Notes |
|---|---|---|
| Chrome | โ Full | Recommended |
| Firefox | โ Full | |
| Safari | โ Full | |
| Edge | โ Full | |
| IE 11 | โ Not supported | Use modern browser |
Future Enhancementsโ
Planned features for PDF export:
- Custom templates: Choose from multiple PDF layouts/styles
- Template variables: Dynamic content insertion (client name, bid number, etc.)
- Logo customization: Upload custom company logos
- Signature fields: Add signature blocks for client approval
- Attachment embedding: Include photos/plans in PDF
- Email integration: Send PDF directly to client from ForgeX