Ich arbeite an einer HTML-Tabelle und html-to-paper
drucke diese Tabelle mit vue.js auf einen Drucker. Ich mache das Klicken, um eine neue Zeile zu erstellen, und dann das Klicken, um zu drucken. Ich versuche, die Tabelle zu drucken, aber es dauert nicht Alle Daten zeigen nur leere Zellen
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");
hier der Arbeitscode in Codesandbox
Bitte überprüfen Sie den laufenden Code
Nach Kopfgeld bearbeiten
Ich muss es mit 'HTML-zu-Papier' machen. Das Problem ist, dass ich meinen Elementen keinen Stil zum Drucken geben kann @media print
- Die Antwort von
ux.engineer
ist in Ordnung, aber aufgrund des Browserproblems blockieren crome und Firefox es aus Sicherheitsgründen
Bitte überprüfen Sie Code Sandbox zum Beispiel hier ist mein vollständiger Code, ich versuche, Styling zu geben, aber nicht passiert
- Das
html-to-print
Plugin verwendet window.open. Wenn ich also auf "Drucken" klicke, wird der Stil nicht auf eine neue Seite übertragen. - Hier stecke ich fest, warum es keinen Medienstil annimmt. Wie kann ich meinen Stil auf window.open überschreiben?
Ich habe print-nb verwendet, aber es funktioniert aus Sicherheitsgründen nicht im Browser