Export
PinePaper supports multiple export formats for different use cases.
Format Comparison
| Format | Animation | Quality | Best For |
|---|---|---|---|
| MP4 | Full | Excellent | Social media (Instagram, TikTok) |
| GIF | Full | Good | Messaging (Discord, Slack, Twitter) |
| WebM | Full | Excellent | Web embedding, archival |
| SVG | Limited | Vector (scalable) | Web, scalable graphics |
| None | 300 DPI | Professional printing | |
| PNG | None | Up to 600 DPI | Static images, print |
PDF Export
Export your canvas as a print-ready PDF with professional features like bleed and trim marks.
Basic Usage
// Simple PDF export
await app.exportPDF();
// With options
await app.exportPDF({
dpi: 300, // 300 (default) or 600
includeBleed: true, // Add bleed area
bleed: 3, // Bleed in mm (default: 3)
trimMarks: true, // Add crop marks
filename: 'my-design.pdf' // Custom filename
});
Convenience Method
// Quick export at 300 DPI with default settings
await app.exportPrintPDF();
PDF Export Options
| Option | Type | Default | Description |
|---|---|---|---|
dpi |
number | 300 | Resolution (300 or 600) |
includeBleed |
boolean | false | Add bleed area around design |
bleed |
number | 3 | Bleed size in millimeters |
trimMarks |
boolean | false | Add crop/trim marks |
filename |
string | ‘pinepaper-export.pdf’ | Output filename |
download |
boolean | true | Auto-download the file |
Understanding Bleed and Trim Marks
Bleed is extra image area beyond the trim edge. Print shops need this because cutting isn’t perfectly precise.
Trim marks are corner lines showing where to cut. Enable these when sending to commercial printers.
// Professional print export with bleed and trim marks
await app.exportPDF({
includeBleed: true,
bleed: 3, // Standard 3mm bleed
trimMarks: true
});
High-DPI PNG Export
Export static images at print-quality resolution.
Basic Usage
// Default PNG export
await app.exportPNG();
// With DPI setting
await app.exportPNG({ dpi: 300 }); // Print quality
await app.exportPNG({ dpi: 600 }); // Ultra high resolution
Convenience Method
// Quick print-quality PNG
await app.exportPrintPNG(300);
// Ultra high resolution
await app.exportPrintPNG(600);
PNG Export Options
| Option | Type | Default | Description |
|---|---|---|---|
dpi |
number | 72 | Resolution (72, 150, 300, or 600) |
filename |
string | ‘pinepaper-export.png’ | Output filename |
download |
boolean | true | Auto-download the file |
DPI Guidelines
| DPI | Use Case | A4 Output Size |
|---|---|---|
| 72 | Screen/web only | 595 × 842 px |
| 150 | Draft prints, proofing | 1240 × 1754 px |
| 300 | Standard commercial print | 2480 × 3508 px |
| 600 | Ultra-high quality, large format | 4960 × 7016 px |
Browser Memory Limits
High-resolution exports may hit browser limits:
| Browser | Max Canvas Size | Total Pixels |
|---|---|---|
| Chrome/Brave/Edge | ~16,384 × 16,384 px | ~268M |
| Safari (macOS) | ~8,192 × 8,192 px safe | ~67M |
| Safari (iOS) | ~4,096 × 4,096 px | ~16.7M |
| Firefox | ~16,384 × 16,384 px | ~268M+ |
Safari iOS has the strictest limits. Desktop browsers handle larger canvases.
Need server-side export? If you’re hitting browser limits or need guaranteed high-quality exports regardless of device, vote for the Cloud Export API feature on UserJot to help us prioritize backend export services.
Print Presets
PinePaper includes canvas presets optimized for print at 300 DPI.
Setting Canvas for Print
// Set canvas to A4 portrait
app.setCanvasSize('a4-portrait');
// Set canvas to US Letter
app.setCanvasSize('letter-portrait');
// Custom size at print resolution
app.setCanvasSize({ width: 2480, height: 3508 }); // A4 at 300 DPI
Available Print Presets
| Preset ID | Dimensions (px) | Physical Size |
|---|---|---|
a3-portrait |
3508 × 4961 | 297 × 420mm |
a3-landscape |
4961 × 3508 | 420 × 297mm |
a4-portrait |
2480 × 3508 | 210 × 297mm |
a4-landscape |
3508 × 2480 | 297 × 210mm |
a5-portrait |
1748 × 2480 | 148 × 210mm |
a5-landscape |
2480 × 1748 | 210 × 148mm |
letter-portrait |
2550 × 3300 | 8.5 × 11" |
letter-landscape |
3300 × 2550 | 11 × 8.5" |
legal-portrait |
2550 × 4200 | 8.5 × 14" |
tabloid |
3300 × 5100 | 11 × 17" |
Animated SVG Export
Export your canvas as an SVG with native CSS animations.
const svgString = app.exportAnimatedSVG();
Supported Animations in SVG
| Animation | SVG Support |
|---|---|
| pulse | Yes (scale transform) |
| rotate | Yes (rotate transform) |
| bounce | Yes (translate transform) |
| fade | Yes (opacity animate) |
| wobble | Yes (rotate transform) |
| slide | Yes (translate transform) |
| typewriter | No (too complex) |
Limitations
- Keyframe animations with complex easing may not match preview exactly
- Pattern rotation is not supported in SVG export
- Consider video recording for complex animations
Video Recording
Record your canvas as a WebM video using the MediaRecorder API.
// Start recording
app.startRecording();
// ... let animations play ...
// Stop recording (downloads automatically)
app.stopRecording();
Notes
- Video is saved as WebM format
- Records whatever is happening on the canvas in real-time
- Best for complex animations that don’t export well to SVG
MP4 Export
Export as H.264 MP4 video for social media platforms.
await app.exportMP4({
duration: 5, // Duration in seconds
fps: 30 // Frame rate (24, 30, or 60)
});
Browser Support
- Chrome 94+
- Edge
- Safari 16.4+
GIF Export
Export as animated GIF for messaging platforms.
await app.exportGIF({
quality: 'high' // 'low', 'medium', or 'high'
});
Browser Support Summary
| Export Type | Chrome | Firefox | Safari | Edge |
|---|---|---|---|---|
| Yes | Yes | Yes | Yes | |
| PNG (High-DPI) | Yes | Yes | Yes | Yes |
| SVG | Yes | Yes | Yes | Yes |
| WebM | Yes | Yes | Limited | Yes |
| MP4 | 94+ | No | 16.4+ | Yes |
| GIF | Yes | Yes | Yes | Yes |