
# Ghostscript PDF Processor

A simple tool for compressing, converting to grayscale, or converting PDF files to CMYK using Ghostscript and WebAssembly.

## Installation

First, install the package:

```bash
npm install ghostscript-pdf-processor
```

## Usage Example

Here is a simple example to use the PDF processor in your React app:

```jsx
import { useState } from "react";
import { _processPDF } from "ghostscript-pdf-processor"; // Import the PDF processing function

function App() {
  const [file, setFile] = useState(null);
  const [downloadLink, setDownloadLink] = useState(null);
  const [conversionType, setConversionType] = useState("compress");
  const [statusMessage, setStatusMessage] = useState("Idle");

  const handleFileChange = (event) => {
    const uploadedFile = event.target.files[0];
    if (uploadedFile) {
      const fileURL = URL.createObjectURL(uploadedFile);
      setFile({ name: uploadedFile.name, url: fileURL });
    }
  };

  const processPDF = (pdfURL, filename) => {
    setStatusMessage("Processing...");
    _processPDF(
      conversionType,
      { pdfDataURL: pdfURL },
      (response) => {
        const blob = new Blob([response.pdfDataURL], { type: "application/pdf" });
        const downloadURL = URL.createObjectURL(blob);
        setDownloadLink(downloadURL);
        setStatusMessage("Processing complete!");
      },
      () => {},
      (status) => setStatusMessage(status)
    );
  };

  const handleSubmit = (event) => {
    event.preventDefault();
    if (file) processPDF(file.url, file.name);
  };

  return (
    <div>
      <h1>Simple PDF Processor</h1>
      <form onSubmit={handleSubmit}>
        <input type="file" accept="application/pdf" onChange={handleFileChange} />
        <select onChange={(e) => setConversionType(e.target.value)} value={conversionType}>
          <option value="compress">Compress PDF</option>
          <option value="grayscale">Convert to Grayscale</option>
          <option value="cmyk">Convert to CMYK</option>
        </select>
        <button type="submit">Process PDF</button>
      </form>

      {statusMessage && <p>{statusMessage}</p>}

      {downloadLink && (
        <a href={downloadLink} download={file.name.replace(".pdf", `-${conversionType}.pdf`)}>
          Download Processed PDF
        </a>
      )}
    </div>
  );
}

export default App;
```
