Я создаю PDF из динамического HTML, но получаю нежелательный шаблон в PDF с помощью node.js - PullRequest
0 голосов
/ 23 января 2019

Я создаю pdf из динамического Html, используя пакет node.js htmltopdf.У меня есть список категорий врачей и набор данных, в которых есть набор врачей в каждом ключе категории.Но когда я генерирую pdf, он дает мне неправильный формат pdf, который мне не нужен.

У меня есть список категорий врачей в массиве, подобном этому

  let categories = ['Physician', 'Psychiatrist','Audiology',.... so on]

ИУ меня есть такой набор данных

  let masterRecord = {
   'Physician'  : [{doctor-1 object},{doctor-1 object}, ... so on], 
   'Audiology'  : [{doctor-1 object},{doctor-1 object}, ... so on],
   'Psychiatrist'  : [{doctor-1 object},{doctor-1 object}, ... so on], 
   .... so on      
  }

Я пробовал этот код

   let masterRecord = body.masterRecord;
   let categories = Object.keys(masterRecord);
   categories.forEach(category=>{
   masterRecord[category].forEach(doctor=>{

    htmlData.partialTemplate += `<div class="data-section">
    <h3 class="subtitle fancy" style="font-size: 24px;"><span>${category} 
    </span></h3>
    <div class="data-row">
    <b><p class="m-0 font-16">${doctor.Name},${doctor.Credentials}</p></b>
    <p class="m-0 font-16">${doctor.Street}, ${doctor.City}, 
    ${doctor.State} ${doctor.Zip_Code}</p>
    <div class="tele-fax-div">
<p class="m-0 font-16">Telephone: ${doctor.Telephone}</p>
<p class="m-0 pl-5 font-16">Fax: ${doctor.Fax}</p> 
         </div>
        </div>
  </div>`
      })
})
htmlData.partialTemplate  = htmlData.partialTemplate + ` </div>
                </div>
            </body>
            </html>`
        let finalHtml = htmlData.partialTemplate;
        // console.log(finalHtml);
htmltopdf.createFromHtml(finalHtml, "doctors.pdf", function (err, success) { 
    if(err){
        res.status(201).json({status : 201, success : false, Error : err});
    }
    if (success) {
        res.status(200).json({status : 200, success : true, message : success});
    }
});

Я ожидаю, что формат PDF, такой как

                        Doctor Category-1 Name Here
     Doctor-1 Info Here
     Doctor-2 Info Here
     Doctor-3 Info Here
     Doctor-4 Info Here

                        Doctor Category-2 Name Here
     Doctor-1 Info Here
     Doctor-2 Info Here
     Doctor-3 Info Here
     Doctor-4 Info Here

                        Doctor Category-3 Name Here
     Doctor-1 Info Here
     Doctor-2 Info Here
     Doctor-3 Info Here
     Doctor-4 Info Here

Но из вышеупомянутого кода я получаюpdf вот так

                       Doctor Category-1 Name Here
     Doctor-1 Info Here
                       Doctor Category-1 Name Here
     Doctor-2 Info Here
                       Doctor Category-1 Name Here
     Doctor-3 Info Here
                       Doctor Category-1 Name Here
     Doctor-4 Info Here

                       Doctor Category-2 Name Here
     Doctor-1 Info Here
                       Doctor Category-2 Name Here
     Doctor-2 Info Here
                       Doctor Category-2 Name Here
     Doctor-3 Info Here
                       Doctor Category-2 Name Here
     Doctor-4 Info Here

                       Doctor Category-3 Name Here
     Doctor-1 Info Here
                       Doctor Category-3 Name Here
     Doctor-2 Info Here
                       Doctor Category-3 Name Here
     Doctor-3 Info Here
                       Doctor Category-3 Name Here
     Doctor-4 Info Here

Как мне получить желаемый формат?

1 Ответ

0 голосов
/ 23 января 2019

Вы должны вынуть заголовок data-section div и h3 из внутреннего цикла, в противном случае он записывается один раз для каждого Доктора.

Было бы что-то вроде этого:

...
categories.forEach( category =>
{
    htmlData.partialTemplate += `<div class="data-section">
    <h3 class="subtitle fancy" style="font-size: 24px;"><span>${category}</span></h3>`

    masterRecord[category].forEach(doctor => 
    {
        htmlData.partialTemplate += `<div class="data-row">
        <b><p class="m-0 font-16">${doctor.Name},${doctor.Credentials}</p></b>
        <p class="m-0 font-16">${doctor.Street}, ${doctor.City}, 
                  ${doctor.State} ${doctor.Zip_Code}</p>
                <div class="tele-fax-div">
                    <p class="m-0 font-16">Telephone: ${doctor.Telephone}</p>
                    <p class="m-0 pl-5 font-16">Fax: ${doctor.Fax}</p> 
                </div>
          </div>`
      })

        htmlData.partialTemplate += `</div>`

})
...
...