Je travaille sur un tableau HTML et j'imprime ce tableau sur l'imprimante en utilisant html-to-paper
dans vue.js, ce que je fais, c'est en cliquant sur ajouter en créant une nouvelle ligne, puis en cliquant sur imprimer, j'essaie d'imprimer le tableau mais il ne prend pas toutes les données ne montrant que des cellules vides
Code App.vue
<template>
<div id="app">
<button type="button" @click="btnOnClick">Add</button>
<div id="printMe">
<table class="table table-striped table-hover table-bordered mainTable" id="Table">
<thead>
<tr>
<th class="itemName">Item Name</th>
<th>Quantity</th>
<th>Selling Price</th>
<th>Amount</th>
</tr>
</thead>
<tbody>
<tr v-for="(tableData, k) in tableDatas" :key="k">
<td>
<input class="form-control" readonly v-model="tableData.itemname" />
</td>
<td>
<input class="form-control text-right" type="text" min="0" step=".01" v-model="tableData.quantity" v-on:keyup="calculateQty(tableData)" />
</td>
<td>
<input class="form-control text-right" type="text" min="0" step=".01" v-model="tableData.sellingprice" v-on:keyup="calculateSPrice(tableData)" />
</td>
<td>
<input readonly class="form-control text-right" type="text" min="0" step=".01" v-model="tableData.amount" />
</td>
</tr>
</tbody>
</table>
</div>
<button @click="print">Print</button>
</div>
</template>
<script>
export default {
data() {
return {
tableDatas: []
}
},
methods: {
btnOnClick(v) {
this.tableDatas.push({
itemname: "item",
quantity: 1,
sellingprice: 55,
amount: 55
});
},
print() {
this.$htmlToPaper('printMe');
}
}
};
</script>
<style>
</style>
main.js
import Vue from "vue";
import App from "./App.vue";
import VueHtmlToPaper from "vue-html-to-paper";
Vue.config.productionTip = false;
Vue.use(VueHtmlToPaper);
new Vue({
render: h => h(App)
}).$mount("#app");
ici le code de travail dans codesandbox
Veuillez vérifier le code en cours d'exécution
Modifier selon la prime
je dois le faire avec 'html-to-paper' le problème est que je ne suis pas en mesure de donner du style à mes éléments pour l'impression en utilisant @media print
- La réponse
ux.engineer
est correcte mais le problème de navigateur Crome et Firefox le bloquent en raison de problèmes de sécurité
Veuillez vérifier le code sandbox par exemple voici mon code complet, j'essaie de donner du style mais cela ne se produit pas
- Le
html-to-print
plugin utilise window.open donc quand je clique sur imprimer il ne prend pas le style sur une nouvelle page. - C'est là que je suis bloqué car pourquoi il ne prend pas de style multimédia, comment puis-je remplacer mon style sur window.open
J'utilisais print-nb mais cela ne fonctionne pas sur le navigateur pour une raison de sécurité