Создание PDF-файла на Java - PullRequest
0 голосов
/ 02 мая 2018

Я пытаюсь создать PDF-файл из HTML, используя Java. Я добавил два файла jar.

  1. itextpdf-5.1.0
  2. xmlworker-5.5.6

Мой код:

import com.itextpdf.text.Document;
import com.itextpdf.text.pdf.PdfWriter;
import com.itextpdf.tool.xml.XMLWorkerHelper;
    String emailBody = "<html><body> This is my Project </body></html>";

    OutputStream file = new FileOutputStream(new File("E:\\Test.pdf"));
    Document document = new Document();
    PdfWriter writer = PdfWriter.getInstance(document, file);
    document.open();
    InputStream is = new ByteArrayInputStream(emailBody.getBytes());
    XMLWorkerHelper.getInstance().parseXHtml(writer, document, is);
    document.close();
    file.close();

Я получил ошибку из этой строки:

XMLWorkerHelper.getInstance().parseXHtml(writer, document, is);

Это бросает мне это исключение. Я ищу решение.

java.lang.NoSuchMethodError: com.itextpdf.text.log.LoggerFactory.getLogger(Ljava/lang/Class;)Lcom/itextpdf/text/log/Logger;
    at com.itextpdf.tool.xml.net.FileRetrieveImpl.<clinit>(FileRetrieveImpl.java:68)
    at com.itextpdf.tool.xml.css.StyleAttrCSSResolver.<init>(StyleAttrCSSResolver.java:116)
    at com.itextpdf.tool.xml.css.StyleAttrCSSResolver.<init>(StyleAttrCSSResolver.java:105)
    at com.itextpdf.tool.xml.css.StyleAttrCSSResolver.<init>(StyleAttrCSSResolver.java:93)
    at com.itextpdf.tool.xml.XMLWorkerHelper.parseXHtml(XMLWorkerHelper.java:212)
    at com.itextpdf.tool.xml.XMLWorkerHelper.parseXHtml(XMLWorkerHelper.java:184)
    at com.cds.controllers.subservlets.Admin.PDFDownload.manageDetails(PDFDownload.java:102)
    at com.cds.models.SubServletModel.handleRequest(SubServletModel.java:66)
    at com.cds.controllers.HDTController.doPost(HDTController.java:390)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:648)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
    at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)

Спасибо.

Ответы [ 2 ]

0 голосов
/ 02 мая 2018

У вас действительно есть конфликты с этими двумя библиотеками. Вы должны исключить переходную зависимость Loggeer от одного из них.

Какой инструмент сборки вы используете? Как maven, gradle и т. Д.

см. https://maven.apache.org/guides/introduction/introduction-to-optional-and-excludes-dependencies.html или https://docs.gradle.org/current/userguide/managing_transitive_dependencies.html

0 голосов
/ 02 мая 2018

Скорее всего, они не совместимы друг с другом. Попробуйте использовать следующие последние версии xmlworker-5.5.13.jar, itextpdf-5.5.13.jar

...