2014-10-21 4 views
1

Я искал решение, но до сих пор ничего не дает мне ответа, который я хочу. Мой вопрос заключается в том, как преобразовать существующую страницу jsp в pdf, используя itext, возможно, после нажатия кнопки. Может ли кто-нибудь дать мне правильную внешность.jsp to pdf в java с itext

Все, что я могу найти, это методы, подобные этому.

public String createHtmlSnippet(Movie movie) { 
    StringBuffer buf = new StringBuffer("\t<span class=\"title\">"); 
    buf.append(movie.getMovieTitle()); 
    buf.append("</span><br />\n"); 
    buf.append("\t<ul>\n"); 
    for (Country country : movie.getCountries()) { 
     buf.append("\t\t<li class=\"country\">"); 
     buf.append(country.getCountry()); 
     buf.append("</li>\n"); 
    } 
    buf.append("\t</ul>\n"); 
    buf.append("\tYear: <i>"); 
    buf.append(movie.getYear()); 
    buf.append(" minutes</i><br />\n"); 
    buf.append("\tDuration: <i>"); 
    buf.append(movie.getDuration()); 
    buf.append(" minutes</i><br />\n"); 
    buf.append("\t<ul>\n"); 
    for (Director director : movie.getDirectors()) { 
     buf.append("\t\t<li><span class=\"director\">"); 
     buf.append(director.getName()); 
     buf.append(", "); 
     buf.append(director.getGivenName()); 
     buf.append("</span></li>\n"); 
    } 
    buf.append("\t</ul>\n"); 
    return buf.toString(); 
} 

Я хочу указать URL-адрес и создать и скачать pdf-файл.

+0

Это одна из проблем, им облицовочных. Есть ли способ сделать это? –

ответ

0

Вы можете вызвать сервлет нажатием кнопки. И в сервлете вы можете использовать PDF Renderer. Он напрямую преобразует HTML в PDF. хотя у него есть определенные Ограничения, такие как все теги должны быть закрыты, как это делается <input/> не работает.

Вам нужно было бы сделать <input></input>. Но выход потрясающий и быстрый, и с его HTML вы можете легко его изменить. Он внутренне использует iText. Если вы используете iText напрямую, это будет утомительным процессом.

И ваш вопрос должен быть HTML в PDF не JSP в Pdf вызвать JSP получит выполнить, чтобы произвести некоторые HTML, в конце концов так или иначе

Вы весь HTML должны быть в формате StringBuffer или String.

Скачать с here

Update Код:

// First create a temporry file 
     File file = File.createTempFile("temp","pdf"); 
     String html= "<HMTL><BODY>Hello</BODY></HTML>"; // HTML content 

    /* in your case it would be File f = new File("URL OF PAGE"); 
    * */ 
    // Write the contents intot he file. 
    PrintWriter printWriter = new PrintWriter(file); 
    printWriter.print(html); // Write String in Temp file 
    printWriter.close(); 

    String s ="YourFile.pdf"; // Name of Actual PDf file 
    PDFRenderer.renderToPDF(file,s);// Second parameter is the actual PDF file 
    // The PDF is now created in the default location of you web application 
    // Now just read it and send it in the response. 
    File finalPDf = new File(s); // Reference to the newly created PDF file 
    PrintWriter out = response.getWriter(); 
    response.setContentType("application/pdf"); 
    IOUtils.copy(new InputStreamReader(new FileInputStream(s)), out); 
    // The above method just reads from the PDF file and puts the data in the response object 
    // IOUtils fully qualified name: org.apache.commons.io.IOUtils 
    // PDF Renderer fully qualified name: org.xhtmlrenderer.simple.PDFRenderer 
+0

OP утверждает: «Я хочу дать url и сгенерировать и загрузить pdf.» Как ваше решение адресовано? Я предполагаю, что ваш путь можно вызвать через JS или JQuery - правильно? –

+0

Yup. Я думаю, вы можете просто передать URL-адрес страницы в рендер вместо строки. Это должно было бы. Мне нужно будет отсылать документы, чтобы быть уверенными. Мои вышеупомянутые методы отлично работают, я их протестировал. – Oliver

+0

не могли бы вы привести пример? –

-1

У меня было то же требование docx4j работал me.It имеет много помощников docx4j documentation

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