第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

流式合并 PDF

流式合并 PDF

鳳凰求蠱 2023-06-14 14:32:39
    我正在尋找一個 Java PDF 合并解決方案,我可以在從 REST API 獲?。▉碜?REST API 的示例)PDF 頁面部分的同時流式傳輸合并的 pdf。偽代碼應(yīng)該是這樣的:public void doGet(HttpServletRequest req, HttpServletResponse res) throws Exception {    sOut = res.getOutputStream();    MergeDocument merger = MergeDocument.merge(sOut);    for (int i = 0; i < 1000; i++) {        byte[] contentPDF = restClient.get("http://mywebsite.com/files/mypdf"+i+".pdf");        merger.append(contentPDF);        sOut.flush(); // sending merged PDF bytes now    }    sOut.close();}我的觀點是在開始將它發(fā)送給用戶之前,不要浪費內(nèi)存中所有 PDF 的堆內(nèi)存。換句話說,當(dāng)我從 rest 獲得“contentBytes pdf”時,我現(xiàn)在想將它作為流媒體發(fā)送給用戶。希望可以有人幫幫我 :)
查看完整描述

1 回答

?
收到一只叮咚

TA貢獻1821條經(jīng)驗 獲得超5個贊

使用 itextpdf


package com.example.demo.controller;


import com.itextpdf.text.Document;

import com.itextpdf.text.PageSize;

import com.itextpdf.text.pdf.PdfCopy;

import com.itextpdf.text.pdf.PdfReader;

import java.io.IOException;

import java.io.InputStream;

import java.io.OutputStream;

import java.util.ArrayList;

import java.util.List;

import javax.servlet.http.HttpServletResponse;

import org.springframework.web.bind.annotation.GetMapping;

import org.springframework.web.bind.annotation.RequestMapping;

import org.springframework.web.bind.annotation.RestController;


@RestController

@RequestMapping("/pdf")

public class PdfMerger {


  @GetMapping

  public void merge(HttpServletResponse response) {

    Document document = new Document(PageSize.LETTER);


    response.setContentType("application/pdf");

    response.setHeader("Content-disposition", "attachment; filename=\"merged.pdf\"");


    OutputStream outputStream = null;

    try {

      outputStream = response.getOutputStream();

      PdfCopy copy = new PdfCopy(document, outputStream);


      document.open();


      for (InputStream file : getPdfs()) {

        copy.addDocument(new PdfReader(file)); // writes directly to the output stream

      }


      outputStream.flush();

    } catch (Exception e) {

      e.printStackTrace();

    } finally {

      if (document.isOpen()) {

        document.close();

      }

      try {

        if (outputStream != null) {

          outputStream.close();

        }

      } catch (IOException ioe) {

        ioe.printStackTrace();

      }

    }

  }


  private List<InputStream> getPdfs() {

    List<InputStream> list = new ArrayList<>();


    for (int i = 0; i < 10; i++){

      list.add(PdfMerger.class.getResourceAsStream("/pdf/1.pdf"));

      list.add(PdfMerger.class.getResourceAsStream("/pdf/2.pdf"));

    }


    return list;

  }


}



查看完整回答
反對 回復(fù) 2023-06-14
  • 1 回答
  • 0 關(guān)注
  • 160 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號