Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/85.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sql-server-2005/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何从浏览器提供pdf并由<;对象>;数据属性?_Javascript_Html_Pdf_Html5 Filesystem - Fatal编程技术网

Javascript 如何从浏览器提供pdf并由<;对象>;数据属性?

Javascript 如何从浏览器提供pdf并由<;对象>;数据属性?,javascript,html,pdf,html5-filesystem,Javascript,Html,Pdf,Html5 Filesystem,如何从浏览器提供pdf,以便可以从对象标记的数据属性引用它?关键是要尝试另一个uri方案,比如filesystem:或blob:-而不是data:,它不允许像(#zoom=50)这样的片段标识符。服务器返回需要使用数据uri显示的base64二进制数据。我曾尝试附加显示参数#zoom=50,但在使用数据uri时,就像对url一样。我无法更改服务器,必须支持Chrome 45 数据:不会解析片段标识符的uri <object type="application/pdf" ng-attr-da

如何从浏览器提供pdf,以便可以从对象标记的数据属性引用它?关键是要尝试另一个uri方案,比如filesystem:或blob:-而不是data:,它不允许像(#zoom=50)这样的片段标识符。服务器返回需要使用数据uri显示的base64二进制数据。我曾尝试附加显示参数#zoom=50,但在使用数据uri时,就像对url一样。我无法更改服务器,必须支持Chrome 45

数据:不会解析片段标识符的uri

<object type="application/pdf" ng-attr-data="{{'data:application/pdf;base64,' + itemGraphUrl}}"></object>

我尝试过的替代数据方案(文件系统:和blob:)


window.requestFileSystem=window.requestFileSystem | | window.webkitRequestFileSystem;
requestFileSystem(window.TEMPORARY,8*1024*1024,onInitFs,errorHandler);
函数onInitFs(fs){
getFile('graph.pdf',{create:true,exclusive:false},函数(fileEntry){
//为我们的FileEntry(log.txt)创建一个FileWriter对象。
createWriter(函数(fileWriter){
fileWriter.onwriteend=函数(e){
//$scope.fsGraphUrl=url.replace(“文件系统:”,“文件系统:应用程序/pdf;base64)”;
$scope.fsGraphUrl=true?fileEntryURL:objectURL;
$scope.$apply();
};
fileWriter.onerror=函数(e){
log('Write failed:'+e.toString());
};
//创建一个新Blob并将其写入log.txt。
var blob=new blob([pdfData],{type:'application/pdf'});
var objectURL=URL.createObjectURL(blob);
var fileEntryURL=fileEntry.toURL();
console.log('URL.createObjectURL为'+objectURL);//'blob:http%3A//localhost%3A3000/80d971a2-6f49-4e0f-9266-0746ebc66598'
console.log('fileEntry.toURL是'+fileEntry.toURL());/'文件系统:http://localhost:3000/temporary/graph.pdf'
fileWriter.write(blob);
},errorHandler);
},errorHandler);
createObjectURL和toURL似乎都很接近工作状态,但我收到了Chrome消息“加载PDF文档失败”。如果我没有包含“data:application/PDF;base64”,这就是我为数据uri收到的同一条消息。是否有办法以同样的方式使用filesystem:或blob:和特定的“application/PDF;base64”

<object type="application/pdf" ng-attr-data="{{fsGraphUrl + '#zoom=50'}}">


            window.requestFileSystem  = window.requestFileSystem || window.webkitRequestFileSystem;
            window.requestFileSystem(window.TEMPORARY, 8*1024*1024, onInitFs, errorHandler);

            function onInitFs(fs){
                fs.root.getFile('graph.pdf', {create: true, exclusive: false}, function(fileEntry){
                    // Create a FileWriter object for our FileEntry (log.txt).
                    fileEntry.createWriter(function(fileWriter) {

                        fileWriter.onwriteend = function (e) {
//                          $scope.fsGraphUrl = url.replace("filesystem:", "filesystem:application/pdf;base64,");
                            $scope.fsGraphUrl = true ? fileEntryURL : objectURL;
                            $scope.$apply();
                        };

                        fileWriter.onerror = function (e) {
                            console.log('Write failed: ' + e.toString());
                        };

                        // Create a new Blob and write it to log.txt.
                        var blob = new Blob([pdfData], {type: 'application/pdf'});
                        var objectURL = URL.createObjectURL(blob);
                        var fileEntryURL = fileEntry.toURL();

                        console.log('URL.createObjectURL is ' + objectURL); //'blob:http%3A//localhost%3A3000/80d971a2-6f49-4e0f-9266-0746ebc66598'
                        console.log('fileEntry.toURL is ' + fileEntry.toURL()); //'filesystem:http://localhost:3000/temporary/graph.pdf'

                        fileWriter.write(blob);

                    }, errorHandler);

                }, errorHandler);