2013-10-01 4 views
0

Я использую Phonegap с javascript и jquery. Я создал сервлет Java, он возвращает файл PDF. Я могу получить файл правильно в браузере, но не могу на Phonegap.Показать PDF с помощью Javascript и сервлета

Мой код это (JavaScript):

$.ajax({ 
    type: "GET", 
    url: "http://x.x.x.x:xxxx/MyApp/PDF", 
    success: function(data, textStatus, request) { 
     alert("pdf OK"); 
     window.open(data, "_system"); 
    }, 
    error: function(data, textStatus, request) { 
     alert("pdr error"); 
    } 

А вот сервлета (это работает отлично от браузера):

protected void doGet(HttpServletRequest req, HttpServletResponse response) throws ServletException, IOException { 
try { 
     // Create PDF (this works fine) 
    String ruta = getServletContext().getRealPath(reportTemplateUrl); 
    InputStream resourceAsStream = new FileInputStream(ruta); 
    jasperDesign = JRXmlLoader.load(resourceAsStream); 
    jasperReport = JasperCompileManager.compileReport(jasperDesign); 
    jasperPrint = JasperFillManager.fillReport(jasperReport, null, new JRBeanCollectionDataSource(findReportData(name))); 

    File pdf = new File("output.pdf"); 
    JasperExportManager.exportReportToPdfStream(jasperPrint, new FileOutputStream(pdf)); 

    // Send PDF 
    response.setContentType("application/pdf"); 
    response.addHeader("Content-Disposition", "attachment; filename=output.pdf"); 
    response.setContentLength((int) pdf.length()); 
    InputStream fileInputStream = new FileInputStream(pdf); 
    OutputStream responseOutputStream = response.getOutputStream(); 
    int bytes; 
    while ((bytes = fileInputStream.read()) != -1) { 
     responseOutputStream.write(bytes); 
    } 
    System.out.println("CREATED!"); 

} catch (JRException e) { 
    e.printStackTrace(); 
} 

Этот код работает на IPad с PhoneGap и всегда я получаю предупреждение OK. Из браузера iPad я могу загрузить и прочитать pdf (я ставлю URL в браузере как обычную страницу), и все в порядке.

Я думаю, что проблема есть «данные», из JavaScript, я не знаю, если мне нужно сохранить файл или как сделать, чтобы показать его ...

И да, мне нужно использовать сервлет и ajax, PDF является динамическим. Я не против открывать его с помощью внутреннего или внешнего браузера, но мне нужно это увидеть.

Спасибо! :)

+0

вы не можете показать PDF с JavaScript –

+0

и я могу получить файл и открыть его с помощью внешнего браузера? Это может быть решением для меня ... – LuisSM

+0

вам нужно включить загрузку файлов SDK кордовы javascript, чтобы заставить работу _system работать - window.open (href, '_system', '_blank'); –

ответ

0

Ну, я решил это делать GET вызов на JavaScript, открывая URL в новом окне браузера:

window.open("http://.../PDF?id=id&name=name&...", "_blank"); 

без AJAX.

Спасибо всем

Смежные вопросы