0
我retrieveng碧玉報告生成報表服務器,在一個新的標籤它顯示給用戶的意圖。我可以創建新標籤,但是pdf完全空白。
我的代碼
我要文件,一個PHP文件說對的JasperServer的請求,另一種是查詢該文件並創建使用JavaScript的新標籤。 的Javascript:
sap.ui.getCore().attachInit(function() {
var onPress = function(evt){
jQuery.ajax({
type: "GET",
url: "JasperReportAPICall.php",
xhrFields: {responseType: "text/pdf"},
data: {
functionname: "authenticate",
argument: "http://localhost:8080/jasperserver/rest_v2/reports/reports/interactive/Directives_Report.pdf?id=1&method=rules"
},
success: function(response){
var blob = new Blob([response], {type: "application/pdf"});
var pdfUrl = window.URL.createObjectURL(blob);
var newTab = window.open(pdfUrl);
newTab.addEventListener('load', function(pdfUrl){
window.URL.revokeObjectURL(pdfUrl);
}, false);
console.log("Report succesfully received");
}
});
};
new sap.m.Button({
text: "GNR",
press: onPress
}).placeAt("content");
});
PHP:
function authenticate($url){
global $username, $pwd;
$curl = curl_init($url);
curl_setopt($curl, CURLOPT_GET, 1);
curl_setopt($curl, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
curl_setopt($curl, CURLOPT_USERPWD, "$username:$pwd");
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
$result = curl_exec($curl);
if (result===false){
$httpcode = curl_getinfo($curl, CURLINFO_HTTP_CODE);
$error = curl_error($curl);
echo "HTTPCODE: $httpcode";
echo "ERROR: $error";
}
curl_close($curl);
return $result;
}
if (isset($_GET['functionname']) && isset($_GET['argument'])){
if ($_GET['functionname'] === "authenticate"){
$result = authenticate($_GET['argument']);
echo $result;
}
}
我試過
- 設置XHR的responseType爲 '斑點'。 window.URL.createObjectURL拒絕它
- 將xhr responseType設置爲'arraybuffer'並使用所述的arraybuffer創建一個新的Blob。在打開新選項卡時,pdf查看器會抱怨它無法打開文件
- 與上一個步驟相同,但是使用File對象。相同的結果。
什麼數據看起來像
這是我從服務器接收。
既然它太大了放在這裏,我把它放在pastebin。