Javascript mở hộp thoại in cho pdf

Gọi phương thức này khi SDK tải xong và hộp thoại in cho biết tệp PDF đã bắt đầu in sẽ xuất hiện

PSPDFKit.load[configuration].then[[instance] => {
  // Print when loaded.
  //
  instance.print[];
}];

Tôi đã viết một số hành động tạo tệp PDF động. cái gì đó như. báo cáo/báo cáoGenerator. hoạt động

khi tôi gọi reports/reportGenerator?param=dialy, nó sẽ mở tệp pdf đã tạo trong cửa sổ bật lên, sau đó tôi có thể nhấn nút in để mở hộp thoại máy in và in nó

những gì tôi muốn làm bây giờ là mở hộp thoại máy in trực tiếp. vì vậy khi tôi gọi reports/reportGenerator?param=dialy và sau khi tệp pdf được tạo đầy đủ, hãy mở hộp thoại máy in. điều đó có thể không?

thêm thông tin.
hành động giống như thế này.

sout = response.getOutputStream[];
response.setContentType["application/pdf"];
response.setHeader["Content-disposition","inline; filename=\"myReport.pdf\""];
sout.write[pdfBytes];
sout.flush[];
sout.close[];

Giải pháp tốt nhất

Nhờ Alex K tôi đã tìm thấy câu trả lời

dựa theo

bạn có thể sử dụng thuộc tính PDF_JAVASCRIPT để thêm javascript vào pdf khi bạn tạo nó

vì vậy tôi đã thêm

JRPdfExporter exporter = new  JRPdfExporter[];
exporter.setParameter[JRPdfExporterParameter.PDF_JAVASCRIPT, "this.print[];"];

khi xuất PDF và nó đã hoạt động

Giải pháp liên quan

Javascript – Cách quản lý yêu cầu chuyển hướng sau lệnh gọi jQuery Ajax

Tôi đã đọc câu hỏi này và triển khai phương pháp đã được nêu liên quan đến việc đặt mã trạng thái HTTP phản hồi thành 278 để tránh trình duyệt xử lý các chuyển hướng một cách minh bạch. Mặc dù điều này hoạt động, tôi hơi không hài lòng vì nó hơi hack

Sau khi tìm hiểu kỹ hơn, tôi đã bỏ cách tiếp cận này và sử dụng JSON. Trong trường hợp này, tất cả phản hồi đối với yêu cầu AJAX đều có mã trạng thái 200 và phần thân của phản hồi chứa đối tượng JSON được tạo trên máy chủ. Sau đó, JavaScript trên máy khách có thể sử dụng đối tượng JSON để quyết định những gì nó cần làm

tôi đã có một vấn đề tương tự như của bạn. Tôi thực hiện một yêu cầu AJAX có thể có 2 phản hồi. một chuyển hướng trình duyệt đến một trang mới và một thay thế biểu mẫu HTML hiện có trên trang hiện tại bằng một biểu mẫu mới. Mã jQuery để làm điều này trông giống như

$.ajax[{
    type: "POST",
    url: reqUrl,
    data: reqBody,
    dataType: "json",
    success: function[data, textStatus] {
        if [data.redirect] {
            // data.redirect contains the string URL to redirect to
            window.location.href = data.redirect;
        } else {
            // data.form contains the HTML for the replacement form
            $["#myform"].replaceWith[data.form];
        }
    }
}];

Đối tượng JSON "dữ liệu" được xây dựng trên máy chủ để có 2 thành viên. data.redirect

JRPdfExporter exporter = new  JRPdfExporter[];
exporter.setParameter[JRPdfExporterParameter.PDF_JAVASCRIPT, "this.print[];"];
0. Tôi thấy cách tiếp cận này tốt hơn nhiều

Javascript – Cách kiểm tra xem phần tử có hiển thị sau khi cuộn không

cái này cần phải dùng mẹo

function isScrolledIntoView[elem]
{
    var docViewTop = $[window].scrollTop[];
    var docViewBottom = docViewTop + $[window].height[];

    var elemTop = $[elem].offset[].top;
    var elemBottom = elemTop + $[elem].height[];

    return [[elemBottom = docViewTop]];
}

Chức năng tiện ích đơn giản Điều này sẽ cho phép bạn gọi một chức năng tiện ích chấp nhận phần tử bạn đang tìm kiếm và nếu bạn muốn phần tử được hiển thị đầy đủ hoặc một phần

Các lớp PDFReader và PDFStamper là thành viên của thư viện iTextSharp. Tôi đã sử dụng các lớp cùng nhau để lấy luồng cho đầu ra và cũng truy cập vào đối tượng PDFWriter cho phép tôi thêm JavaScript

Chủ Đề