Skip to content

Haardtripathi/jsonpdfkit

Repository files navigation

JSONPDFKIT

📌 Description

JSONPDFKIT is a Node.js library that allows you to generate professional PDF reports from JSON data or API responses. It supports features like:

  • Headers & Footers
  • Tables with Auto Pagination
  • Inline & Remote Images
  • Custom Formatting & Page Numbering

📦 Installation

npm install jsonpdfkit

🚀 Usage

1️⃣ Import & Call generatePDF

const { generatePDF } = require("jsonpdfkit");

async function createPDF() {
  const jsonData = {
    header: { text: "Business Report - 2025" },
    footer: { text: "Generated by JSONPDFKIT Library" },
    company: "Acme Inc.",
    description: "Annual financial and operations report for Acme Inc.",
    images: [
      {
        url: "https://source.unsplash.com/300x200/?business",
        x: 50,
        y: 100,
        width: 200,
        height: 150,
      },
    ],
    financial_summary: [{ Year: "2024", Revenue: "$50M", Profit: "$10M" }],
  };

  const outputPath = await generatePDF(jsonData, {
    format: "a4",
    orientation: "portrait",
    fontType: "times",
    fontSize: 14,
    pageNumbering: true,
    header: {
      text: "Company Financial Report",
      align: "center",
      fontSize: 16,
      color: [0, 0, 0],
    },
    footer: {
      text: "Confidential Document",
      align: "right",
      fontSize: 10,
      color: [100, 100, 100],
    },
    images: [
      {
        path: "path/to/local/image.png",
        x: 50,
        y: 100,
        width: 200,
        height: 150,
      },
    ],
  });

  console.log("✅ PDF Created:", outputPath);
}

createPDF();

🎨 Features

  • 📄 Multi-Page PDF Support (Auto Page Breaks)
  • 📊 Tables with Data Parsing
  • 🖼 Image Embedding from URL or Local Files
  • 📌 Header & Footer Support
  • 🖋 Custom Fonts & Styling
  • 🔢 Automatic Page Numbering
  • 🎨 Custom Colors & Font Sizes

🛠 Configuration Options

Option Type Default Description
format String "a4" Page format ("a4", "letter", "legal")
orientation String "portrait" Page layout ("portrait", "landscape")
fontType String "times" Font type
fontSize Number 14 Text size in points
pageNumbering Boolean true Adds page numbers
header Object null Custom header text, alignment, font size, color
footer Object null Custom footer text, alignment, font size, color
images Array [] Embed images (URLs or local paths)

Header/Footer Object Structure:

{
  text: "Report Header", // Text for header/footer
  align: "center", // Alignment ("left", "center", "right")
  fontSize: 14, // Font size in points
  color: [0, 0, 0], // RGB color array
}

Image Object Structure:

{
  path: "path/to/image.png", // Local image path (if applicable)
  url: "https://example.com/image.jpg", // Remote image URL
  x: 50, // X-coordinate in points
  y: 100, // Y-coordinate in points
  width: 200, // Image width in points
  height: 150 // Image height in points
}

📝 License

This project is open-source and available under the MIT License.

📩 Support

For any issues, create an issue in the repository or contact the maintainer.


🚀 Happy Coding & PDF Generation!

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published