سؤال

لدي صفحة ويب بها PDF مضمن عليها. يبدو رمزي مثل هذا:

<embed
    type="application/pdf"
    src="path_to_pdf_document.pdf"
    id="pdfDocument"
    width="100%"
    height="100%">
</embed>

لدي رمز JavaScript هذا لطباعة PDF الخاص بي:

function printDocument(documentId) {

    //Wait until PDF is ready to print    
    if (typeof document.getElementById(documentId).print == 'undefined') {

        setTimeout(function(){printDocument(documentId);}, 1000);

    } else {

        var x = document.getElementById(documentId);
        x.print();
    }
}

عند تنفيذ هذا الرمز يتم تنفيذ برنامج Acrobat Plug-in يفتح مربع حوار الطباعة المعروف. شيء من هذا القبيل:

PrintDialog

سؤالين:

  • كيفية تحسين طريقة الكشف عن أن PDF محملة وجاهزة للطباعة؟
  • كيفية تجنب عرض مربع حوار الطباعة؟

مزيد من المعلومات قليلا حول نظامي:

نظام التشغيل: ويندوز إكس بي

المتصفح: Internet Explorer 7.

PDF البرنامج المساعد: Acrobat Reader 9.

هل كانت مفيدة؟

المحلول

لن تكون قادرا على الطباعة بصمت مع JavaScript القديم العادي. كيف تريد أن تبدأ الطابعة الخاصة بك في طباعة صفحات 100000000 من الكل الأسود. ليس شيء جيد. إذا كنت ترغب في الطباعة بصمت وجعلها تعمل من أجل Internet Explorer فقط، فهناك عناصر تحكم ActiveX هناك والتي يمكن أن تفعل ذلك. يتطلب هذا إعدادات أمان أعلى لصفحتك وللثمث المستخدمين في موقعك حقا.

نصائح أخرى

هذا ممكن في بيئة إنترانت موثوق بها.

<object id="pdfDoc" style="position:absolute;z-index:-1;" name="pdfDoc" classid="clsid:CA8A9780-280D-11CF-A24D-444553540000" width="900px" height="100%">
        <param name="SRC" value="yourdoc.pdf" />
    </object>

<input type="button" ... onclick="pdfDoc.printAll();" />

سيؤدي هذا إلى تجاوز مربع حوار الطباعة وإرساله مباشرة إلى الطابعة الافتراضية.

أتساءل عما إذا كنت بحاجة فعلا إلى الانتظار قبل الطباعة - لن مقبض عمل الطباعة من أجلك؟ وآمل حقا أن يسمح لك أي متصفح حديث (أو أي موقع ويب لهذه المسألة) بالطباعة دون وجود مربع حوار التأكيد (بعض المتصفحات القديمة التي اعتادت القيام بذلك، منذ وقت طويل).

يمكنك القيام بذلك في فايرفوكس عن طريق تغيير about:config. وبعد يضيف print.always_print_silent وتعيينها ل true.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top