java實現pdf檔案下載

來源:互聯網
上載者:User

          實現點擊超連結下載pdf檔案,該pdf檔案的內容又跟jsp頁面的資料有關。實質就是一個列印吧。

       若對此列印有一個pdf的template,要先載入template,即把template裡面的東西讀出來。

   PdfReader reader = new PdfReader("SimpleRegistrationForm.pdf");

設定頁面的大小

Rectangle rectPageSize = reader.getPageSizeWithRotation(1);

  Document doc = new Document(rectPageSize, 40, 40, 40, 40);// 其餘4個參數,設定了頁面的4個邊距

清空response,不這麼做的話有時對程式有影響,因為在此之前有可能也用到了response,若不reset後面的setContentType()有可能無效.

  response.reset();

  setContentType()設定檔案類型為pdf
  response.setContentType("application/pdf");

設定下載檔案的名稱
  response.setHeader("content-disposition", "attachment; filename=test.pdf");
  ByteArrayOutputStream baos = new ByteArrayOutputStream();  // 設定字型
  BaseFont font = BaseFont.createFont("HeiseiMin-W3", "UniJIS-UCS2-HW-H",
    BaseFont.NOT_EMBEDDED);
  // Font font = FontFactory.getFont(FontFactory.HELVETICA, 14, Font.BOLD,
  // Color.BLUE);

  PdfWriter pw = PdfWriter.getInstance(doc, baos);

  doc.open();

  PdfContentByte pcb = pw.getDirectContent();

//在此加入商務邏輯

  pcb.beginText();
  pcb.setFontAndSize(font, 10);
  String page = String.valueOf(1);
  pcb.showTextAligned(PdfContentByte.ALIGN_LEFT, page, 530, 40, 0);
  pcb.endText();

  doc.close();

  // Send PDF to client
  baos.writeTo(response.getOutputStream());
  baos.close();

以上是用流輸出檔案內容,比產生臨時檔案再輸出應該簡單快捷些。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.