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?