Optimizar Recursos PDF usando JavaScript a través de C++

Optimizar Recursos PDF

Optimizar recursos en el documento:

  1. Se eliminan los recursos que no se utilizan en las páginas del documento

  2. Los recursos iguales se combinan en un solo objeto

  3. Se eliminan los objetos no utilizados

  4. Seleccione un archivo PDF para optimizar.

  5. Cree un ‘FileReader’.

  6. Se ejecuta la función AsposePdfOptimizeResource.

  7. Se establece el nombre del archivo resultante, en este ejemplo “ResultPdfOptimizeResource.pdf”.

  8. A continuación, si el ‘json.errorCode’ es 0, entonces su DownloadFile recibe el nombre que especificó anteriormente. Si el parámetro ‘json.errorCode’ no es igual a 0 y, en consecuencia, hay un error en su archivo, entonces la información sobre dicho error se encontrará en el archivo ‘json.errorText’.

  9. Como resultado, la función DownloadFile genera un enlace y le permite descargar el archivo resultante al sistema operativo del usuario.

El siguiente fragmento de código muestra cómo optimizar un documento PDF.


    var ffilePdfOptimizeResource = function (e) {
      const file_reader = new FileReader();
      file_reader.onload = (event) => {
        /*Optimizar recursos de un archivo PDF y guardar como "ResultPdfOptimizeResource.pdf"*/
        const json = AsposePdfOptimizeResource(event.target.result, e.target.files[0].name, "ResultPdfOptimizeResource.pdf");
        if (json.errorCode == 0) document.getElementById('output').textContent = json.fileNameResult;
        else document.getElementById('output').textContent = json.errorText;
        /*Crear un enlace para descargar el archivo resultante*/
        DownloadFile(json.fileNameResult, "application/pdf");
      };
      file_reader.readAsArrayBuffer(e.target.files[0]);
    };

Usando Web Workers


    /*Crear Web Worker*/
    const AsposePDFWebWorker = new Worker("AsposePDFforJS.js");
    AsposePDFWebWorker.onerror = evt => console.log(`Error desde Web Worker: ${evt.message}`);
    AsposePDFWebWorker.onmessage = evt => document.getElementById('output').textContent = 
      (evt.data == 'ready') ? '¡cargado!' :
        (evt.data.json.errorCode == 0) ? `Resultado:\n${DownloadFile(evt.data.json.fileNameResult, "application/pdf", evt.data.params[0])}` : `Error: ${evt.data.json.errorText}`;

    /*Manejador de eventos*/
    const ffilePdfOptimizeResource = e => {
      const file_reader = new FileReader();
      file_reader.onload = event => {
        /*Optimizar recursos de un archivo PDF y guardar el "ResultPdfOptimizeResource.pdf" - Solicitar al Web Worker*/
        AsposePDFWebWorker.postMessage({ "operation": 'AsposePdfOptimizeResource', "params": [event.target.result, e.target.files[0].name, "ResultPdfOptimizeResource.pdf"] }, [event.target.result]);
      };
      file_reader.readAsArrayBuffer(e.target.files[0]);
    };
  /// [Fragmento de código]

    /*Crear un enlace para descargar el archivo resultado*/
    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 = "Haga clic aquí para descargar el archivo " + filename;
        document.body.appendChild(link); 
        document.body.appendChild(document.createElement("br"));
        return filename;
      }