تدوير صفحات PDF باستخدام JavaScript عبر C++

تصف هذه القسم كيفية تغيير اتجاه الصفحة من أفقي إلى عمودي والعكس في ملف PDF موجود باستخدام JavaScript عبر C++.

  1. إنشاء ‘FileReader’.

  2. يتم تنفيذ وظيفة AsposePdfRotateAllPages.

  3. يتم تعيين اسم الملف الناتج، في هذا المثال “ResultRotation.pdf”.

  4. بعد ذلك، إذا كان ‘json.errorCode’ يساوي 0، فإن ملفك الذي يتم تنزيله سيحمل الاسم الذي حددته سابقًا. إذا لم يكن معامل ‘json.errorCode’ يساوي 0، وبالتالي سيكون هناك خطأ في ملفك، فإن المعلومات حول هذا الخطأ ستكون موجودة في ملف ‘json.errorText’.

  5. كنتيجة لذلك، فإن وظيفة DownloadFile تولد رابطًا وتسمح لك بتنزيل الملف الناتج إلى نظام التشغيل الخاص بالمستخدم.


  var ffileRotateAllPages = function (e) {
    const file_reader = new FileReader();
    file_reader.onload = (event) => {
      /* تدوير جميع صفحات ملف PDF وحفظ "ResultRotation.pdf" */
      const json = AsposePdfRotateAllPages(event.target.result, e.target.files[0].name, Module.Rotation.on270, "ResultRotation.pdf");
      if (json.errorCode == 0) document.getElementById('output').textContent = json.fileNameResult;
      else document.getElementById('output').textContent = json.errorText;
      /* إنشاء رابط لتنزيل ملف النتيجة */
      DownloadFile(json.fileNameResult, "application/pdf");
    };
    file_reader.readAsArrayBuffer(e.target.files[0]);
  };

استخدام Web Workers


    /*إنشاء Web Worker*/
    const AsposePDFWebWorker = new Worker("AsposePDFforJS.js");
    AsposePDFWebWorker.onerror = evt => console.log(`خطأ من Web Worker: ${evt.message}`);
    AsposePDFWebWorker.onmessage = evt => document.getElementById('output').textContent = 
      (evt.data == 'ready') ? 'تم التحميل!' :
        (evt.data.json.errorCode == 0) ?
          `النتيجة:\n${DownloadFile(evt.data.json.fileNameResult, "application/pdf", evt.data.params[0])}` :
          `خطأ: ${evt.data.json.errorText}`;

    /*معالج الحدث*/
    const ffileRotateAllPages = e => {
      const file_reader = new FileReader();
      file_reader.onload = event => {
        const rotation = 'Module.Rotation.on270';
        /*تدوير صفحات الـPDF وحفظ "ResultRotation.pdf" - طلب من Web Worker*/
        AsposePDFWebWorker.postMessage(
          { "operation": 'AsposePdfRotateAllPages',
            "params": [event.target.result, e.target.files[0].name, rotation, "ResultRotation.pdf"] },
          [event.target.result]
        );
      };
      file_reader.readAsArrayBuffer(e.target.files[0]);
    };

    /*إنشاء رابط لتنزيل ملف النتيجة*/
    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 = "انقر هنا لتنزيل الملف " + filename;
        document.body.appendChild(link); 
        document.body.appendChild(document.createElement("br"));
        return filename;
      }