Экспорт HTML с данными в MS Word - PullRequest
0 голосов
/ 24 сентября 2019

У нас есть требование, когда мы просим наших клиентов заполнить документ BRD, который находится в HTML-файле.HTML состоит из переключателей, текстового поля и т. Д., А также цветов и таблицы.У нас будет кнопка, которая при нажатии должна вызывать класс java, который экспортирует HTML вместе с входными данными клиента в текстовый документ.Мы успешно конвертируем HTML-код, который дается непосредственно в виде строки в Java-программе, в документ Word.У нас проблемы с отправкой HTML вместе с данными.

Может кто-нибудь сообщить мне, как мне этого добиться?Или есть какой-нибудь лучший способ, которым мы можем сделать это.

public class XhtmlToDocx {

    public static void main(String[] args) throws Exception {

        //String html = "<html><form><input type=\"checkbox\" name=\"xhtml_mp_tutorial_chapter\" value=\"1\"/></form></html>";


String html = "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">"+
"<html xmlns=\"http://www.w3.org/1999/xhtml\">"+
"<head>"+
"<meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\">"+
"<title>Untitled Form</title>"+
"<link rel=\"stylesheet\" type=\"text/css\" href=\"view.css\" media=\"all\">"+
"<script type=\"text/javascript\" src=\"view.js\"></script>"+
"<script type=\"text/javascript\" src=\"calendar.js\"></script>"+
"</head>"+
"<body id=\"main_body\" >"+
"   "+
"   <img id=\"top\" src=\"top.png\" alt=\"\">"+
"   <div id=\"form_container\">"+
"   "+
"       <h1><a>Untitled Form</a></h1>"+
"       <form id=\"form_82495\" class=\"appnitro\"  method=\"post\" action=\"\">"+
"                   <div class=\"form_description\">"+
"           <h2>Untitled Form</h2>"+
"           <p>This is your form description. Click here to edit.</p>"+
"       </div>                      "+
"           <ul >"+
"           "+
"                   <li id=\"li_1\" >"+
"       <label class=\"description\" for=\"element_1\">Text </label>"+
"       <div>"+
"           <input id=\"element_1\" name=\"element_1\" class=\"element text medium\" type=\"text\" maxlength=\"255\" value=\"\"/> "+
"       </div> "+
"       </li>       <li id=\"li_3\" >"+
"       <label class=\"description\" for=\"element_3\">Multiple Choice </label>"+
"       <span>"+
"           <input id=\"element_3_1\" name=\"element_3\" class=\"element radio\" type=\"radio\" value=\"1\" />"+
"<label class=\"choice\" for=\"element_3_1\">First option</label>"+
"<input id=\"element_3_2\" name=\"element_3\" class=\"element radio\" type=\"radio\" value=\"2\" />"+
"<label class=\"choice\" for=\"element_3_2\">Second option</label>"+
"<input id=\"element_3_3\" name=\"element_3\" class=\"element radio\" type=\"radio\" value=\"3\" />"+
"<label class=\"choice\" for=\"element_3_3\">Third option</label>"+
""+
"       </span> "+
"       </li>       <li id=\"li_2\" >"+
"       <label class=\"description\" for=\"element_2\">Date </label>"+
"       <span>"+
"           <input id=\"element_2_1\" name=\"element_2_1\" class=\"element text\" size=\"2\" maxlength=\"2\" value=\"\" type=\"text\"> /"+
"           <label for=\"element_2_1\">MM</label>"+
"       </span>"+
"       <span>"+
"           <input id=\"element_2_2\" name=\"element_2_2\" class=\"element text\" size=\"2\" maxlength=\"2\" value=\"\" type=\"text\"> /"+
"           <label for=\"element_2_2\">DD</label>"+
"       </span>"+
"       <span>"+
"           <input id=\"element_2_3\" name=\"element_2_3\" class=\"element text\" size=\"4\" maxlength=\"4\" value=\"\" type=\"text\">"+
"           <label for=\"element_2_3\">YYYY</label>"+
"       </span>"+
"   "+
"       <span id=\"calendar_2\">"+
"           <img id=\"cal_img_2\" class=\"datepicker\" src=\"calendar.gif\" alt=\"Pick a date.\">   "+
"       </span>"+
"       <script type=\"text/javascript\">"+
"           Calendar.setup({"+
"           inputField   : \"element_2_3\","+
"           baseField    : \"element_2\","+
"           displayArea  : \"calendar_2\","+
"           button       : \"cal_img_2\","+
"           ifFormat     : \"%B %e, %Y\","+
"           onSelect     : selectDate"+
"           });"+
"       </script>"+
"        "+
"       </li>"+
"           "+
"                   <li class=\"buttons\">"+
"               <input type=\"hidden\" name=\"form_id\" value=\"82495\" />"+
"               "+
"               <input id=\"saveForm\" class=\"button_text\" type=\"submit\" name=\"submit\" value=\"Submit\" />"+
"       </li>"+
"           </ul>"+
"       </form> "+
"       <div id=\"footer\">"+
"           Generated by <a href=\"http://www.phpform.org\">pForm</a>"+
"       </div>"+
"   </div>"+
"   <img id=\"bottom\" src=\"bottom.png\" alt=\"\">"+
"   </body>"+
"</html>";


        WordprocessingMLPackage wordMLPackage = WordprocessingMLPackage.createPackage();
        AlternativeFormatInputPart afiPart = new AlternativeFormatInputPart(new PartName("/hw.html"));
        afiPart.setBinaryData(html.getBytes());
        afiPart.setContentType(new ContentType("text/html"));
        Relationship altChunkRel = wordMLPackage.getMainDocumentPart().addTargetPart(afiPart);

        // .. the bit in document body
        CTAltChunk ac = Context.getWmlObjectFactory().createCTAltChunk();
        ac.setId(altChunkRel.getId() );
        wordMLPackage.getMainDocumentPart().addObject(ac);

        // .. content type
        wordMLPackage.getContentTypeManager().addDefaultContentType("html", "text/html");
        wordMLPackage.save(new java.io.File("C:/Users/****/Downloads/Word.docx"));

  }
}

1 Ответ

1 голос
/ 24 сентября 2019

Проблема, с которой вы столкнулись, по-видимому, возникает из-за того, что вы читаете статическую HTML-страницу, а не отправленную страницу.

Чтобы получить полное содержание отправленного HTML-файла, сначала необходимо отправить форму.с данными, создайте их как статическую HTML-страницу, а затем перейдите на эту страницу с помощью XMLSerializer или URLStreamReader, чтобы получить окончательные данные для передачи в текстовую часть вашей программы.

Я не предоставляю точного решенияс кодом, как я полагаю, вы сможете реализовать решение самостоятельно, и вы в основном застряли на логике.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...