Skip to content

NicoletaComan/PandaDoc-GUI

Β 
Β 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

4 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Pandoc GUI - Universal Document Converter

A modern, browser-based GUI for Pandoc that runs locally with comprehensive formatting support. Convert between multiple document formats with an intuitive interface.

License Node

Features

✨ Comprehensive Format Support

  • Input Formats: Markdown, HTML, DOCX, ODT, EPUB, LaTeX, reStructuredText, Textile, Org Mode, MediaWiki, RTF, and more
  • Output Formats: All input formats plus PDF, plain text, and Pandoc JSON

🎯 Advanced Formatting Features

  • βœ… Clean Paragraph Formatting - Preserves document structure
  • βœ… Numbered and Bullet Lists - Maintains list hierarchy
  • βœ… Nested Lists & Indents - Proper indentation handling
  • βœ… Heading Structures (H1-H6) - Complete heading support
  • βœ… Table Conversion - Complex table formatting
  • βœ… Footnotes & Endnotes - Academic citation support
  • βœ… Image Processing - Embedded and linked images
  • βœ… Text Styling - Bold, italics, underline, strikethrough
  • βœ… Hyperlinks & Anchor Text - URL and internal links
  • βœ… Line Breaks & Spacing - Precise spacing control
  • βœ… Text Boxes Handling - Special content blocks
  • βœ… Inline Comments - Comment preservation
  • βœ… Batch Processing - Convert multiple files at once
  • βœ… ZIP Download - Bulk export functionality

πŸš€ Modern Interface

  • Browser-based GUI (works on all platforms)
  • Drag-and-drop file upload
  • Single file or batch processing modes
  • Real-time conversion progress
  • Responsive design for mobile and desktop

Prerequisites

1. Install Pandoc

Pandoc must be installed on your system:

macOS:

brew install pandoc

Linux (Ubuntu/Debian):

sudo apt-get install pandoc

Linux (Fedora):

sudo dnf install pandoc

Windows: Download from pandoc.org/installing.html

2. Install Node.js

Download and install Node.js (v14 or higher) from nodejs.org

Verify installation:

node --version
npm --version

Installation

  1. Clone or download this repository:
git clone https://github.com/your-username/PandaDoc-GUI.git
cd PandaDoc-GUI
  1. Install dependencies:
npm install
  1. Start the server:
npm start
  1. Open your browser: Navigate to http://localhost:3000

Usage

Single File Conversion

  1. Click "Single File" mode (default)
  2. Drop a file or click to browse
  3. Select input format (or leave as auto-detect)
  4. Choose output format
  5. Configure options if needed (TOC, numbering, etc.)
  6. Click "Convert Document"
  7. Download starts automatically

Batch Processing

  1. Click "Batch Processing" mode
  2. Drop multiple files or click to browse
  3. Select formats and options
  4. Click "Convert Document"
  5. All files are converted and downloaded as a ZIP

Conversion Options

  • Table of Contents: Generate a TOC for your document
  • Number Sections: Automatically number all headings
  • Bibliography: Enable citation and bibliography processing
  • CSS Styling: Enhanced styling for HTML output

Supported Conversions

Common conversion paths:

  • Markdown β†’ HTML/PDF/DOCX - Blog posts, documentation
  • DOCX β†’ Markdown - Word documents to plain text
  • HTML β†’ Markdown/PDF - Web content to documents
  • LaTeX β†’ PDF/DOCX - Academic papers
  • EPUB β†’ PDF/DOCX - E-books to printable formats

Advanced Usage

For PDF Output

PDF generation requires LaTeX. Install it for your platform:

macOS:

brew install --cask mactex-no-gui

Linux:

sudo apt-get install texlive-latex-base texlive-fonts-recommended

Custom Templates

You can add custom Pandoc templates by placing them in the project directory and modifying server.js to reference them.

API Endpoints

The server exposes REST API endpoints:

  • GET /api/check-pandoc - Check Pandoc availability
  • GET /api/formats - Get supported formats
  • POST /api/convert - Convert single file
  • POST /api/convert-batch - Batch convert files

Development

Development Mode with Auto-Restart

npm run dev

This uses nodemon to automatically restart the server when files change.

Project Structure

PandaDoc-GUI/
β”œβ”€β”€ server.js           # Express backend
β”œβ”€β”€ package.json        # Dependencies
β”œβ”€β”€ public/            # Frontend files
β”‚   β”œβ”€β”€ index.html     # Main UI
β”‚   β”œβ”€β”€ styles.css     # Styling
β”‚   └── app.js         # Client-side JavaScript
β”œβ”€β”€ uploads/           # Temporary upload directory (auto-created)
└── downloads/         # Temporary download directory (auto-created)

Troubleshooting

"Pandoc not installed" error

  • Ensure Pandoc is installed: pandoc --version
  • Make sure Pandoc is in your system PATH
  • Restart the server after installing Pandoc

PDF conversion fails

  • Install LaTeX (see Advanced Usage section)
  • Try converting to HTML first to verify other conversions work

Large file issues

  • Default file size limit is 100MB
  • Adjust maxBuffer in server.js for larger files
  • For very large files, use command-line Pandoc directly

Port already in use

  • Change the port in server.js: const PORT = 3001;
  • Or set environment variable: PORT=3001 npm start

Configuration

Change Server Port

Set the PORT environment variable:

PORT=8080 npm start

Or edit server.js:

const PORT = process.env.PORT || 8080;

File Size Limits

Edit the multer configuration in server.js:

limits: { fileSize: 200 * 1024 * 1024 } // 200MB

Contributing

Contributions are welcome! Please feel free to submit pull requests or open issues for bugs and feature requests.

License

MIT License - see LICENSE file for details

Credits

Related Projects

Support

For issues related to:


Note: This is a GUI wrapper around Pandoc. All document conversion is performed by Pandoc locally on your machine. No files are uploaded to external servers.

About

Attempting to make a local GUI version of PandaDoc

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • JavaScript 56.7%
  • CSS 23.8%
  • HTML 19.5%