Convert PDF to PDF/A formats
Contents
[
Hide
]
Aspose.PDF for JavaScript allows you to convert a PDF file to a PDF/A compliant PDF file.
Converting operation depends on the number of pages in the document and can be very time-consuming. Therefore, we highly recommend using Web Workers.
This code demonstrates a way to offload resource-intensive PDF file converting tasks to a web worker to prevent blocking the main UI thread. It also offers a user-friendly way to download the converted file.
Try to convert PDF to PDF/A online
Aspose.PDF for JavaScript presents you online free application “PDF to PDF/A-1A”, where you may try to investigate the functionality and quality it works.
Convert PDF to PDF/A format
/*Create Web Worker*/
const AsposePDFWebWorker = new Worker("AsposePDFforJS.js");
AsposePDFWebWorker.onerror = evt => console.log(`Error from Web Worker: ${evt.message}`);
AsposePDFWebWorker.onmessage = evt => document.getElementById('output').textContent =
(evt.data == 'ready') ? 'loaded!' :
(evt.data.json.errorCode == 0) ? `Result:\n${DownloadFile(evt.data.json.fileNameResult, "application/pdf", evt.data.params[0])}\n${DownloadFile(evt.data.json.fileNameLogResult, "application/xml", evt.data.params[1])}` : `Error: ${evt.data.json.errorText}`;
/*Event handler*/
const ffilePdfConvertToPDFA = e => {
const file_reader = new FileReader();
file_reader.onload = event => {
const pdfFormat = 'Module.PdfFormat.PDF_A_1A';
/*convert a PDF-file to PDF/A(1A) and save the "ResultConvertToPDFA.pdf"*/
/*during conversion process, the validation is also performed, "ResultConvertToPDFA.xml"- Ask Web Worker*/
AsposePDFWebWorker.postMessage({ "operation": 'AsposePdfConvertToPDFA', "params": [event.target.result, e.target.files[0].name, pdfFormat, "ResultConvertToPDFA.pdf", "ResultConvertToPDFA.xml"] }, [event.target.result]);
};
file_reader.readAsArrayBuffer(e.target.files[0]);
};
/// [Code snippet]
/*make a link to download the result file*/
const DownloadFile = (filename, mime, content) => {
mime = mime || "application/octet-stream";
var link = document.createElement("a");
link.href = URL.createObjectURL(new Blob([content], {type: mime}));
link.download = filename;
link.innerHTML = "Click here to download the file " + filename;
document.body.appendChild(link);
document.body.appendChild(document.createElement("br"));
return filename;
}
The following JavaScript code snippet shows simple example of coverting PDF to PDF/A files:
- Select a PDF file for converting.
- Create a ‘FileReader’.
- The AsposePdfConvertToPDFA function is executed.
- The name of the resulting file is set, in this example “ResultConvertToPDFA.pdf”. During conversion process, the validation is also performed, “ResultConvertToPDFA.xml”.
- Next, if the ‘json.errorCode’ is 0, then your DownloadFile is given the name you specified earlier. If the ‘json.errorCode’ parameter is not equal to 0 and, accordingly, there will be an error in your file, then information about such an error will be contained in the ‘json.errorText’ file.
- As a result, the DownloadFile function generates a link and allows you to download the resulting file, and link to download the Log (xml) file to the user’s operating system.
var ffilePdfConvertToPDFA = function (e) {
const file_reader = new FileReader();
file_reader.onload = (event) => {
/*convert a PDF-file to PDF/A(1A) and save the "ResultConvertToPDFA.pdf"*/
/*during conversion process, the validation is also performed, "ResultConvertToPDFA.xml"*/
const json = AsposePdfConvertToPDFA(event.target.result, e.target.files[0].name, Module.PdfFormat.PDF_A_1A, "ResultConvertToPDFA.pdf", "ResultConvertToPDFA.xml");
if (json.errorCode == 0)
{
document.getElementById('output').textContent = json.fileNameResult + "\nLog file (xml format): " + json.fileNameLogResult;
/*make a link to download the result file*/
DownloadFile(json.fileNameResult, "application/pdf");
}
else document.getElementById('output').textContent = json.errorText + "\nLog file (xml format): " + json.fileNameLogResult;
/*make a link to download the Log (xml)*/
DownloadFile(json.fileNameLogResult, "application/xml");
};
file_reader.readAsArrayBuffer(e.target.files[0]);
};