2015-05-05 8 views
8

के साथ ब्राउज़र की एक नई विंडो में एक पीडीएफ खोलें मैं कोणीय जेएस के लिए नया हूं और मैं बटन दबाकर ब्राउज़र की एक नई विंडो में एक पीडीएफ दस्तावेज खोलना चाहता हूं।एंजुलरज

मैं आगे के अंत में $http.get() के साथ एक GET अनुरोध करता हूं, बैकएंड पर जावा आराम सेवा है जो जीईटी का जवाब देती है और पीडीएफ उत्पन्न करती है। मैं ब्राउज़र पर इस पीडीएफ को खोलना चाहता हूं।

यदि इस तरह से पीडीएफ खोलना संभव नहीं है तो कम से कम AngularJs के साथ किसी भी पीडीएफ को खोलें, मैं यह कैसे कर सकता हूं?

@GET 
@Path("/printPdf") 
public Response printService(){ 

//generates the pdf 

File reportFile = new File(filePath); 
String name = reportName + "." + "pdf"; 
ResponseBuilder response = Response.ok(new  TemporaryFileInputStream(reportFile)); 
response.header("Content-Disposition", "attachment; filename=" + name); 
response.header("Content-Type", "application/pdf"); 
response.header("Access-Control-Expose-Headers", "x-filename"); 
response.header("x-filename", name); 

return response.build(); 
} 

यह बाकी सेवा में प्रतिक्रिया उत्पन्न करने के लिए बैकएंड पर है।

+0

एक ही तरीका है कि आप किसी भी पीडीएफ के साथ होता है ऐसा ... इस कोणीय विशिष्ट नहीं है। आप क्या विशिष्ट समस्या है? – charlietfl

+0

मैं यह कैसे कर सकता हूं? – DarkAngeL

+0

यूआरएल वापस भेजें और यूआरएल – charlietfl

उत्तर

13

आप कुछ इस तरह था:

var myPdfUrl = 'something' 
$http.get(myPdfUrl); 

इस बजाय कार्य करें:

var myPdfUrl = 'something' 
$window.open(myPdfUrl); 

आप कुछ इस तरह है, तो बजाय:

$http 
    .get(generatePdfUrl) 
    .then(function(data){ 
     //data is link to pdf 
    });  

यह करें:

$http 
    .get(generatePdfUrl) 
    .then(function(data){ 
     //data is link to pdf 
     $window.open(data); 
    });   
+1

पर काम नहीं कर रहा है मैंने आपके समाधान की कोशिश की है लेकिन यह काम नहीं कर रहा है, मैं बाकी सेवा में बैकएंड में कुछ गलत कर रहा हूं , मैंने अभी संपादित किया है और इसके कोड को पोस्ट किया है। क्या वहाँ कुछ गड़बड़ है? – DarkAngeL

+1

धन्यवाद मैथ्यू बर्ग, मैंने इसे प्रतिक्रिया प्रतिक्रिया की इस पंक्ति को बदलने के लिए काम किया है। शीर्षलेख ("सामग्री-विस्थापन", "अनुलग्नक; फ़ाइल नाम =" + नाम) प्रतिक्रिया के लिए। शीर्षलेख ("सामग्री-विस्थापन", "इनलाइन; फ़ाइल नाम =" + नाम) क्योंकि यह मुझे एक नई विंडो में फ़ाइल खोलने के बजाय डाउनलोड करने के लिए कह रहा था। – DarkAngeL

+0

धन्यवाद लेकिन यह वास्तव में 'window.open (डेटा) है;' –

12

हो सकता है कि इस मामले में मदद कर सकते हैं, आप कुछ इस तरह है:

$http.get('generatePdfUrl') 
    .then(function (data) {  // data is your url 
     var file = new Blob([data], {type: 'application/pdf'}); 
     var fileURL = URL.createObjectURL(file); 
    }); 

फिर नियंत्रक में अपनी सेवा का उपयोग और

$window.open(fileURL); 
+1

पॉप-अप अवरोधक क्रोम में अंतर करता है – Per

संबंधित मुद्दे