J'écris un service de repos qui téléchargera le PDF lorsque l'utilisateur accédait à ce service sur la machine d'utilisateurs. Vous trouverez ci-dessous le code de ma classe de contrôleur.
Lorsque j'ai essayé d'accéder à l'URL ci-dessous dans le navigateur, il télécharge un fichier .json et non un fichier PDF. P>
URL: - http: // localhost: 8080 / test- Service / DownloadPDF? Userid = ABCD & DemandingLocation = 6 & OrderID = 06006030 P> BlockQuote>
J'ai essayé d'utiliser le même code mentionné dans des sites ci-dessous. Il semble que le code droit, mais pas sûr de la raison pour laquelle cela ne fonctionne pas. http://www.java2novice.com/resful-web -Services / jax-rs-télécharger-file / https://www.javatpoint.com/jax-rs-file-download- Exemple p>
ci-dessous est la méthode dans le contrôleur. P>
{ "entity":"C:\\opt\\autobol\\logs\\autobol\\test2.pdf", "status":200, "metadata":{ "Content-Disposition":[ "attachment; filename=\"javatpoint_pdf.pdf\"" ] }, "annotations":null, "entityClass":"java.io.File", "genericType":null, "length":-1, "language":null, "location":null, "lastModified":null, "date":null, "closed":false, "cookies":{ }, "statusInfo":"OK", "stringHeaders":{ "Content-Disposition":[ "attachment; filename=\"javatpoint_pdf.pdf\"" ] }, "links":[ ], "entityTag":null, "allowedMethods":[ ], "mediaType":null, "headers":{ "Content-Disposition":[ "attachment; filename=\"javatpoint_pdf.pdf\"" ] } }
3 Réponses :
Essayez ceci
Désolé mais je ne suis pas capable d'obtenir ces cours. Sont-ils appartenant à Javaw.RS Package?
Voici un exemple de démarrage à ressort. Vous pouvez renvoyer cet exemple HTTPS : //docs.spring.io/spring-boot/docs/current/reeference/html/getting-started-first-application.html et joindre la classe ci-dessous dans le projet
import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.*; import org.springframework.http.*; import java.io.File; import java.nio.file.Files; @Controller public class DemoController { @RequestMapping(value="/getpdf", method=RequestMethod.GET) public ResponseEntity<byte[]> getPDF() { File file = new File("sample.pdf"); // change to relative path HttpHeaders headers = new HttpHeaders(); headers.setContentType(MediaType.APPLICATION_PDF); String filename = "output.pdf"; headers.setContentDispositionFormData(filename, filename); headers.setCacheControl("must-revalidate, post-check=0, pre-check=0"); ResponseEntity<byte[]> response = null; try { response = new org.springframework.http.ResponseEntity<>(Files.readAllBytes(file.toPath()), headers, org.springframework.http.HttpStatus.OK); } catch (java.io.IOException e) { e.printStackTrace(); } return response; } }
Essayez ceci à l'aide de Spring RestController
@PostMapping(value = "/slip", headers = "Accept=application/json", produces = "application/pdf") public ResponseEntity<Resource> generateSalarySlip(HttpServletRequest request, @RequestBody Locale locale) { ... ... File file = new File(fileName); HttpHeaders header = new HttpHeaders(); header.setContentType(MediaType.parseMediaType("application/pdf")); header.add(HttpHeaders.CONTENT_DISPOSITION, "attachment; filename=salaryslip.pdf"); header.add("Cache-Control", "no-cache, no-store, must-revalidate"); header.add("Pragma", "no-cache"); header.add("Expires", "0"); InputStream targetStream = new FileInputStream(file); Resource resource = new InputStreamResource(targetStream) return ResponseEntity.ok() .headers(header) .contentLength(file.length()) .contentType(MediaType.parseMediaType("application/pdf")) .body(resource); }
pouvez-vous essayer: @produces (mediatype.application_octet_stream)
@Raj j'ai essayé l'option que vous avez suggérée mais toujours downloadpdf.json Fichier reçoit le téléchargement et non PDF
Quelqu'un peut-il m'aider avec ça.
Pouvez-vous mettre entier votre code source dans GitHub et partager le lien?