मैं एक ही समस्या थी लेकिन शीर्ष उपयोग पर इस के लिए एक RESTFUL webservice
और एक जटिल डेटा वस्तु जो मैं पोस्ट करना चाहिए है।
मेरे समाधान: jQuery प्लगइन की तरह मैं एक अस्थायी फ़ॉर्म्यूलर का निर्माण और सबमिट करें। सर्वर साइड पर
$('<form target="_blank" action="' + appConstants.restbaseurl + '/print/pdf" method="POST">' +
"<input name='data' value='" + angular.toJson($scope.versicherung) + "' />" +
'</form>').appendTo('body').submit().remove();
हम एक JACKSON
के साथ एक CXF REST Service
का उपयोग करें: लेकिन मैं json सामग्री के साथ एक पैरामीटर के रूप में डेटा ऑब्जेक्ट (। मैं यहाँ का उपयोग AngularJS
लेकिन यह jQuery.param()
साथ भी काम करना चाहिए)
जावास्क्रिप्ट भेज प्रदाता:
स्प्रिंग कॉन्फ़िग:
<jaxrs:server id="masterdataService" address="/">
<jaxrs:serviceBeans>
<ref bean="printRestServiceBean" />
</jaxrs:serviceBeans>
<jaxrs:providers>
<bean class="org.codehaus.jackson.jaxrs.JacksonJsonProvider" />
<bean class="de.controller.ExceptionHandler" />
</jaxrs:providers>
</jaxrs:server>
नियंत्रक मैं निकालने में PrintService में
package de.controller;
import javax.ws.rs.Consumes;
import javax.ws.rs.FormParam;
import javax.ws.rs.POST;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;
import org.codehaus.jackson.map.ObjectMapper;
import org.springframework.beans.factory.annotation.Autowired;
@Path(Constants.PRINT_PATH)
@Consumes({ MediaType.APPLICATION_JSON, "application/x-www-form-urlencoded"})
@Produces("application/pdf; charset=UTF-8")
public class PrintRestController {
@Autowired
private PrintService printService;
@POST
@Produces("application/pdf")
@Path("/pdf")
public Response getPDF(@FormParam("data") String data) {
return printService.getPDF(json2Versicherung(data));
}
private Versicherung json2Versicherung(String data) {
Versicherung lVersicherung = null;
try {
ObjectMapper mapper = new ObjectMapper();
lVersicherung = mapper.readValue(data, Versicherung.class);
} catch(Exception e) {
LOGGER.error("PrintRestController.json2Versicherung() error", e);
}
return lVersicherung;
}
}
मैं पीडीएफ द्विआधारी और प्रतिक्रिया का निर्माण: एड परम और इसे वापस परिवर्तित एक जावा POJO को
@Override
public Response getPDF(Versicherung pVersicherung) {
byte[] result = ... //build the pdf from what ever
ResponseBuilder response = Response.ok((Object) result);
response.header("Content-Disposition", "inline; filename=mypdf.pdf");
return response.build();
}
यह समाधान सभी ब्राउज़रों के लिए काम करता है (IE9 के लिए भी कर सकते हैं जो डेटा यूआरएल को संभाल नहीं लेते हैं) और टैबलेट और स्मार्टफोन पर और इसमें पॉपअपब्लॉकर्स
स्रोत
2014-09-17 12:22:15
'इसकी डिफ़ॉल्ट चीज़' को परिभाषित करें। –
जो ब्राउज़र आमतौर पर पीडीएफ पर सेट सामग्री प्रकार के साथ प्रतिक्रिया के साथ करता है। एक पाठक खोलें, डाउनलोड स्थान आदि – bryanvick