use rocket::{response::{Responder, self}, Request, Response, http::{Header, ContentType}}; use std::io::Cursor; pub struct PdfStream { data: Vec, } impl PdfStream { pub fn new(data: Vec) -> PdfStream { PdfStream { data } } } #[rocket::async_trait] impl<'r> Responder<'r, 'static> for PdfStream { fn respond_to(self, _: &'r Request<'_>) -> response::Result<'static> { Response::build() .header(ContentType::PDF) .sized_body(self.data.len(), Cursor::new(self.data)) .ok() } }