2016-11-23 2 views
0

Подробности: Когда я нажимаю URL-адрес, он дает мне страницу jsp, которую нужно преобразовать в PDF-файл. теперь я использую ITextPDF в компоненте java для чтения jsp и записи его в формате PDF. Есть ли альтернативный процесс в муле без использования ITextPDF.Как конвертировать входящую страницу JSP в PDF в MULE?

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 я мог видеть, что файл PDF записывается и когда URL ударил он генерирует файл без типа (не PDF). любая помощь оценили !!

ответ

0

Ваше решение в основном стандартное приложение Java, работающее на Mule ESB. Mule предназначен для коммуникации и преобразования сообщений. Если вы хотите, чтобы превратить свое решение в полном объеме «Mule Solution» Я бы рекомендовал ....

  1. Использование HTTP: директива запрос для вызова страницы JSP, чтобы вернуться обратно HTML. Пример здесь: Mule ESB : Read HTML

  2. Написать трансформатор для преобразования сообщения текст/HTML в массив байтов (или какой-то другой тип), это необходимо будет сделать с помощью ITextPDF.

  3. Вывести массив байтов в файл.

Вы в основном делаете правильные шаги, но не используете какие-либо преимущества платформы Mule. Когда вы отделите решение таким образом, вы сможете легко написать файл PDF и не получить каких-либо странных результатов.

 Смежные вопросы

  • Нет связанных вопросов^_^