তৃতীয় পক্ষের গ্রন্থাগারগুলি ব্যবহার করে ভ্যুজেএস দিয়ে উপাদানগুলি মুদ্রণ করা হচ্ছে


14

আমি এইচটিএমএল টেবিলের উপর কাজ করছি html-to-paperএবং vue.js ব্যবহার করে সেই টেবিলটি প্রিন্টারে মুদ্রণ করছি, আমি যা করছি তা একটি নতুন সারি তৈরি করার জন্য ক্লিক করা হয় এবং তারপরে মুদ্রণের ক্লিকের উপর আমি টেবিলটি মুদ্রণের চেষ্টা করছি তবে এটি গ্রহণ করছে না যে কোনও ডেটা কেবল খালি ঘর দেখায়

কোড 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");

কোডস্যান্ডবক্সে এখানে ওয়ার্কিং কোড রয়েছে

চলমান কোড পরীক্ষা করুন

অনুগ্রহ অনুসারে সম্পাদনা করুন

আমি এটি 'এইচটিএমএল-টু পেপার' দিয়ে করতে হবে সমস্যাটি হ'ল আমি মুদ্রণের জন্য আমার উপাদানগুলিকে স্টাইল দিতে সক্ষম নই @media print

  • উত্তরটি ux.engineerউত্তম তবে ব্রাউজারের সমস্যার ক্রোম সৃষ্টি করছে এবং সুরক্ষা বিচ্ছিন্ন হওয়ার কারণে ফায়ারফক্স এটিকে অবরুদ্ধ করছে

দয়া করে কোড স্যান্ডবক্স চেক করুন উদাহরণস্বরূপ এখানে আমার সম্পূর্ণ কোড, আমি স্টাইলিং দেওয়ার চেষ্টা করছি তবে ঘটছে না

  • html-to-printপ্লাগ ইন ব্যবহার করে, তাই window.open যখন আমি মুদ্রণ এ ক্লিক করছি এটা নতুন পৃষ্ঠায় শৈলী গ্রহণ করা হয় না।
  • আমি যেখানে আটকে থাকি কেন এটি মিডিয়া স্টাইল গ্রহণ করছে না, আমি কীভাবে উইন্ডো.ওপেনে আমার স্টাইলটিকে ওভাররাইড করতে পারি

আমি মুদ্রণ-এনবি ব্যবহার করছিলাম তবে এটি কোনও সুরক্ষার কারণে ব্রাউজারে কাজ করছে নাপ্রিন্ট-এনবি ব্যবহার করার সময় এটি কী বলে


মনীষ ঠাকুর দয়া করে আমার নতুন উত্তরটি দেখুন (অনুগ্রহপূর্বক চার
মাসের

উত্তর:


9

দুর্ভাগ্যক্রমে আপনি প্যাকেজ লেখক দ্বারা এখানে বর্ণিত হিসাবে , এই মাইকিউর্ল্যাবস / ভু-এইচটিএমএল-টু-পেপার মিক্সিন প্যাকেজটির সাথে ভিউয়ের ডেটা বাঁধাই করতে পারবেন না ।

তবে, আমি এখানে ব্যবহৃত প্যাকেজটিকে পাওয়ার-কেএক্সলি / ভিউ-প্রিন্ট-এনবি নির্দেশিকায় স্যুইচ করে একটি কাজ তৈরি করেছি ।

এখানে একটি কার্যকারী উদাহরণ: https://codesandbox.io/s/zen-sunset-2szqr

পুনশ্চ. অনুরূপ প্যাকেজগুলির মধ্যে নির্বাচন করা সময়ে সময়ে জটিল হতে পারে। একজনকে রেপির ব্যবহার এবং ক্রিয়াকলাপের পরিসংখ্যানগুলির মূল্যায়ন করা উচিত যেমন: প্রথম পৃষ্ঠায় ব্যবহার করা, দেখুন এবং শুরু করুন, তারপরে ওপেন / ক্লোজড ইস্যুগুলি এবং সক্রিয় / ক্লোজড পুল অনুরোধগুলি পরীক্ষা করুন এবং তারপরে পালস (1 মাস) পরীক্ষা করতে অন্তর্দৃষ্টিগুলিতে যান এবং কোড ফ্রিকোয়েন্সি।

এই দুটির মধ্যে, আমি আরও জনপ্রিয় এবং সক্রিয়ভাবে ব্যবহৃত হওয়ার জন্য মান-প্রিন্ট-এনবি বেছে নেব । এছাড়াও কারণ আমি একটি মিশ্রণের উপর একটি নির্দেশিকা ব্যবহার করতে পছন্দ করি

অন্য উত্তরটি যতদূর যায়, এই উদ্দেশ্যে ভ্যু-এইচটিএমএল-টু-পেপার ব্যবহার করা সেই ধরণের হ্যাকি সমাধানের প্রয়োজন ... যেখানে এই নির্দেশিকাটি বাক্সের বাইরে কাজ করে।

https://github.com/mycurelabs/vue-html-to-paper

https://github.com/Power-kxLee/vue-print-nb


1
এই মুদ্রণ প্যাকেজগুলি কীভাবে তুলনা করে তা আমি জানি না, তবে প্যাকেজগুলি স্যুইচ করা ঠিক থাকলে আমি মনে করি এটি স্থানধারীদের সাথে আমার কাজের চেয়ে আরও ভাল সমাধান।
আরকুউ

@ ux.enginer হিসাবে আমি আপনার আইডিয়াটিকে খুব সহজ এবং পরিষ্কার হিসাবে পেয়েছি, আমি এখানে একটি সন্দেহ (ইস্যু) পেয়েছি যখন আমি টেবিলটি প্রিন্ট করছি তখন এটি পুরো পৃষ্ঠাটি inputsভিতরে ভিতরে দিয়ে মুদ্রণ করছে যা ভাল নয়, আমি সেই ইনপুটটি সরিয়ে ফেলতে চাই এবং তা হয়ে উঠতে চাই সাধারণ ক্ষেত্রের মতো, আমিও উচ্চতা পরিচালনা করতে পারি, কারণ আমি ব্যবহার করছি USB Printerযা এ 4 শিট নেই।
মনীষ ঠাকুর

@ মানিশঠাকুর আপনি মিডিয়া ক্যোয়ারী টার্গেটিং প্রিন্টের সাথে বিশ্বব্যাপী সিএসএস স্টাইলিং ব্যবহার করতে পারেন, এখানে একটি কার্যকরী উদাহরণ রয়েছে: কোডস্যান্ডবক্স.আইও
ফায়ার-

ঠিক আছে এটি কাজ করছে সুতরাং এটির মাধ্যমে আমি সিএস সংজ্ঞায়িত করতে পারব, সমস্যাটি এখানে রয়েছে মনে করুন চারটি সারি রয়েছে, তবে প্রিন্টারটি পূর্ণ দৈর্ঘ্যের প্রিন্টারটি প্রিন্ট করছে, আমি বিল মুদ্রণের জন্য ইউএসবি প্রিন্টার ব্যবহার করছি, দয়া করে আমাকে এই জিনিসটি পরিষ্কার করুন
মনীষ ঠাকুর

@manishthakur কিভাবে এই সম্পর্কে: codesandbox.io/s/charming-sound-7h1bg - ব্যবহার @pageসিএসএস-শাসন ( developer.mozilla.org/en-US/docs/Web/CSS/@page ) হিসেবে এখানে ব্যাখ্যা stackoverflow.com/questions / 44064707 /…
ux.engineer

6

অন্যরা যেমন উল্লেখ করেছে, আপনি যে প্যাকেজটি ব্যবহার করেন এটি দিয়ে এটি সম্ভব নয়, কারণ v-modelমুদ্রণ করার সময় থেকে সীমাবদ্ধ তথ্য উপস্থিত থাকে না। সুতরাং আপনার এইচটিএমএলের অভ্যন্তরে স্থিতিশীলভাবে এই তথ্যটি নেওয়া দরকার। সূত্র

ইনপুট স্থানধারকগুলি ব্যবহার করার জন্য একটি কার্যকারণ হ'ল:

আপনার টেবিলে একটি রেফারেন্স যুক্ত করুন :

<tbody ref="tablebody">

এটি আপনাকে আপনার পদ্ধতিতে এই উপাদানটি নির্বাচন করতে দেয়। এখন মুদ্রণের পদ্ধতিটি পরিবর্তন করুন:

print() {
  const inputs = this.$refs.tablebody.getElementsByTagName("input");
  for (let input of inputs) {
    input.placeholder = input.value;
  }
  this.$htmlToPaper("printMe");
  for (let input of inputs) {
    input.placeholder = "";
  }
}

তারপরে সিএসএস সহ স্থানধারকদের স্টাইল করুন কারণ এটি ডিফল্টরূপে ধূসর দেখাচ্ছে looks

আমি প্রথমে কোনওভাবে ইনপুটটির মানটি পুনরায় সেট করার চেষ্টা করেছি input.value = input.value, তবে দুর্ভাগ্যক্রমে এটি কার্যকর হয়নি।

আপনার কোড আপডেট এখানে


1
একটি চতুর সমাধান, যদিও বিট হ্যাকি। তবে যদি প্রয়োজন হয় যে কেউ যদি এই জাতীয় গতিশীল মানগুলি মুদ্রণের জন্য এই বিশেষ ভ্যু মিক্সিন ব্যবহার করে আটকে থাকতে চান। তবে এই মুহুর্তে আমি বিকল্প প্যাকেজগুলির সন্ধান করব।
ux.engineer

@arkuuu আপনি যখনই মুক্ত হবেন দয়া করে আমার সম্পাদনা অংশটি পরীক্ষা করুন।
মনীষ ঠাকুর

@ মানিশঠাকুর আমি এটি পড়েছি কিন্তু আমার কোনও ধারণা নেই। হতে পারে আপনি নিজের মুদ্রণ সিএসএস বিধিগুলি একটি পৃথক সিএসএস ফাইলে অন্তর্ভুক্ত করতে পারেন stylesএবং অন্যান্য স্টাইলশিটের সাথে আপনার মতো করে ভ্যু-এইচটিএমএল-টু-পেপারের বিকল্পটি ব্যবহার করতে পারেন ।
আর্কুউ

1
আমি চেষ্টা করেছি কিন্তু কিছুই পরিবর্তিত হয়নি, এখনও এটি শৈলী গ্রহণ করছে না
মণীশ ঠাকুর

0

প্রশ্নটিতে আপনার নতুন অনুগ্রহ অনুসারে, ব্যবহারটি আটকে থাকার জন্য vue-html-to-paper, প্রিন্ট উইন্ডোতে এক্সটার্নাল স্টাইলশিট লোড করার জন্য এখানে একটি আপডেট কোড উদাহরণ

এটি প্রথমে একটি বাহ্যিক সিডিএন থেকে বুটস্ট্র্যাপ শৈলীগুলি লোড করে, তারপরে পাবলিক ডিরেক্টরি থেকে একটি স্থানীয় সিএসএস ফাইল। এই স্থানীয় স্টাইলশীটে !importantইনপুট ব্যাকগ্রাউন্ডের রঙ সবুজ থেকে ওভাররাইড ব্যবহারের জন্য কেবল একটি স্টাইল রয়েছে ।

উইন্ডোতে ক্রোম প্রিন্ট বিকল্পের ব্যাকগ্রাউন্ড গ্রাফিক্স প্রয়োগ করা থাকলে গ্রিন ব্যাকগ্রাউন্ড শৈলী ইনপুটগুলিতে প্রয়োগ করে। উইন্ডোজের ফায়ারফক্সের একটি আলাদা মুদ্রণ বিকল্প প্যানেল রয়েছে, যার এমন কোনও সেটিংস নেই।

তবুও দুজনেই বুটস্ট্র্যাপের স্টাইলগুলি কমপক্ষে আংশিকভাবে প্রয়োগ করছে, তাই স্টাইলশীটগুলি লোড হয়ে যায় এবং খেলতে হয়।

এই ইনপুট ব্যাকগ্রাউন্ড শৈলী ইস্যুটি ব্রাউজারগুলি কীভাবে মুদ্রণ শৈলীগুলি পরিচালনা করে তা মধ্যে পার্থক্য প্রদর্শন করা ছিল এবং এটি এই প্রশ্নের ক্ষেত্রের বাইরেও একটি বিস্তৃত বিষয়।

পুনশ্চ. আমি নিশ্চিত না যে vue-print-nbপ্যাকেজটিতে কী ধরণের সুরক্ষা সমস্যা ছিল তবে সম্ভবত এটি সমাধান হতে পারে। আপনার গিথুব রেপোতে একটি ন্যূনতম বাগ প্রজনন উদাহরণ সহ একটি সমস্যা খোলার উচিত।

যদি এই vue-print-nbসমাধানটির সমস্যাটি পরে সমাধান হয়ে যায় এবং আমার উত্তর আপডেট হয় তবে এই উত্তরটিকে পৃথক এন্ট্রি হিসাবে যুক্ত করা।


আরে আমি যাচাই করছি এটি শৈলীগুলি পুরোপুরি গ্রহণ করছে না কারণ আমি সরিয়ে দেওয়ার চেষ্টা করছি input fields তবে এটি সবকটিই নিচ্ছে।
মনীষ ঠাকুর

আপনি কোন স্টাইলগুলি প্রয়োগ করার চেষ্টা করছেন তা স্পষ্ট নয় ... যেমন বলা আছে, স্টাইলগুলি ব্রাউজারের চেয়ে একই ফ্যাশনে মুদ্রণ করতে আসে না, কারণ এতে বিধিনিষেধ রয়েছে। এমনকি সেগুলি ব্রাউজার / প্ল্যাটফর্মের মধ্যেও পরিবর্তিত হয়। তবে বুটস্ট্র্যাপ স্টাইলশিটটি প্রয়োগ হয় , তাই না? এবং আমার ওভাররাইড, তাই শৈলী লোড করা হয়?
ux.engineer

না, আমি ইনপুট ক্ষেত্রগুলি সরিয়ে দিচ্ছি তবে এটি মুছে ফেলা হচ্ছে না, কারণ আমি ইনপুট ক্ষেত্রটি সরাতে চাই এবং কিছু শৈলীর সাথে এটি বেসিক টেবিল হিসাবে দেখাতে চাই যা আমি মুদ্রণে দিতে চাই অর্থাৎ ফন্টের আকার এবং প্রান্তিককরণ কিন্তু এটি নিচ্ছে না, আমি লুকিয়ে আছি একটি কলামও তবে মুদ্রণটিতে এটি সমস্ত নিচ্ছে
মণীশ ঠাকুর

আরে আপনি কি অনুমান করতে পারেন যে সমস্যাটি কী তা print-nbহিসাবে কাজ করা সবচেয়ে ভাল তবে আমি জানি না কেন ব্রাউজার
সিএসএসের
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.