Rumah  >  Soal Jawab  >  teks badan

Pemegang tempat dalam templat docx tidak diganti

Saya menggunakan perpustakaan ini untuk menggantikan beberapa ruang letak dengan templat docx dan menjana berbilang dokumen. Saya menggunakan novo dan vue neutral di bahagian hadapan, dan saya telah mencipta kaedah yang menghantar fail dan data docx yang dipilih ke perpustakaan untuk diproses. Saya gunakan untuk gelung dengan cara ini

// putting all the desired data into a specific array
for(let i = 0; i < this.selectedData.length; i++){
  this.dataPlaceholders.push({
   key1: val1,
   key2: val2
  })
}
//call the library to get documents

for(let i; i < this.dataPlaceholders.length; i++){
 this.docxTemplate.process(template, this.dataPlaceholders[i])
}

Data yang akan dihantar digabungkan daripada kedua-dua tatasusunan dan jika saya konsol log mereka, saya dapat melihat semua si berada di tempatnya. Seperti yang dinyatakan dalam dokumentasi, saya menggunakan kurungan segi empat sama {} 来设置占位符,并且占位符的名称与 dataPlaceholders untuk menamakan setiap kunci dalam kelompok yang sama. Selepas ujian, saya mendapati bahawa saya dapat menjana dokumen yang berbeza, tetapi ruang letak tidak diganti dan akan ada medan kosong dalam dokumen itu.

Bagaimana saya boleh membetulkannya untuk membuat ini berfungsi dengan betul?

P粉436410586P粉436410586188 hari yang lalu333

membalas semua(1)saya akan balas

  • P粉394812277

    P粉3948122772024-03-31 00:57:29

    Selepas mencuba dan membaca beberapa soalan tentang cara melaksanakan panggilan tak segerak dalam gelung, saya memilih untuk menggunakan fungsi Array.prototype.map dan ia berfungsi dengan baik. Saya telah mengubah suai kaedah vue yang memanggil perpustakaan sebagai kaedah async, tetapi saya telah menyimpan blok then supaya saya boleh mendapatkan dokumen yang diproses selepas perpustakaan selesai memproses.

    this.dataPlaceholders.map( async (data, i) => {
      let filename = data.supplier + '.docx'
      this.docxTemplate.process(template, data).then( (result) => {
        // code to download files here
         let a = document.createElement('a')
         let downloadLink = URL.createObjectURL(result)
         a.href = downloadLink
         a.download = filename
         a.click()
      })
    })
    

    Satu-satunya perkara yang perlu diselesaikan ialah cara membatalkan url blob selepas memuat turun semua fail.

    balas
    0
  • Batalbalas