Я разработал веб-приложение C#, которое называет веб-сервис, который возвращает base64 закодированный массив (файл PDF). Я затем преобразовываю тот массив в объект UCOMIStream (я знаю, что это является устаревшим, но DLL, который я использую, требует его в качестве параметра). Я использую следующий код, чтобы сделать преобразование, которое работает отлично. Я могу передать этот объект DLL так, чтобы я мог распечатать PDF.
Это работает отлично на веб-сервере, но требование состоит в том, чтобы распечатать его локально.
Byte[] bBuffer = statementOut.statementcycle.statementdata.content;
int size = bBuffer.Length;
IntPtr mem = Marshal.AllocHGlobal(size);
Marshal.Copy(bBuffer, 0, mem, size);
// Create an OLE Stream object.
System.Runtime.InteropServices.UCOMIStream str; //obsolete but the createstreamonhglobal outputs it
CreateStreamOnHGlobal(mem, true, out str);
DLL находится на клиенте, таким образом, я могу использовать ActiveX для создания объекта с помощью JavaScript и/или VBscript; однако, я не смог выяснить, как заставить потоковый объект клиенту передавать DLL.
Как это может быть достигнуто?
Не могли бы вы просто сгенерировать PDF-файл на сервере и загрузить его клиентом?
Попросите клиента загрузить этот закодированный в base64 массив, а затем преобразовать данные в объект UCOMIStream и сгенерировать PDF-файл на стороне клиента.