Sau giải pháp SO here này để thông báo cho khách hàng về sự kiện nhấp trong tài liệu PDF, làm cách nào để thông báo cho khách hàng khi tệp PDF được khách hàng gửi bằng this.myPDF.submitForm ("localhost/Handler ? ashx r = 2) chức năngPDF hostContainer callback
file PDF được tạo ra bên trong một điều khiển người dùng sau đó trả lại vào một đối tượng HTML:
string container = ("<object data='/myfile.pdf' type='application/pdf'></object>");
các tập tin JS gắn liền với PDF được thực hiện như thế này:
var webClient = new WebClient();
string htmlContent = webClient.DownloadString(fileurl + "pdf_script.js");
PdfAction action = PdfAction.JavaScript(htmlContnent, pdfstamper.Writer);
pdfstamper.Writer.SetOpenAction(action);
Và nội dung của tập tin js:
this.disclosed = true;
if (this.external && this.hostContainer) {
function onMessageFunc(stringArray) {
try {
this.myPDF.submitForm("http://localhost/Handler.ashx?EmpNo=12345" + "#FDF", false);
}
catch (e) {
}
}
function onErrorFunc(e) {
console.show();
console.println(e.toString());
}
try {
if (!this.hostContainer.messageHandler);
this.hostContainer.messageHandler = new Object();
this.hostContainer.messageHandler.myPDF = this;
this.hostContainer.messageHandler.onMessage = onMessageFunc;
this.hostContainer.messageHandler.onError = onErrorFunc;
this.hostContainer.messageHandler.onDisclose = function() { return true; };
}
catch (e) {
onErrorFunc(e);
}
}
Khi cuộc gọi submitForm được thực hiện các nội dung PDF (trường mẫu) được lưu thành công và một cảnh báo sẽ được hiển thị trong PDF bằng cách làm này:
message = "%FDF-1.2
1 0 obj
<<
/FDF
<<
/Status("Success!")
>>
>>
endobj
trailer
<</Root 1 0 R>>
%%EOF");
return message;
Điều tôi đang cố gắng làm là gửi PDF để gọi lại máy khách sau khi gửi biểu mẫu được gửi từ khách hàng này, một cách để xác nhận khách hàng rằng biểu mẫu đã được gửi, chứ không phải dưới dạng cảnh báo, nhưng thay vào đó, một cách để kích hoạt một hàm trong máy chủ (vùng chứa, khung nội tuyến, đối tượng ... v.v.).
Tôi thiếu một số thông tin liên quan đến bước này: "Khi cuộc gọi submitForm được thực hiện, tệp PDF được tạo thành công và cảnh báo được hiển thị trong PDF bằng cách thực hiện việc này:". Tôi cho rằng một tệp PDF được tạo trên máy chủ và được hiển thị trên máy khách, nhưng có thể tôi đã sai. Có thể máy chủ đang trả về tệp FDF. Bạn có thể làm rõ? –
Rất tiếc, lỗi của tôi, cuộc gọi submitForm được thực hiện để LƯU nội dung của tệp PDF không tạo, nó đã được hiển thị trong điều khiển người dùng và được nhúng vào một lời xin lỗi
Tôi không hiểu ở trên nơi được nói "if (! this.hostContainer.messageHandler);" Tại sao dòng đó có dấu chấm phẩy ở cuối? Đây có phải là lỗi không? nếu không, mục đích của dòng đó là gì? cảm ơn nhiều! –