2016-11-23 4 views
0

내용 : URL을 누르면 PDF로 변환해야하는 jsp 페이지가 나타납니다. 지금은 Java 구성 요소에서 ITextPDF를 사용하여 jsp를 읽고 PDF로 작성합니다. ITextPDF를 사용하지 않고 노새 안에서 다른 프로세스가 있습니까? 이 브라우저를 작성에도 불구하고들어오는 JSP 페이지를 MULE에서 PDF로 변환하는 방법은 무엇입니까?

import java.io.BufferedReader; 
import java.io.ByteArrayOutputStream; 
import java.io.FileOutputStream; 
import java.io.InputStreamReader; 
import java.net.HttpURLConnection; 
import java.net.URL; 

import org.mule.api.MuleEventContext; 
import org.mule.api.lifecycle.Callable; 
import org.mule.api.transport.PropertyScope; 

import com.itextpdf.text.Chunk; 
import com.itextpdf.text.Document; 
import com.itextpdf.text.PageSize; 
import com.itextpdf.text.pdf.PdfWriter; 
public class PDFConversion implements Callable { 

private final String USER_AGENT = "Mozilla/5.0"; 
StringBuffer response = new StringBuffer(); 
ByteArrayOutputStream bos; 
byte[] result; 
@Override 
public Object onCall(MuleEventContext eventContext) throws Exception { 
    try { 

     String productid=""; 
     String vertical=""; 
     String postcode=""; 
     String metertype=""; 
     String includeSolar=""; 
     productid=eventContext.getMessage().getInvocationProperty("productId"); 
     vertical=eventContext.getMessage().getInvocationProperty("vertical"); 
     postcode=eventContext.getMessage().getInvocationProperty("postcode"); 
     metertype=eventContext.getMessage().getInvocationProperty("metertype"); 
     includeSolar=eventContext.getMessage().getInvocationProperty("includeSolar"); 



     String url = "http://191.111.0.111:****/PDFService/electricitypdf?productid="+productid+"&vertical="+vertical+"&postcode="+postcode+"&metertype="+"&includeSolar="+includeSolar; 
     System.out.println(" URL -Request-----"+url); 
     URL obj = new URL(url); 
     HttpURLConnection con = (HttpURLConnection) obj.openConnection(); 
     // optional default is GET 
     con.setRequestMethod("GET"); 
     // add request header 
     con.setRequestProperty("User-Agent", USER_AGENT); 
     int responseCode = con.getResponseCode(); 
     System.out.println("\nSending 'GET' request to URL : " + url); 
     System.out.println("Response Code : " + responseCode); 
     BufferedReader in = new BufferedReader(new InputStreamReader(con.getInputStream())); 
     String inputLine; 
     bos = new ByteArrayOutputStream(); 
     int next = in.read(); 
     while (next > -1) { 
      bos.write(next); 
      next = in.read(); 
     } 
     bos.flush(); 

/ByteArrayOutputStream buffer = new ByteArrayOutputStream(); byte[] bytes = IOUtils.toByteArray(in); while ((inputLine = in.readLine()) != null) { response.append(inputLine); }/ in.close(); 

    } catch (Exception e) { 
     e.printStackTrace(); 
    } 

    Document document = new Document(PageSize.LETTER, 0.75F, 0.75F, 0.75F, 0.75F); 
    document.setPageSize(PageSize.LETTER.rotate()); 
    // PdfWriter.setPageEvent(new HeaderFooter(mmPDFDocument.right() - 
    // mmPDFDocument.left(), footer, path, headerType, unicodeFont)); 

    PdfWriter.getInstance(document, bos); 

    document.open(); 

    int numberpages=10; 
    for (int i = 1; i <= numberpages; i++) 
    {  
        document.add(new Chunk("Hello PDF Service - Page "+i)); 
        document.newPage();  
    }   
    FileOutputStream fos= new FileOutputStream("energy.pdf"); 
    fos.write(bos.toByteArray()); 
    fos.close(); 
    document.close(); 

    return bos; 
} 
} 

내가 PDF 파일이 작성되고 있음을 볼 수 있고 URL 명중 될 때 더 타입 (안 PDF)의 파일을 생성 PDF로 내용을 표시 할 수 없습니다. 어떤 도움을 주셔서 감사합니다!

답변

0

귀하의 솔루션은 기본적으로 ESB Mule에서 실행되는 표준 Java 응용 프로그램입니다. Mule은 메시지 기반 통신 및 변환을위한 것입니다. HTML을 다시 반환 할 JSP 페이지를 호출 요청 지시자 : 당신은 HTTP를 사용하여 전체 "뮬 솔루션"나는 추천 할 것입니다 ....

  1. 에 솔루션을 설정하고 싶어합니다. 여기 예 : Mule ESB : Read HTML

  2. 바이트 배열 (또는 다른 유형)이 ITextPDF을 사용하여 수행되어야 할 것이다에 텍스트/HTML 메시지를 변환하는 변환기를 쓴다.

  3. 파일에 바이트 배열을 출력합니다.

기본적으로 정확한 단계를 수행하고 있지만 Mule 플랫폼의 이점은 사용하지 않습니다. 이런 식으로 솔루션을 분리하면 pdf 파일을 쉽게 작성할 수 있고 이상한 결과를 얻을 수 없습니다.