0
votes

Téléchargez PDF à partir de services Web reposants

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\""
      ]
   }
}


4 commentaires

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?


3 Réponses :


0
votes

Essayez ceci xxx


1 commentaires

Désolé mais je ne suis pas capable d'obtenir ces cours. Sont-ils appartenant à Javaw.RS Package?



0
votes

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;
    }
}


0 commentaires

0
votes

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);

}


0 commentaires