Skip to main content
Learn how to upload reusable backgrounds and apply them to your print jobs automatically. Perfect for letterheads, logos, and consistent branding.

What are Backgrounds?

Backgrounds are PDF designs that Intelliprint applies behind your letter content. Think of them as templates or letterheads that get combined with your content during printing. Common uses:
  • Company letterheads
  • Logos and branding
  • Decorative borders
  • Footer information (contact details, registration numbers)

How Backgrounds Work

You upload a background PDF once, then reference it by ID in your print jobs. Intelliprint overlays your content on top of the background during printing.

Step 1: Create a Background

First, upload your background design:
import Intelliprint from 'intelliprint';
import fs from 'fs';

const ip = Intelliprint('your-api-key-here');

const background = await ip.backgrounds.create({
  name: 'Company Letterhead',
  file: fs.createReadStream('./letterhead.pdf')
});

console.log('✓ Background created');
console.log('ID:', background.id);
console.log('Preview:', background.pdf);
Background uploaded! Save the ID (e.g., bg_abc123) - you’ll use it in your print jobs.

Step 2: Apply to First Page Only

Use the background on just the first page (typical for letterheads):
const printJob = await ip.prints.create({
  testmode: true,
  content: '<h1>Important Notice</h1><p>...</p>',
  recipients: [{address: {/* ... */}}],
  
  // Apply background to first page only
  background: {
    first_page: 'bg_abc123'  // Your background ID
  },
  
  confirmed: true
});

Step 3: Apply to All Pages

Use different backgrounds for first page and continuation pages:
const printJob = await ip.prints.create({
  testmode: true,
  content: '<h1>Long Document</h1><p>Multiple pages...</p>',
  recipients: [{address: {/* ... */}}],
  
  background: {
    first_page: 'bg_letterhead',      // Letterhead on page 1
    other_pages: 'bg_continuation'    // Logo on pages 2+
  },
  
  confirmed: true
});

Design Guidelines

  • Size: A4 (210mm x 297mm)
  • Safe area: Keep important content 15mm from edges
  • Address area: Leave top-left clear if using dynamic addresses (100mm x 50mm from top-left corner)
  • Header: Top 40mm typically used for logos/letterhead
  • Footer: Bottom 30mm for contact details, registration info
  • Centre: Keep clear for your letter content
  • Use PDF format (preferred)
  • 300 DPI for images
  • Embed all fonts
  • Use CMYK colour mode for print accuracy
  • Light backgrounds work best (won’t interfere with content)
  • Avoid large solid blocks of colour (expensive and can smudge)
  • Test readability by printing a sample

Managing Backgrounds

List All Backgrounds

const backgrounds = await ip.backgrounds.list({
  limit: 10,
  sort_order: 'desc'
});

backgrounds.data.forEach(bg => {
  console.log(`${bg.name} (${bg.id})`);
});

Update a Background

// Update the name
await ip.backgrounds.update('bg_abc123', {
  name: 'Updated Letterhead 2024'
});

// You cannot update the file itself - create a new background instead

Delete a Background

await ip.backgrounds.delete('bg_abc123');
Deletion restrictions: A background cannot be deleted if used by any print job in the last 90 days (required for potential reprints).

Real-World Examples

Example 1: Invoice Letterhead

// Create letterhead background
const letterhead = await ip.backgrounds.create({
  name: 'Invoice Letterhead',
  file: fs.createReadStream('./invoice-header.pdf')
});

// Send invoices with letterhead
async function sendInvoice(invoiceData) {
  return await ip.prints.create({
    testmode: false,
    content: generateInvoiceHTML(invoiceData),
    recipients: [{address: invoiceData.customer_address}],
    background: {
      first_page: letterhead.id
    },
    reference: `Invoice ${invoiceData.number}`,
    confirmed: true
  });
}

Example 2: Multi-page Report with Branding

// Create backgrounds
const header = await ip.backgrounds.create({
  name: 'Report Header',
  file: fs.createReadStream('./report-header.pdf')
});

const footer = await ip.backgrounds.create({
  name: 'Report Footer',
  file: fs.createReadStream('./report-footer.pdf')
});

// Send report
const printJob = await ip.prints.create({
  testmode: true,
  file: fs.createReadStream('./annual-report.pdf'),
  recipients: [{address: {/* ... */}}],
  background: {
    first_page: header.id,
    other_pages: footer.id
  },
  confirmed: true
});

Example 3: Marketing Campaign with Branding

const branding = await ip.backgrounds.create({
  name: 'Campaign Branding',
  file: fs.createReadStream('./campaign-background.pdf')
});

// Use with mailing list
const printJob = await ip.prints.create({
  testmode: true,
  content: `
    <h1>Exclusive Offer</h1>
    <p>Dear {first_name},</p>
    <p>We have a special offer just for you...</p>
  `,
  mailing_list: 'mal_campaign2024',
  background: {
    first_page: branding.id,
    other_pages: branding.id  // Same on all pages
  },
  confirmed: true
});

Backgrounds with Extra Documents

You can apply backgrounds to extra documents too:
const printJob = await ip.prints.create({
  testmode: true,
  content: '<h1>Main Letter</h1>',
  recipients: [{address: {/* ... */}}],
  
  background: {
    first_page: 'bg_letterhead',
    other_pages: 'bg_continuation'
  },
  
  // Extra documents can use backgrounds too
  extra_documents: [{
    document: fs.createReadStream('./terms.pdf'),
    apply_background: true  // Uses 'other_pages' background
  }],
  
  confirmed: true
});
When apply_background: true, the other_pages background is applied to the extra document pages.

Best Practices

Always send a test print with your background applied to verify it looks correct before sending to customers.
Create a library of backgrounds for different use cases (invoices, marketing, reports) and reuse them consistently.
Large background files slow down processing. Optimise PDFs by:
  • Compressing images
  • Removing unnecessary elements
  • Flattening layers
Heavy ink coverage increases costs. Light backgrounds with minimal colour are more economical.

Next Steps