Pemegang tempat dalam templat docx tidak diganti
P粉436410586
P粉436410586 2024-03-30 09:15:01
0
1
386

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粉436410586
P粉436410586

membalas semua(1)
P粉394812277

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. p>

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.

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!