Как сохранить данные между методами - PullRequest
0 голосов
/ 13 декабря 2018

У меня есть контроллер, который создает много изображений из pdf (pdfBox). Я сохраняю все изображения в список. И мне нужно отправить одну картинку на просмотр, когда я нажимаю кнопку.или введите значение

public class Pdf{
     public byte[] PDFCREATE(){
      byte[] pdf = ...;
        //Code for creating pdf using Itext
       return pdf;

    }
}

    public List<byte[]> getImage(byte[] pdf) throws Exception{
        ByteArrayOutputStream baos = new ByteArrayOutputStream();
       List<byte> listImg = new List()<>;
        try (final PDDocument document = PDDocument.load(file)){
            PDFRenderer pdfRenderer = new PDFRenderer(document);
            for (int page = 0; page < document.getNumberOfPages(); ++page)
            {
                BufferedImage bim = pdfRenderer.renderImage(page)
                ImageIO.write(bim, "png",baos);
                   listImg.add(baos)

            }
            document.close();
        } catch (IOException e){
            System.err.println("Exception while trying to create pdf document - " + e);
        }
        return baos.toByteArray();

С представлением i post :

   public ResponseEntity<?> CreateFont(int pictureNumber ) {
        PDF pdf= new PDF();
PdfToImg pdfToImg = new PdfToImg();
List<byte []> fileBytes = pdfToImg.getImage(pdf.PDFCREATE());
byte[] encoded= Base64.encodeBase64(fileBytes.get(pictureNumber ));
String encodedString = new String(encoded);

            return new ResponseEntity<String>(
                    "<img src='data:image/jpeg;base64,"  + encodedString + "' alt='' width='420' height='580'>",
                    HttpStatus.OK);

Но здесь я должен каждый раз создавать pdf.Можно ли просто сохранить значения из getImage в список?. И когда пользователь вводит значение (pictureNumber) или каждый раз нажимает кнопку, чтобы не создавать новый pdf. И вместо этого принимать значения из списка. И создаватьНовый список после обновления страницы Мне нужно где-то хранить файл списка файлов, но где?

Извините за мой английский

1 Ответ

0 голосов
/ 13 декабря 2018

Это может вам помочь:

private static Map<Integer, String> pictureMap = new HashMap<>();
private static PDF pdf;

public ResponseEntity<?> CreateFont(int pictureNumber) {
    if(pictureMap.containsKey(pictureNumber))
        return response(pictureMap.get(pictureNumber));
    if(pdf == null)
        pdf = new PDF();
    PdfToImg pdfToImg = new PdfToImg();
    List<byte[]> fileBytes = pdfToImg.getImage(pdf.PDFCREATE());
    byte[] encoded = Base64.encodeBase64(fileBytes.get(pictureNumber));
    String encodedString = new String(encoded);
    pictureMap.put(pictureNumber, encodedString);

    return response(encodedString);
}


private ResponseEntity response(String encodedString){
    return new ResponseEntity<String>(
        "<img src='data:image/jpeg;base64," + encodedString + "' alt='' width='420' height='580'>",
        HttpStatus.OK);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...