টেবিলের সারি ভিতরে পৃষ্ঠা বিরতি এড়ানো


99

আমি এইচটিএমএলে টেবিলের সারিটির ভিতরে পৃষ্ঠা বিরতি এড়াতে চাই, যখন আমি ডাব্লুএইচটিএমএল পিডিএফকে ডাব্লুএইচটিএমলেটপডিএফ দ্বারা রূপান্তর করি। আমি পৃষ্ঠা-বিরতি ভিতরে ব্যবহার করি: টেবিল- এর কাজগুলি এড়িয়ে চলুন তবে আমার অনেকগুলি সারি রয়েছে, তবে কাজ হয় না। ট্রাকে যদি ব্লক বা অন্য কিছু হিসাবে প্রদর্শন সেট করে তবে এটি সারণির বিন্যাস পরিবর্তন করে ডাবল বর্ডার সন্নিবেশ করান। অথবা প্রতিটি পৃষ্ঠায় টেবিল শিরোনাম সন্নিবেশ করা সম্ভব, যেখানে টেবিলটি বিভক্ত ছিল।


4
দুঃখিত, ব্যবহার করার সময় সমস্যা কি page-break-inside: avoid;?
খ্রিস্টান

4
@ ক্রিশ্চিয়ান ভার্গা যখন আমি পৃষ্ঠা-বিরতি-অভ্যন্তর ব্যবহার করি: টিআর দিয়ে এড়ান, এটি কোনও কাজ নয়
অঙ্কিত মিত্তাল

4
টেবিলগুলি সহ পৃষ্ঠাটি বিরতি বেশ বগল। এই জাভাস্ক্রিপ্ট ওয়ার্কআরাউন্ড কোড.google.com/p/wkhtmltopdf/issues/detail?id=168#c4
জোনা

4
আসলে আমি page-break-inside:avoidটিআরডি এর মতো সমস্ত টেবিল উপাদান দিয়ে চেষ্টা করেছি , তবে এটি কার্যকর হয়নি।
অঙ্কিত মিত্তাল

4
ওয়ে গুগল ওয়েবজিএল এর জন্য, দ্রুত জাভাস্ক্রিপ্টকে অন্ধ করে দেওয়া, পোর্টেবল নেটিভ ক্লায়েন্ট, তবে আমরা এখনও ডেটা টেবিলগুলি মুদ্রণ করতে পারি না। কার দরকার হবে ??? কেবলমাত্র বিশ্বের প্রতিটি ব্যবসায়। ঘটনাক্রমে, আমি এখনই গুগল ডক্সে একটি স্প্রেডশিট মুদ্রণের চেষ্টা করেছি এবং এটি ক্রমাগতভাবে আমার ক্রোমকে ক্র্যাশ করে। আমি মনে করি পিডিএফ এর মাধ্যমে গুগল ডক্স প্রিন্ট করে। : /
স্যাম ওয়াটকিন্স

উত্তর:


76

আপনি সিএসএস দিয়ে এটি চেষ্টা করতে পারেন:

<table class="print-friendly">
 <!-- The rest of your table here -->
</table>

<style>
    table.print-friendly tr td, table.print-friendly tr th {
        page-break-inside: avoid;
    }
</style>

বেশিরভাগ সিএসএস বিধি <tr>সরাসরি ট্যাগগুলিতে প্রযোজ্য না , কারণ আপনি উপরে উল্লিখিত হ'ল - তাদের একটি অনন্য displayশৈলী রয়েছে, যা এই সিএসএস বিধিগুলিকে মঞ্জুরি দেয় না। যাইহোক, <td>এবং <th>তাদের মধ্যে ট্যাগ সাধারণত কি স্পেসিফিকেশন এই ধরনের অনুমতি - এবং আপনি সহজেই নিয়ম সকলের জন্য child- আবেদন করতে পারেন <tr>'s এবং <td>উপরে দেখানো' র সিএসএস ব্যবহার করে।


18
দুর্ভাগ্যক্রমে এটি (এখনও) ওয়েবকিট ভিত্তিক ব্রাউজারগুলির সাথে কাজ করে না।
আটটিলা ফুলপ

4
হ্যাঁ - কিছু বিজোড় আছে। এই প্রশ্নে @ পিটারের উত্তর দেখুন: আরও কিছু তথ্যের জন্য stackoverflow.com/questions/7706504/…
ট্রয় অ্যালফোর্ড

4
এটা শুধুমাত্র কাজ করে আপনি সমগ্র টেবিল, শুধু TR / TD নেওয়া: stackoverflow.com/a/13525758/729324
marcovtwout

4
আমি আইই 8-তে এটি নিয়ে সমস্যাগুলি চালিয়েছি, সম্ভবত অন্যরা, যেখানে এটি পুরো টেবিলটিকে একটি পৃষ্ঠায় ফিট করার চেষ্টা করে এবং কোনও ওভারফ্লো কেটে দেয়। এটি এই টেবিলগুলির জন্য "ফিট করার জন্য স্কেল" বিকল্পটি উপেক্ষা করে বলে মনে হয়েছিল।
টম পিট্রোসন্তি

6
পছন্দ করেছেন আপনার পোস্টটি 3 বছরের পুরানো এবং আমি এখনও এটি কাজ করতে পারি না। ধন্যবাদ
পুনরায়

34

ওয়েবকিট ব্রাউজারগুলিতে এই সমস্যাটি মোকাবিলার জন্য আমি যে সর্বোত্তম উপায়টি খুঁজে পেয়েছি তা হ'ল প্রতিটি টিডি উপাদানটির ভিতরে একটি ডিভ স্থাপন করা এবং পৃষ্ঠা-বিরতি-অভ্যন্তর প্রয়োগ করা: ডিভের সাথে শৈলী এড়ানো যেমন:

...
<td>
  <div class="avoid">
    Cell content.
  </div>
</td>
...
<style type="text/css">
  .avoid {
    page-break-inside: avoid !important;
    margin: 4px 0 4px 0;  /* to keep the page break from cutting too close to the text in the div */
  }
</style>

যদিও ক্রোম অনুমিত হয় যে 'পৃষ্ঠা-বিরতি ভিতরে: এড়ানো;' সম্পত্তি, এটি পিডিএফ তৈরি করতে wktohtml ব্যবহার করার সময় একটি পৃষ্ঠা বিরতি দিয়ে সারি সামগ্রীকে অর্ধেকভাগে বিচ্ছিন্ন করা থেকে মনে হয়। টিআর উপাদানটি পৃষ্ঠাটি কিছুটা বিরতিতে ঝুলতে পারে, তবে ডিভ এবং এর ভিতরে থাকা কিছুতেই হবে না।


margin: 4px 0 4px 0;আমার জন্য কৌতুক, আমি মাঝে মাঝে একটি রেকর্ড হারানোর ছিল। ধন্যবাদ
ওয়ার্টোডাস্ট

এই পদ্ধতির সাথে একটি সমস্যা হ'ল কখনও কখনও পরের পৃষ্ঠায় একটি সারির কয়েকটি কক্ষগুলি ভাঙা হয়, যদিও তার নিজের প্রতিটি কক্ষটি ভাঙবে না।
ওয়ার্ল্ডসেন্ডার

@ ওয়ার্ল্ডএসেন্ডার হ্যাঁ আপনি কি এর জন্য কোনও কাজ খুঁজে পেয়েছেন?
রঞ্জনসাগ

4
কাজ করে না। কিছুই কাজ করে না। আমি ইন্টারনেটে প্রতিটি "সমাধান" চেষ্টা করেছি এবং এর কোনও সমাধান নেই। আমাদের কেবল ক্রেপ সফ্টওয়্যার গ্রহণ করতে হবে যা এমনকি কোনও টেবিলও সরবরাহ করতে পারে না।
নিক্লাস আর।

18

আমি উপরের ( লিঙ্ক ) @ অ্যারোনহিল দ্বারা 4px কৌশলটি ব্যবহার করেছি এবং এটি সত্যই ভাল কাজ করেছে! আমি যদিও <td>টেবিলের প্রত্যেকটিতে একটি ক্লাস যুক্ত করার প্রয়োজন ছাড়াই একটি সহজ সিএসএস নিয়ম ব্যবহার করেছি ।

@media print {
    table tbody tr td:before,
    table tbody tr td:after {
        content : "" ;
        height : 4px ;
        display : block ;
    }
}

10

এই সমস্যাটি সমাধান করার জন্য আমি একটি নতুন উপায় খুঁজে পেয়েছি, কমপক্ষে আমার জন্য (ক্রোম সংস্করণ 63.0.3239.84 (অফিসিয়াল বিল্ড) (OS৪-বিট) MacOS সিয়েরায়)

মূল টেবিলে একটি সিএসএস বিধি যুক্ত করুন:

table{
    border-collapse:collapse;
}

এবং টিডি জন্য:

tr td{
    page-break-inside: avoid;
    white-space: nowrap;
}

আমি আসলে স্ট্যাক ওভারফ্লোতে এই সমাধানটি পেয়েছি, তবে এটি প্রাথমিক গুগল অনুসন্ধানগুলিতে প্রদর্শিত হয়নি: টেবিল সারির অভ্যন্তরে পৃষ্ঠা বিরতি বন্ধ করার জন্য সিএসএস

সমস্যা সমাধানের জন্য @ ইব্রেন্নান ২০৮-এ কুদোস!


টেবিলটি কাটানোর এটির সমাধান হওয়া সমস্যাটি অন্য
নকশাগুলি

9

সিএসএস পৃষ্ঠা-বিরতি অভ্যন্তর ব্যবহার করা কাজ করবে না (এটি একটি ওয়েবকিট ব্রাউজার সমস্যা)।

একটি wkhtmltopdf জাভাস্ক্রিপ্ট টেবিল বিভাজন হ্যাক যা আপনার নির্দিষ্ট পৃষ্ঠার উপর নির্ভর করে স্বয়ংক্রিয়ভাবে একটি দীর্ঘ টেবিলটি ছোট টেবিলগুলিতে বিভক্ত হয় (x সারিগুলির স্থির মানের পরে পৃষ্ঠা ভাঙার পরিবর্তে): https://gist.github.com/3683510


এই জেএস হ্যাকটি কি কাজ করবে যদি আমি কেবল ডাব্লুএইচটিএমল্টপপিএফ ছাড়াই ওয়েবপৃষ্ঠাটি চাই?
120196

এটিই আমার পক্ষে কাজ করেছে। এইচটিএমএল-পিডিএফ লাইব্রেরির সাথেও কাজ করে।
গিলবার্ট-ভি 13

8

অ্যারন হিলের উত্তরের ভিত্তিতে আমি নিম্নলিখিত জাভাস্ক্রিপ্ট লিখেছি:

//Add a div to each table cell so these don't break across pages when printed
//See http://stackoverflow.com/a/17982110/201648
$(document).ready(function () {
    var ctlTd = $('.dontSplit td');
    if (ctlTd.length > 0)
    {
        //console.log('Found ctlTd');
        ctlTd.wrapInner('<div class="avoidBreak" />');
    }
});

যেখানে ড্যান্টস্প্লিট হ'ল টেবিলের শ্রেণি যেখানে আপনি চান না যে টিডি'র পৃষ্ঠা জুড়ে বিভক্ত হয়। নিম্নলিখিত সিএসএস দিয়ে এটি ব্যবহার করুন (আবার, অ্যারোন হিলকে দায়ী):

 .avoidBreak {
    page-break-inside: avoid !important;
    margin: 4px 0 4px 0;  /* to keep the page break from cutting too close to the text in the div */
  }

এটি ক্রোমের সর্বশেষ সংস্করণে দুর্দান্তভাবে কাজ করছে বলে মনে হচ্ছে।


4
আমি wkhtmltopdf ব্যবহার করে বড় আকারের টেবিলগুলি পিডিএফ ফর্ম্যাটে রেন্ডার করছি এবং এটিই একমাত্র সমাধান যা গ্রহণযোগ্য ফলাফল পেয়েছে। এটি আরও ভাল হতে পারে (ওয়েবকিট কোনও পৃষ্ঠা বিরতির পরে কক্ষের সীমানা পুনরাবৃত্তি করে না) তবে কমপক্ষে সামগ্রীটি সেখানে রয়েছে। ধন্যবাদ!
জোনাথন হিল

7

আমি কাজ করার একমাত্র উপায় হ'ল প্রতিটি টিআর এলিমেন্টকে তার নিজস্ব টিবিডি ওয়াইড উপাদানটির মধ্যে স্থাপন করা এবং সিএসএসের মাধ্যমে পৃষ্ঠা বিরতি নিয়মগুলি টিবিডি উপাদানটিতে প্রয়োগ করা ছিল


4
এটি আর্চ লিনাক্সের ক্রোমিয়াম সংস্করণ 40.0.2214.111 (-৪-বিট) এ আমার জন্য বিশ্রামের চেয়ে ভাল কাজ করে। এটা তোলে কুশ্রী এবং হল hacky মতানুযায়ী - কিন্তু দৃশ্যত একাধিক tbodyউপাদানের একটি ভিতরে বৈধ table stackoverflow.com/questions/3076708/...
ElDog

এটি আমার পক্ষে কাজ করে না (Chrome 56.0.2924.87 (64-বিট), ম্যাক ওএস 10.12.2)।
নাহাত দিনহ

4

দিয়ে চেষ্টা করুন

white-space: nowrap; 

স্টাইল থেকে টিডি এটি এড়াতে এড়াতে নতুন লাইনে।


4
অন্যান্য সমাধানগুলির তুলনায় অনেক সহজ। এই একটি নতুন জিনিস?
বেনডেকো

4

আমি খুঁজে পেয়েছি যে page-break-inside: avoidটেবিলের মূল উপাদানগুলির মধ্যে যদি কোনও হয় display: inline-blockবা কাজ করে না flex। সমস্ত অভিভাবক উপাদান রয়েছে তা নিশ্চিত করুন display: block

এছাড়াও অগ্রাহ্য বিবেচনা table, tr, tdএর displayCSS এর সঙ্গে শৈলী gridমুদ্রণ লেআউট জন্য আপনি টেবিলের সাথে সমস্যা হচ্ছে না।


4

2020 সমাধান

আমি নিয়মিত সমস্ত ব্রাউজারগুলিতে কাজ করতে পারি কেবল তা হ'ল প্রতিটি সারিটিকে তার নিজস্ব টেবিল উপাদানটির ভিতরে .োকানো । এটি নোড এইচটিএমএল-পিডিএফ সহও কাজ করে। তারপরে সবকিছু সেট করুন page-break-inside: avoid

table,
tr,
td,
div {
    page-break-inside: avoid;
}

এর একমাত্র অসুবিধা হ'ল আপনাকে অবশ্যই কলামগুলির প্রস্থ ম্যানুয়ালি সেট করতে হবে, অন্যথায় এটি অদ্ভুত দেখাচ্ছে। নিম্নলিখিত দুটি কলাম দিয়ে আমার জন্য ভাল কাজ করেছে।

td:first-child { width: 30% }
td:last-child { width: 70% }


উদাহরণ

<table>
  <tr>
    <td>Forename</td>
    <td>John</td>
  </tr>
</table>
<table>
  <tr>
    <td>Surname</td>
    <td>Piper</td>
  </tr>
</table>
<table>
  <tr>
    <td>Website</td>
    <td>desiringgod.org</td>
  </tr>
</table>

আপনি উদাহরণ টেবিল এইচটিএমএল সরবরাহ করতে পারেন? ধন্যবাদ
পবনভূষণ

ধন্যবাদ, উদাহরণস্বরূপ সম্পাদনার জন্য @ গিলবার্ট-ভি। আমি এটি চেষ্টা করব।
পবনভূষণ

0

এটি একটি পুরানো প্রশ্ন তবে আমি সম্প্রতি এই একই ত্রুটির মধ্যে পড়েছি। আমার ক্ষেত্রে সমস্যাটি বুটস্ট্র্যাপের table-responsiveশ্রেণীর সাথে সম্পর্কিত , যা ঘটনাক্রমে <table>উপাদানটিতে ব্যবহৃত হয়েছিল ।

সুতরাং, আপনার যদি একই সমস্যা থাকে, wkhtmltopdf কল করার সময় ক্লাস table-responsiveথেকে সরিয়ে দেওয়ার চেষ্টা করুন <table>

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