Я использую 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 является динамическим. Я не против открывать его с помощью внутреннего или внешнего браузера, но мне нужно это увидеть.
Спасибо! :)
вы не можете показать PDF с JavaScript –
и я могу получить файл и открыть его с помощью внешнего браузера? Это может быть решением для меня ... – LuisSM
вам нужно включить загрузку файлов SDK кордовы javascript, чтобы заставить работу _system работать - window.open (href, '_system', '_blank'); –