私はJavascriptとjqueryでPhonegapを使用しています。私はJavaサーブレットを作成しました.pdfファイルを返します。ブラウザではファイルを正しく取得できますが、Phonegap では取得できません。
私のコードはこれです(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 は動的です。内部または外部ブラウザで開いてもかまいませんが、表示する必要があります。
ありがとう!:)