我有在Java中(使用Apache轴)获得的文档的ID,这调用JasperReports的创建PDF文件的WebService(以前在Java应用程序中创建报告 - 服务器端),创建我使用的方法的报告:JasperManager.fillReport和JasperExportManager.exportReportToPdf。 最后一个返回的字节的阵列。 我的web服务需要的阵列和它编码为Base64字符串,PHP接收该字符串作为从WebService响应。
我想重新创建PHP文件,但我不知道究竟这是可能的。 我想用下面的代码片段来做到这一点:
private function createFileFromString($stringWithFile){
header('Content-Description: File Transfer');
header("Content-Type: application/pdf");
header('Content-Disposition: attachment; filename=remesa.pdf');
header('Cache-Control: must-revalidate');
header('Pragma: public');
ob_start();
ob_clean();
ob_flush();
flush();
$fp = file_put_contents("document.pdf", "w");
fwrite($fp, base64_decode($stringWithFile));
readfile($fp);
ob_get_contents();
fclose($fp);
exit();
}
WebService的返回字符串像这样:
JVBERi0xLjQKJeLjz9MKNCAwIG9iaiA8PC9UeXBlL1hPYmplY3QvQ29sb3JTcGFjZS9EZXZpY2VS R0IvU3VidHlwZS9JbWFnZS9CaXRzUGVyQ29tcG9uZW50IDgvV2lkdGggMjg0L0xlbmd0aCAzNjc0 L0hlaWdodCA1MC9GaWx0ZXIvRENURGVjb2RlPj5zdHJlYW0K / 9J / 4AAQSkZJRgABAgAAAQABAAD / 2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0aHBwgJC4nICIsIxwcKDcpLDAxNDQ0 Hyc5PTgyPC4zNDL / 2wBDAQkJCQwLDBgNDRgyIRwhMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIy MjIyMjIyMjIyMjIyMjIyMjIyMjIyMjL / wAARCAAyARwDASIAAhEBAxEB / 8QAHwAAAQUBAQEBAQEA ...
该字符串的“PDF头”,是这样开始的:
%PDF-1.4%âãÏÓ4 0 OBJ <>流ÿØÿà
当我尝试下载该文件,它的大小约为4-5KB(和,该文件已损坏),但响应字符串约为180KB。
这可能吗? 我在做什么错?
编辑:我读过有关解包功能,或许这个功能可以帮助我吗?
提前致谢