ghostscript-pdf-processor
v1.1.2
Published
A simple PDF processor using Ghostscript and WebAssembly.
Downloads
15
Maintainers
Readme
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:
npm install ghostscript-pdf-processor
Usage Example
Here is a simple example to use the PDF processor in your React app:
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;