2013-07-17 5 views
1

특정 데이터를 pdf 파일로 변환해야합니다. 이를 위해 서버의 TablePdf.pdf에 데이터를 저장하는 다음 코드를 wriitten했습니다. (여기에 pdf 파일은 C에 저장됩니다 : \ 디렉토리)서버에서 PDF 파일 다운로드

public String generatePdf() throws Exception 
{ 
Font font = FontFactory.getFont("Ms Dialog Light"); 
BaseFont pdfFont = font.getBaseFont(); 

// TODO Auto-generated method stub 
HashMap inputMap = new HashMap(); 

inputMap.put(TableProperties.PDF_PATH, "c://TablePdf.pdf"); 
inputMap.put(TableProperties.PDF_TABLE_NAME, "Table"); 

inputMap.put(TableProperties.PDF_HEIGHT, "1000"); 
inputMap.put(TableProperties.PDF_WIDTH, "1500"); 

ArrayList<String> columnNameList = new ArrayList<String>(); 
ArrayList<String> dataList = new ArrayList<String>(); 
ArrayList<String> columnWidthList = new ArrayList<String>(); 

columnNameList.add("Col1"); 
columnNameList.add("Col2"); 
columnNameList.add("Col3"); 
columnNameList.add("Col4"); 
columnNameList.add("Col5"); 

columnWidthList.add("1"); 
columnWidthList.add("2"); 
columnWidthList.add("2"); 
columnWidthList.add("3"); 
columnWidthList.add("1"); 

for (int i = 0; i < 9; i++) 
    { 
    dataList.add("Id" + i); 
    dataList.add("Name is = " + Math.random() * i); 
    dataList.add("Field Value1 is = " + Math.random() * i); 
    dataList.add("Field Value2 is = " + Math.random() * i); 
    dataList.add("Field Value3 is = " + Math.random() * i); 
    } 

inputMap.put(TableProperties.PDF_TABLE_COLUMN_NUMBER, "5"); 
inputMap.put(TableProperties.PDF_TABLE_COLUMN_NAME, columnNameList); 
inputMap.put(TableProperties.PDF_TABLE_COLUMN_VALUES, dataList); 

inputMap.put(TableProperties.PDF_TABLE_HEADER_WIDTH, columnWidthList); 

inputMap.put(TableProperties.PDF_HEADER, "   Hello\n\n"); 
inputMap.put(TableProperties.PDF_HEADER_FONT_NAME, pdfFont); 
inputMap.put(TableProperties.PDF_HEADER_FONT_SIZE, "20.0"); 
inputMap.put(TableProperties.PDF_HEADER_ALIGNMENT, Element.ALIGN_LEFT); 

inputMap.put(TableProperties.PDF_FOOTER, "    Tata"); 
inputMap.put(TableProperties.PDF_FOOTER_FONT_NAME, pdfFont); 
inputMap.put(TableProperties.PDF_FOOTER_FONT_SIZE, "9.0"); 
inputMap.put(TableProperties.PDF_FOOTER_ALIGNMENT, Element.ALIGN_RIGHT); 

inputMap.put(TableProperties.PDF_TABLE_CELL_HEIGHT, "6.0"); 
inputMap.put(TableProperties.PDF_TABLE_HEADER_HEIGHT, "4.0"); 

inputMap.put(TableProperties.PDF_TABLE_ALTERNATE_BACKGROUND_COLOR, "Y"); 
inputMap.put(TableProperties.PDF_TABLE_BACKGROUND_COLOR, BaseColor.CYAN); 
inputMap.put(TableProperties.PDF_TABLE_CELL_ALIGNMENT, new Integer(Element.ALIGN_LEFT)); 
inputMap.put(TableProperties.PDF_TABLE_FONT_NAME, pdfFont); 
inputMap.put(TableProperties.PDF_TABLE_FONT_SIZE, "6.0"); 
inputMap.put(TableProperties.PDF_TABLE_HEADER_ALIGNMENT, new Integer(Element.ALIGN_CENTER)); 
inputMap.put(TableProperties.PDF_TABLE_HEADER_BACKGROUND_COLOR, BaseColor.GRAY); 

inputMap.put(TableProperties.PDF_TABLE_HEADER_FONT_NAME, FontFactory.getFont("Times-Roman").getBaseFont()); 
inputMap.put(TableProperties.PDF_TABLE_HEADER_FONT_SIZE, "6.0"); 

CreateTable crtTbl = new CreateTable(); 
    crtTbl.createTable(inputMap); 
} 

지금 나는 그들이 pdf 파일을 다운로드 할 수 있도록 클라이언트를 허용해야합니다.

-------------------- EDITED ------------------------- -------

아래는 PDF 파일을 다운로드 할 수있는 jsp 코드입니다. 콘솔에 오류가 나타나지 않지만 파일이 다운로드되지 않습니다.

<%@ page import="java.util.*,java.io.*"%> 
<%@ page language="java"%> 

<% 
    try 
    { 

     response.setContentType ("application/pdf");  
     //set the header and also the Name by which user will be prompted to save 
     response.setHeader ("Content-Disposition", "attachment;filename=TablePdf.pdf"); 

     File f = new File ("C:\\TablePdf.pdf"); 

     InputStream inputStream = new FileInputStream(f); 
     ServletOutputStream servletOutputStream = response.getOutputStream(); 
     int bit = 256; 
     int i = 0; 
     try 
     { 

      while ((bit) >= 0) 
      { 
       bit = inputStream.read(); 
       servletOutputStream.write(bit); 
      } 
      System.out.println("" +bit); 


      } 
      catch (Exception ioe) 
      { 
       ioe.printStackTrace(System.out); 
      } 
      servletOutputStream.flush(); 
      //outs.close(); 
      inputStream.close();  
    } 
    catch(Exception e) 
    { 

    } 

%> 
+0

서버 란 무엇이며 클라이언트가 될 수있는 것은 무엇입니까? 여기에 게시 한 홀 코드가 질문에 대답하는 것과 관련이 없습니다. – A4L

답변

2

많은 옵션이 있습니다. 그 중 2 :

  • 간단한 아파치 서버를 설치 - 당신은 htdocs에 아래의 PDF 파일을 저장하고, 그들이 액세스 할 수
  • 가지고 바람둥이 (또는 다른 서블릿 컨테이너) 및 파일을 읽는 서블릿을 디렉토리에 저장되고 다운로드를 위해 스트리밍됩니다. 간단히 말해서, 이것은 FileInputStream에서 response.getOutputStream()으로 바이트를 전송하여 수행됩니다. 그에 따라 Content-Disposition 헤더를 설정하십시오.
+0

많이 검색되었지만 파일 다운로드에 대한 작업 예제를 찾을 수 없습니다. 나는 바람둥이를 사용하고 있습니다. – user2551629

+2

http://stackoverflow.com/a/14281064/203907 – Bozho

+0

plz이 질문에서 편집 된 부분을 살펴 봅니다. – user2551629