2012-11-09 24 views
6
protected static byte[] exportReportToPdf(JasperPrint jasperPrint) 
                 throws JRException { 
    JRPdfExporter exporter = new JRPdfExporter();  
    ByteArrayOutputStream baos = new ByteArrayOutputStream(); 

    exporter.setParameter(JRExporterParameter.JASPER_PRINT, jasperPrint); 
    exporter.setParameter(JRExporterParameter.OUTPUT_STREAM, baos); 
    exporter.setParameter(JRPdfExporterParameter.PDF_JAVASCRIPT, 
       "this.print({bUI: true,bSilent: false,bShrinkToFit: true});"); 

    exporter.exportReport();   
    return baos.toByteArray(); 
} 

Używamy takiego kodu, aby wyeksportować dokument PDF z aplikacji Jasper.Eksportowanie plików PDF w Internet Explorerze

Linia

exporter.setParameter(JRPdfExporterParameter.PDF_JAVASCRIPT, 
      "this.print({bUI: true,bSilent: false,bShrinkToFit: true});"); 

dodaje JavaScript, aby wysłać dokument PDF bezpośrednio do drukarki.

Oczekiwane zachowanie polega na tym, że zostanie wyświetlone okno dialogowe drukowania z podglądem dokumentu PDF.

To działa dobrze przez większość czasu - z wyjątkiem tego, że mam problemy z jednym na pięć razy w przeglądarkach Internet Explorer 8 i Firefox.

Co się dzieje - okno podglądu wydruku z dokumentem PDF nie pojawia się lub pojawia się z pustym dokumentem w oknie podglądu.

-I've spróbował liczbę różnych JavaSkrypty (różnych params do this.print() poprzez exporter.setParameter -I've wypróbowane ustalanie różnych nagłówków odpowiedzi takich jak

response.setContentType("application/pdf"); 
response.setHeader("Content-disposition","inline; filename=\"" 
        + reportName 
        + "\""); 
response.setContentLength(baos.size()); 

te nie wydają się pomóc

Wydaje się, że to problem IE i FF.Czy ktokolwiek kiedykolwiek poradził sobie z tym problemem? Muszę go uruchomić w 100% przypadków we wszystkich przeglądarkach.Być może inne podejście do osiągnięcia celu wysyłania dokumentu PDF eksport bezpośrednio do drukarka lub biblioteka strony trzeciej, która będzie działać w różnych przeglądarkach?

+0

Czy możesz przeczytać ten dokument w programie Acrobat? –

+0

Tak, jeśli skomentujemy exporter.setParameter (JRPdfExporterParameter.PDF_JAVASCRIPT, "this.print ({bUI: true, bSilent: false, bShrinkToFit: true});"); wtedy możemy pobrać plik jako załącznik pdf. Działa to dobrze we wszystkich przeglądarkach. – user619804

+0

Co to jest oprogramowanie rif? Czy działa z raportami Jaspera czy jest substytutem jaspisa? – user619804

Odpowiedz

4

Może nie ma szansy na aktualizację interfejsu użytkownika. Poniższy kod opóźnia drukowanie, prawdopodobnie dając mu szansę, której potrzebuje. Nie testowałem, ponieważ nie mam twojego środowiska.

exporter.setParameter(JRPdfExporterParameter.PDF_JAVASCRIPT, 
    "app.setTimeOut('this.print({bUI: true,bSilent: false,bShrinkToFit: true});',200);") 
+0

Ale czy to nie javascript wyłącznie dla pdf? Nie sądzę, że PDF_JAVASCRIPT dodaje coś do domu? – user619804

+0

@ user619804, JS nie dodaje nic do DOM, oczywiście, ale nie masz pojęcia o tym, jakie mogą być warunki wyścigu między przeglądarką (która kontroluje renderowanie i drukowanie) a wtyczką Adobe. Spróbowałeś sugestii Mike'a? Czy to miało jakąkolwiek różnicę? – vladr

+0

Limit czasu nie pomógł. – user619804

Powiązane problemy