بدست آوردن تعداد صفحات چاپ در بیلدر

سلام
من خروجی پلاگین اس کیو لایت را با کدهای اچ تی ام ال به چاپگر میفرستم تا عملیات پرینت را انجام بدم اما یک مشکل دارم اونم جوابش فقط یه راه داره که بتونم بفهمم متنی که برای پرینت ارسال میشه چند صفحه هستش

یعنی اگه متن ارسالی برای چاپ قراره در سه برگ چاپ بشه من بتونم اینو بفهمم
 

loo30fer

کاربر متخصص مولتی مدیا بیلدر
درخواست پرینت از طریق پورت com برای پرینتر ارسال میشه و تا جایی که اطلاع دارم فهمیدن از اینکه چندتا صفحه درخواست شده از طریق شنود کردن پورت Com امکان پذیر هست که پلاگینی براش وجود نداره
البته تو پرینترهای جدید که اتصال از طریق وای فای صورت میپذیره روش کار عوض میشه
ولی میشه بعد از پرینت تعداد صفحه های پرینت شده رو تو ویندوز متوجه شد ولی با ابزارهای موجود برای بیلدر اینکار ممکن نیست مگه اینکه پلاگینی براش ساخته بشه
 
درخواست پرینت از طریق پورت com برای پرینتر ارسال میشه و تا جایی که اطلاع دارم فهمیدن از اینکه چندتا صفحه درخواست شده از طریق شنود کردن پورت Com امکان پذیر هست که پلاگینی براش وجود نداره
البته تو پرینترهای جدید که اتصال از طریق وای فای صورت میپذیره روش کار عوض میشه
ولی میشه بعد از پرینت تعداد صفحه های پرینت شده رو تو ویندوز متوجه شد ولی با ابزارهای موجود برای بیلدر اینکار ممکن نیست مگه اینکه پلاگینی براش ساخته بشه



جناب لوسیفر عزیز یعنی با کد نویسی حتی به زبان سی هم اینکار امکان نداره؟ مگه میشه
یعنی با هیچ زبانی نمیشه فهمید مثلا همین صفحه ای که الان دارید مطالبش را میخونید اگه دستور چاپ بدهیم روی چند برگ آ چهار چاپ میشه
 

محمدمهدی

Well-Known Member
جناب لوسیفر عزیز گمونم مطلب مد نظر شما رو از اون طرف بررسی کردن. یعنی فکر کردن که در نهایت چطور میشه از پرینتر پرسید که چند صفحه پرینت گرفتی که گمون نکنم منظور رو درست متوجه شده باشند.
چون اگر منظور این باشه ایشون درست گفتن و خیلی کار مفیدی نمیشه کرد و اگر واقعا این باشه، مطلب صرفا ربط به پورت نداره. چه COM چه LPT چه USB چه Connection چه Virtual باشه، به درایور پرینتر احتیاج هست و اینها و ... که ... (ره به نا کجا)

اما اگر منظور اینطور نیست، محاسبه ی تعداد صفحات آماده برای ارسال، با 3 عامل قابل محاسبه هست :
1. ابعاد صفحه (یعنی A4، A5 و ...) با در نظر گرفتن DPI (مثل 300 DotPerInch)
2. ابعاد محتوی در صفحه
3. تنظیمات و هماهنگی با پورت پرینتری که می خواد پرینت بگیره (منظور از پورت، USB و اینها نیست. توی ویندوز متدهای API مختلف و متداولی برای برقراری ارتباط با هر نوع پرینتری هست. که گمونم خود MMB از GDI استفاده می کنه.)

خب حالا نرم افزارهای دیگه از کجا دقیق می فهمند؟
از محاسبه همین محتوی ها با هم.
اما روش ارسال دستور پرینت 2 مدل بیشتر نیست.
الف - یا یک تصویر متناسب با تنظیمات پرینتر توسط خود نرم افزار تدوین میشه و به پرینتر ارسال میشه (روش مورد استفاده نرم افزار های حرفه ای)
ب - یا اینکه متن محتوی به پرینتر داده میشه و هر کاری لازم باشه خودش می کنه. (که معمولا برای فارسی جواب نمیده و این روش از زمان DOS مونده)

حالا ما یه سری متد های استاندارد داریم که در 80% مواقع میشه بهشون اعتماد کرد و فقط با توجه به دو مورد اول که عرض شد میشه دستور پرینت داد و مطمئن بود که تعداد صفحات همونی هست که ما محاسبه کردیم.
اما تا محاسبه ای قبلش در کار نباشه از خود پرینتر انتظاری نیست.

با توجه به اینکه مد نظرت HTML هست در نظر اول یه خورده دسترسی سخت به نظر میرسه و با مطالب کلی که عرض شد همونطور که لوسیفر گفتن پلاگین و دستوری براش موجود نیست (میشه برای غیر html نوشت فقط الان دیگه به نظرم میرسه که ارزشش رو نداره) اما در HTML خیلی کارهای دیگه میشه کرد، اگر JAVA دستش باز باشه. شما اصلا میتونی یه متد کامل پرینت با JAVA طراحی کنی ولی چون در هر Browser و برای هر پرینتر متفاوته باید بدونی که قطعی نیست. یعنی کافیه IE6 و ویندوز XP باشه تا نصف قابلیت های جدید جاوا منحل شه.
خود دستور های جاوا برای Document و Print در HTML محدوده اما یه جستجو که بکنی میبینی هر کسی به روشی این قضیه رو جمع کرده.
خب حالا :
1. مثلا این بنده خدا یه روش زده با جاوا:
http://stackoverflow.com/questions/3701644/how-can-i-get-the-total-number-of-pages-to-be-printed
2. یا می تونی از خود جاوا با Print Preview کمک بگیری.
3. می تونی تو خود Html اگه خودت ساخته باشی یه فرم طراحی بکنه. و با ابعاد استاندارد، تقریبی بفهمی اگه مثلا A4 باشه چند صفحه میشه.
4. چند تا ابزار Command-Line freeware هم یادمه بود که خودم یه بار از یکیشون استفاده کردم که گمونم برعکس بود. یعنی بهش میگفتی تو چند صفحه جا کن فایل متنی یا Html رو بعد جا می کرد. جستجو کن در این باره. ترجیحا زبان اصلی.
5. از محیط های دیگه هم می تونی در کنار نرم افزارت استفاده کنی ولی خب دردسرای خودش رو داره. مثلا VB خیلی مثال داره. فقط واسه این مورد بهتره از سیستم Html در بیای.
و...

راه هست ولی قطعی نیست، تا وقتی پای چند واسطه در میون باشه.

موفق باشی.
 

loo30fer

کاربر متخصص مولتی مدیا بیلدر
جناب لوسیفر عزیز یعنی با کد نویسی حتی به زبان سی هم اینکار امکان نداره؟ مگه میشه
یعنی با هیچ زبانی نمیشه فهمید مثلا همین صفحه ای که الان دارید مطالبش را میخونید اگه دستور چاپ بدهیم روی چند برگ آ چهار چاپ میشه
اگه منظور شما اینکه که بگین فلان صفحه رو چندتا صفحه پرینت کن بگین تا راهنماییتون کنم

در جواب دوستمون جناب مهدی باید عرض کنم اگه منظور دوستمون گفته بالا نباشه و خواست متوجه شدن از تعداد درخواست های قبل از پرینت باشه میتونه توابعی براش در نظر گرفته شده باشه البته که درایور همیشه واسط عملکرد ما هست ولی برای متوجه شدن از رفتارها و پیغام ها مواقعی نیاز به شنود کردن پورت کام هست که اگه تا بحال شنود کرده باشین مقادیر جالبی بهش میرسین
ولی برای تعداد پیج های پرینت شده توابع وجود داره البته من پرینتر ندارم تا تست کنم و شاید منظور دوستمون رو بد متوجه شدم ولی گفته دوستمون این رو نشون میده که میخوان متوجه بشن کاربر چه تعداد صفحه رو برای پرینت ارسال کرده
 
آخرین ویرایش:
با سلام مجدد و سپاس از دوستان بخاطر اهمیت دادن به سوال بنده

لازم دیدم سوالم را مجددا و به نوعی ساده تر طرح کنم

اصلا کار به پرینت گرفتن و چاپگر نداشته باشید یک کلام چطور میشه بدون پرینت گرفتن از همین صفحه ای که الان درش هستیم متوجه شد اگه این صفحه را پرینت بگیریم چند برگ قراره مصرف بشه

همین

اینطوری گفتم منظورم را برسونم حالا طرحم را بگم
فرض کنید در انتهای هر صفحه وب یک کلید باشه که با کلیک کردن بر روی آن پیغامی با این مضمون داده شود
متن این صفحه برای چاپ سه برگ میشود
 

محمدمهدی

Well-Known Member
لوسیفر عزیز بدون اطلاع چیزی رو عرض نکردم. مسئله ی خاصی رو هم برای جواب گرفتن مطرح نکردم. کار ما نرم افزاری-سخت افزاری هست و با هر پورتی که بخواهید کار جدی و پروژه ای که الان در حال استفاده هست کردم. و در چند پروژه ی پرسنلی لوکال و آنلاین هم کار جدی پرینتر کردم. شما دقیق و درست میگی، هر پورتی رو شنود کنی به چیزهای جالبی میرسی اما مسئله محاسبه ی تعداد صفحات ارتباطی جدی با پورت نداره. معمولا قبل از حتی شناخت پرینتر هست. فقط نرم افزار های حرفه ای مثل Corel با سوال از درایور، Print Preview حرفه ای تری ارائه میدن.
اگر بحث درباره صرفا HTML نبود نمون مثال کامل C# و VB (در VB براش Control-Bar آماده هم هست) موجود هست که چطور Print Preview درست کنید بدون اینکه پرینتر رو در نظر بگیری یا با اینکه پرینتر رو در نظر بگیری.
شما حتی می تونی با تعریف درایور مجازی، یک پرینتر مجازی داشته باشی. درود به شما که با اینکه پرینتر نداری درست پیش بینی کردی چون توابعی هم که مد نظر شما هست با توجه به اینکه از کدوم API استفاده کرده باشی دقیقا وجود داره فقط متفاوته.
در HTMLی که مد نظر دوستمونه توابع هست ولی محدوده و وابسته به Browser و اگر بهترش هست من ندیدم و جز با اون راه هایی که عرض کردم راه دیگه ای رو سراغ ندارم. همچنین برای کمک بهش راه هایی هم با جاوا هست که با جستجو به سادگی قابل دسترسه. فقط همونطور که عرض کردم 100% نیست ولی مجموعا قابل اعتماده.
___________________________
آقا بهروز مجددا :
شما احتمالا اصلا مطالبی که عرض شد رو درست نخوندی.
یک بار عرض کردم، یکبار دیگه عرض می کنم که خودتون باید ابعادتون رو نسبت به اون چیزی که قراره روش پرینت بگیرید بررسی کنید و با محاسبه بگید چند برگ میشه. سوال شما چند مجهولی هست، یعنی جواب نداره.
چند برگ؟ با چه اندازه؟ و چه چاپی؟
برای مثال: اگر برگه A4 باشه - محتوای شما قد یه A4 نباشه و فرم شما استاندارد قد یه A4 باشه شما می تونی بگی 2 تا برگ ولی از کجا می دونی تنظیمات پرینتر طرف روی A5 یا A3 تنظیم نشده باشه؟ چون از طریق Browser دستور پرینت ارسال میشه طرف می تونه هر گونه تغییراتی بده.
ضمنا همه ی Broswer ها Print Preview دارند. که همون جا پیش بینی میشه که چند برگ میشه.
امیدوارم مدت کمی درباره مطالبی که عرض شد جستجو بفرمایید بعد سوالتون رو تکرار کنید.
 
آخرین ویرایش:
سلام خدمت آقا مهدی

مشکل منم دقیقا همینه و بقول شما احتمالا بنده خوب توضیح ندادم
بله دقیقا حق با شماست و اصلا از کجا معلوم با چه فوتنی و با چه سایزی متن تایپ شده. بعنوان مثال میشه با قلم تاهما و سایز یک حدود یک کتاب دویست برگی را در یک صفحه جا داد

همونطور که عرض کردم مشکل منم دقیقا همینه چون قراره کاربر متن و فونت و سایز فونت و اینکه صفحه چند خطی باشه و غیره را تعیین و تعریف بکنه والله اگه متن و فونت و غیره ثابت بود میشد با چند ترفند مشکل را حل کرد
فکر میکنم اگه همون راه پرینت پریویو را اینجا ادامه بدیم به جواب برسیم

در رابطه با جستجو هم جستجو زیاد کردم اما به نتیجه باب میلم که کد یا اچ تی ام ال باشه یا جاوا و یا حتی ادوایت نرسیدم چون اینم خودش یه مشکله دیگست که اگه میخوام بیارم تو بیلدر باید بشه کدها را داخل نوت پد به شکل تکست به بیلدر فرستاد

جمع بندی اینکه اگه شما صفحه ای تو وب سراغ داری که با مطالعه اش راهکار بدست بیارم ویا کدی داری اینجا برام بذاری ممنون میشم

فقط عرض کنم بنده اچ تی ام ال و دلفی تا حدودی بلدم اما جاوا اسکریپت اصلا ولی خب چون قانون برنامه نویسی در همه زبانها یکیه جاوا هم باشه میتونم سر و تهش را هم بیارم

با تشکر
 

محمدمهدی

Well-Known Member
عزیزم با توجه به اینکه نَرِ، بدوشیم؟!
کی گفت شما درست توضیح ندادی؟
شما متوجه نیستی چیزی که می خوای اصلا وجود نداره. نه اینکه امکانش نیست. شما درخواستت غلطه فدای شما بشم. (تازه کاری نداریم که اگه با جاوا(به صورت رابط) یا پلاگین حل نشه، ارتباط مستقیم به MMB هم نداره.)
وقتی 3 تا مجهول داریم. معادله جواب نداره. باید یکیش حل بشه. مثلا بگی فقط توی A4 و قطعا توی A4 پرینت خواهد شد و کاربر نمی تونه تغییرش هم بده تا بشه یه فکر کرد.
مثلا اگه من بگم می خوام یه کتاب بنویسم. فقط هنوز نمی دونم درباره چی، حالا لطفا به من بگید چند صفحه میشه؟! تازه قیمتش هم اگه بگید ممنون میشم. راستی من نویسندگی بلد نیستم فقط چون راحت صحبت می کنم گمونم این اصل همه جا یکی باشه.

بزرگوار به شوخی گفتم شاید منظورم برسه خدمتتون. امیدوارم موجبات ناراحتی شما رو فراهم نکنه.

وقتی محتوی یکسان نیست. خود بیل گیتس هم نمی تونه پیش بینی بکنه چند صفحه میشه.
شما یه فرم یکسان بذار، بعد بگو با توجه به این فرم و با توجه به اینکه فقط A4 استفاده بشه = میشه انقدر صفحه. نمونه مثال اینی که گفتم هم با java و vb و c# و ... وجود داره. و در غیر html کامل کامل هست.
اگه حتی Print Preview بسازی هم داستان همینه ها! اونا هم همین کارو می کنن.
Word رو باز کن. دیدی؟ همون اول کار قطعه صفحه مشخص شده تا بدونه چند صفحه خواهد شد.
حالا توی HTML قطعه نداریم پس تعداد صفحه قطعی (تاکید می کنم قطعی، نه احتمالی) نداریم تا زمانی که مشخص بشه توی چه قطعه ای. حالا شما می تونی جلوی کاربر یا پرینترش رو بیگری که دست به اندازه قطعه صفحه نزنه!؟
 

MahmoodM30

مدیر <A href="http://forum.majidonline.com/forums/
سلام
من خروجی پلاگین اس کیو لایت را با کدهای اچ تی ام ال به چاپگر میفرستم تا عملیات پرینت را انجام بدم اما یک مشکل دارم اونم جوابش فقط یه راه داره که بتونم بفهمم متنی که برای پرینت ارسال میشه چند صفحه هستش

یعنی اگه متن ارسالی برای چاپ قراره در سه برگ چاپ بشه من بتونم اینو بفهمم
فکر کنم بشه با خود کد های html یا جاوا و .... تعداد کل صفحات رو قبل پرینت بدست آورد اگه بتونید این کار رو انجام بدید قبل پرینت میتونید به راحتی تعداد رو ازاون کد بگیرید و به کاربر نشون بدید
 
با سلام مجدد به خدمت تک تک دوستان
اهل ناراحت شدن نیستم چون اون اوایل که تازه درسم تموم شده بود و برای کار به شرکتهای برنامه نویسی مراجعه میکردم و میگفتم با دلفی و بیلدر کد نویسی میکنم بهم میخندیدن ولی کم کم که کارامو دیدن هم از کار من متعجب شدن و هم از توانایی بیلدر و دلفی. پس به حد کافی پوست کلفت هستم. و از اونجا که میدونم میشه و کار نشد نداره پس بالاخره راه حل این مشکل را هم پیدا میکنم . حالا به هر شکل و نحوی.
متاسفانه اصلی ترین مشکل من تو کار برنامه نویسی ضعفم در ارتباط با سخت افزاره و این هم از اونجا ناشی میشه که سی بلد نیستم. یا حداقل خوب بلد نیستم.

بگذریم

حالا کسی میدونه تو اچ تی ام ال چطور میشه کاغذو موقع پرینت برگردوند؟ یعنی بجای پرینت عمودی پرینت افقی گرفت؟ مثل همون کاری که تو ورد میکنن.


با تشکر
 

the_king

مدیرکل انجمن
با سلام مجدد به خدمت تک تک دوستان
اهل ناراحت شدن نیستم چون اون اوایل که تازه درسم تموم شده بود و برای کار به شرکتهای برنامه نویسی مراجعه میکردم و میگفتم با دلفی و بیلدر کد نویسی میکنم بهم میخندیدن ولی کم کم که کارامو دیدن هم از کار من متعجب شدن و هم از توانایی بیلدر و دلفی. پس به حد کافی پوست کلفت هستم. و از اونجا که میدونم میشه و کار نشد نداره پس بالاخره راه حل این مشکل را هم پیدا میکنم . حالا به هر شکل و نحوی.
متاسفانه اصلی ترین مشکل من تو کار برنامه نویسی ضعفم در ارتباط با سخت افزاره و این هم از اونجا ناشی میشه که سی بلد نیستم. یا حداقل خوب بلد نیستم.

بگذریم

حالا کسی میدونه تو اچ تی ام ال چطور میشه کاغذو موقع پرینت برگردوند؟ یعنی بجای پرینت عمودی پرینت افقی گرفت؟ مثل همون کاری که تو ورد میکنن.


با تشکر

HTML:
<!DOCTYPE html>
<html>
<head>
<style media="print">
    @page { size: landscape; }
    body { writing-mode: tb-rl; }
</style>
</head>
<body>
Example
</body>
</html>
 
سلام و تشکر از همه
یه سوال؟
همونطور که میدونید اکسل یه قسمت فرمول نویسی داره آیا تو اچ تی ام ال هم میشه کد نویسی برای بخش فرمول نویسی کرد
به عبارت بهتر میخوام تو بیلدر تعدادی از فیلدهای بانک اطلاعاتی اس کیو ال که عددی هستن مجموعش تو خروجی که اکسل هست نمایش داده بشه
شاید بگید خب تو خود بیلدر عملیات محاسبه را انجام بده بفرست به اکسل اما مشکل اینه من میخوام اگه کاربر بعد گرفتن خروجی اکسل اگه تو خروجی اکسل هم فیلدهای عددی را تغییر داد فیلد مربوط به مجموع هم تغییر بکنه

با تشکر از همه دوستان
 
مرسی ولی متن را هم با صفحه میچرخونه اما در بخش تنظیمات پرینت اگه دقت کرده باشین گزینه ای هست که کاغذو میچرخونه فقط
میشه راه حل را بگید؟
 

جدیدترین ارسال ها

بالا