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
PDF 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.


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
PDF 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