2015-12-22 3 views
1

У меня есть этот код для печати PDF документа из потока файлов (с помощью PDFsharp библиотеки):PDFsharp - Javascript впрыскивается в PDF документе не работает в Firefox

private HttpResponseMessage PrintPdfDocument2(MemoryStream fileStream) 
    { 
     HttpResponseMessage result = new HttpResponseMessage(HttpStatusCode.OK); 


     PdfSharp.Pdf.PdfDocument document = PdfSharp.Pdf.IO.PdfReader.Open(fileStream); 
     PdfSharp.Pdf.PdfDictionary dict = new PdfSharp.Pdf.PdfDictionary(document); 

     dict.Elements["/S"] = new PdfSharp.Pdf.PdfName("/JavaScript"); 
     dict.Elements["/JS"] = new PdfSharp.Pdf.PdfString("this.print(true);\r"); 

     document.Internals.AddObject(dict); 
     document.Internals.Catalog.Elements["/OpenAction"] = PdfSharp.Pdf.Advanced.PdfInternals.GetReference(dict); 

     var outputStream = new MemoryStream(); 
     document.Save(outputStream); 
     result.Content = new ByteArrayContent(outputStream.ToArray()); 
     result.Content.Headers.ContentType = new MediaTypeHeaderValue("application/pdf"); 

     return result; 
    } 

Он прекрасно работает в хроме и то есть, но не работает в Firefox

Любая идея для этой проблемы ????

Спасибо, ребята, за чтение!

+1

Скорее всего PDF компонент просмотра в Firefox слишком туп, чтобы понять JavaScript. Что произойдет, если вы используете Acrobat/Reader в качестве помощника для отображения PDF через подключаемый модуль своего браузера? –

+0

Потому что это настоящий проект для клиента, поэтому мы предполагаем, что у нас нет плагина для поддержки открытого PDF-документа в браузере. –

+0

*, поэтому мы предполагаем, что у нас нет плагина для поддержки открытого PDF-документа в браузере * - в этом случае вам также придется предположить, что не все специальные функции вашего PDF будут доступны всем получателям ваших PDF-файлов. – mkl

ответ

0

Я нашел решение (ы, посмотрев на pdf.js source code)

var dict = new PdfDictionary(document); 
dict.Elements["/Type"] = new PdfName("/Action"); 
dict.Elements["/S"] = new PdfName("/Named"); 
dict.Elements["/N"] = new PdfName("/Print"); 
document.Internals.AddObject(dict); 
document.Internals.Catalog.Elements["/OpenAction"] = PdfSharp.Pdf.Advanced.PdfInternals.GetReference(dict); 
Смежные вопросы