PDA

View Full Version : جایگزین کردن بخش های موردنظر در متن برای چاپ



samiasoft
سه شنبه 16 فروردین 1401, 01:27 صبح
سلام سال نو مبارک
فرض کنید چنین قراردادی دارید (لینک تصویر (https://s22.picofile.com/file/8448837784/2022_04_05_015415.jpg)) و میخواهید براساس اطلاعات ثبت شده در نرم افزار ، بخش هایی که نقطه چین هستند هرکدوم براساس پارامترهای مخصوص به خودشون از دیتابیس در این قرارداد جایگزین شود.


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


البته به جای اون نقطه چین ها هم میخواهم پارامترهایی قرار بدم مثلا برای نام بزارم > {name} و بقیه هم به این شکل.


اما مساله ای که هست اینه که ایا در استیمول سافت که متن را به ریچ تکست میفرستم چطوری این پارامترها رو بگم خودکار جایگزین بشن از دیتابیس؟؟ ظاهرا چنین امکانی ندارد چون اجازه استفاده از فقط یک متغیر را میده !
https://s22.picofile.com/file/8448839184/8.jpg


یک راه دیگر این است که بیام قبل از اینکه متن را به گزارشگیر میفرستم داخل کدنویسی این پارامترها رو replace کنم و بعد به فایل گزارش استیمول سافت بفرستم که متاسفانه در این حالت برای اینکه موقع Replac کردن استایل متن حفظ شود اومدم بدین صورت انجام دادم :
RichTextBox rtBox = new RichTextBox();
rtBox.Rtf = MyStrRTF;

rtBox.Find("{name}");
rtBox.SelectedText = "سامان بهنام";

اما متاسفانه بعد از جایگزین کردن متن موردنظر ، چون فونت مربوط به پارامتری که انگلیسی نوشته شده بود را به خود میگیرد که بنظر دیدم بهتره بیاد اخر کار کل فونت متن را به فونت موردنظر تغییر بدم :
rtBox.Font = new Font("B Nazanin", 10, FontStyle.Regular);

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

mazoolagh
سه شنبه 16 فروردین 1401, 13:13 عصر
سلام و روز و سال نو خوش

شما میتونین در خود داکیومنت ورد فیلد تعریف کنین و بعد از طریق برنامه اون داکیومنت رو باز کرده و به فیلدها مقدار بدین.

ROSTAM2
سه شنبه 16 فروردین 1401, 17:04 عصر
سلام فرض کنید چنین قراردادی دارید (لینک تصویر (https://s22.picofile.com/file/8448837784/2022_04_05_015415.jpg)) و میخواهید براساس اطلاعات ثبت شده در نرم افزار ، بخش هایی که نقطه چین هستند هرکدوم براساس پارامترهای مخصوص به خودشون از دیتابیس در این قرارداد جایگزین شود.


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


البته به جای اون نقطه چین ها هم میخواهم پارامترهایی قرار بدم مثلا برای نام بزارم > {name} و بقیه هم به این شکل.


اما مساله ای که هست اینه که ایا در استیمول سافت که متن را به ریچ تکست میفرستم چطوری این پارامترها رو بگم خودکار جایگزین بشن از دیتابیس؟؟ ظاهرا چنین امکانی ندارد چون اجازه استفاده از فقط یک متغیر را میده !
https://s22.picofile.com/file/8448839184/8.jpg


یک راه دیگر این است که بیام قبل از اینکه متن را به گزارشگیر میفرستم داخل کدنویسی این پارامترها رو replace کنم و بعد به فایل گزارش استیمول سافت بفرستم که متاسفانه در این حالت برای اینکه موقع Replac کردن استایل متن حفظ شود اومدم بدین صورت انجام دادم :
RichTextBox rtBox = new RichTextBox();
rtBox.Rtf = MyStrRTF;

rtBox.Find("{name}");
rtBox.SelectedText = "سامان بهنام";

اما متاسفانه بعد از جایگزین کردن متن موردنظر ، چون فونت مربوط به پارامتری که انگلیسی نوشته شده بود را به خود میگیرد که بنظر دیدم بهتره بیاد اخر کار کل فونت متن را به فونت موردنظر تغییر بدم :
rtBox.Font = new Font("B Nazanin", 10, FontStyle.Regular);

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

سلام.
من قبلا برای یک قرارداد ی سند چاپ ساختم. بنظر من اصلا مهم نیست با کدوم ابزاری ب چاپگر ارسال می کنی من تا حالا با استیمول سافت کار نکردم. مهم اینه که بتونی با اون ابزار راحت کار کنی هم برنامه نویس و هم کاربر.
من از کدهای HTML و web browser استفاده کردم و برای تغییرات هم، هم می تونی با id تگ رو فراخوانی کنی و مقدارشو تغییر بدی هم با replace جایگزین کنی و web browser برای پرینت هم همه ابزار مدیرت چاپ رو داره. کافیه طراحی اولیه قرارداد رو تو ی سند HTML بسازی و برای قسمت هایی که می خوای تغییر بدی ی تگ span با id مشخص تعریف کنی تا تو کدنویسی بتونی استفاده کنی.

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

samiasoft
چهارشنبه 17 فروردین 1401, 13:22 عصر
سلام و روز و سال نو خوش

شما میتونین در خود داکیومنت ورد فیلد تعریف کنین و بعد از طریق برنامه اون داکیومنت رو باز کرده و به فیلدها مقدار بدین.

متشکرم همچنین
میشد همینکارو کرد اما چون فقط به متن فایل ورد نیاز داشتم به همین خاطر کل متن را کاربر داخل برنامه وارد میکنه و در ریچ تکست باکس عملیات replce را انجام دادم.
برای حل مشکل فونت هم دیدم چناچه ابتدا و انتهای فیلد موردنظر را فونتش رو فونت موردنظر کنم بعد از replace بدرستی به فونت اولیه تغییر پیدا میکند که مشکل حل شد.



سلام.
من قبلا برای یک قرارداد ی سند چاپ ساختم. بنظر من اصلا مهم نیست با کدوم ابزاری ب چاپگر ارسال می کنی من تا حالا با استیمول سافت کار نکردم. مهم اینه که بتونی با اون ابزار راحت کار کنی هم برنامه نویس و هم کاربر.
من از کدهای HTML و web browser استفاده کردم و برای تغییرات هم، هم می تونی با id تگ رو فراخوانی کنی و مقدارشو تغییر بدی هم با replace جایگزین کنی و web browser برای پرینت هم همه ابزار مدیرت چاپ رو داره. کافیه طراحی اولیه قرارداد رو تو ی سند HTML بسازی و برای قسمت هایی که می خوای تغییر بدی ی تگ span با id مشخص تعریف کنی تا تو کدنویسی بتونی استفاده کنی.

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

کار جالبی انجام دادید سعی میکنم درصورت نیاز از این روش هم استفاده کنم ... ممنونم از راهنمایی

Mahmoud.Afrad
پنج شنبه 18 فروردین 1401, 08:40 صبح
به ازای هر داده ای که باید جایگذاری بشه یک variable توی گزارش ، پنل dictionary ایجاد کنید و توی متن ریچتکست نام متغیر را همراه {} به کار ببرید(همون مثالی که زدید). برای ارسال مقدار متغیر از برنامه به گزارش با کد عمل کنید
https://www.stimulsoft.com/en/samples/reports-net/net-framework/using-report-variables-in-code

samiasoft
جمعه 19 فروردین 1401, 00:15 صبح
به ازای هر داده ای که باید جایگذاری بشه یک variable توی گزارش ، پنل dictionary ایجاد کنید و توی متن ریچتکست نام متغیر را همراه {} به کار ببرید(همون مثالی که زدید). برای ارسال مقدار متغیر از برنامه به گزارش با کد عمل کنید
https://www.stimulsoft.com/en/samples/reports-net/net-framework/using-report-variables-in-code

بسیار ممنونم
درواقع کار اشتباهی که انجام میدادم در پراپرتی ریچ تکست میومدم فیلدهای متغیر را انتخاب میکردم برای همین بوده که امکان اجازه یک فیلد را میداد که با راهنمایی شما بایستی در قسمت متن این متغییرها را دستی وارد میکردم یا از سی شارپ به این میفرستادم.

mazoolagh
یک شنبه 21 فروردین 1401, 11:56 صبح
متشکرم همچنین
میشد همینکارو کرد اما چون فقط به متن فایل ورد نیاز داشتم به همین خاطر کل متن را کاربر داخل برنامه وارد میکنه و در ریچ تکست باکس عملیات replce را انجام دادم.
برای حل مشکل فونت هم دیدم چناچه ابتدا و انتهای فیلد موردنظر را فونتش رو فونت موردنظر کنم بعد از replace بدرستی به فونت اولیه تغییر پیدا میکند که مشکل حل شد.


من با توجه به تصویر پیوست (که یک فایل ورد بود) تصورم این بود که چون مستقیما با این داکیومنت نمیتونین کار کنین از روی ناچاری اون رو دوباره در گزارش طراحی کردین.
به هر حال این خواسته شما خیلی شبیه mail-merge است.

mazoolagh
یک شنبه 21 فروردین 1401, 12:01 عصر
سلام.
من قبلا برای یک قرارداد ی سند چاپ ساختم. بنظر من اصلا مهم نیست با کدوم ابزاری ب چاپگر ارسال می کنی من تا حالا با استیمول سافت کار نکردم. مهم اینه که بتونی با اون ابزار راحت کار کنی هم برنامه نویس و هم کاربر.
من از کدهای HTML و web browser استفاده کردم و برای تغییرات هم، هم می تونی با id تگ رو فراخوانی کنی و مقدارشو تغییر بدی هم با replace جایگزین کنی و web browser برای پرینت هم همه ابزار مدیرت چاپ رو داره. کافیه طراحی اولیه قرارداد رو تو ی سند HTML بسازی و برای قسمت هایی که می خوای تغییر بدی ی تگ span با id مشخص تعریف کنی تا تو کدنویسی بتونی استفاده کنی.

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

لطفا بفرمایید که کنترل وب بروزر در نمایش درست مواردی مثل full justify , line spacing , تو رفتگی (indent) اول پاراگراف و ... مشکلی نداره؟
یا فقط برای داکیومنت های ساده مفید هست؟

ROSTAM2
یک شنبه 21 فروردین 1401, 15:23 عصر
html انعطاف پذیری بسیار بالایی داره. و می شه باهاش ی ویرایشگر متن قوی ساخت.

https://www.w3schools.com/html/default.asp

برای نمایش رنگ بندی کد زبانهای برنامه نویسی بهترین روش استفاده از کدهای HTML هست.

برای ایجاد سندتون از خود ویژوال استودیو استفاده کنید نوار Formatting کمک زیادی می کنه.

153755

mazoolagh
سه شنبه 23 فروردین 1401, 13:12 عصر
html انعطاف پذیری بسیار بالایی داره. و می شه باهاش ی ویرایشگر متن قوی ساخت.

https://www.w3schools.com/html/default.asp

برای نمایش رنگ بندی کد زبانهای برنامه نویسی بهترین روش استفاده از کدهای HTML هست.

برای ایجاد سندتون از خود ویژوال استودیو استفاده کنید نوار Formatting کمک زیادی می کنه.

153755

ممنون،
ولی شما اصلا پرسش رو دقت نکردین!

پرسیده بودم که آیا کنترل وب بروزر در نمایش داکیومنت های پیچیده بدون مشکل هست یا نه؟
و مثال هم آوردم : مواردی مثل full justify , indent, line spacing
که مشخص شد تست نکردین، البته خیالتون راحت باشه چون اینها رو پشتیبانی میکنه.

ولی چون این کنترل بر مبنای internet explorer 7 هست و خیلی از قابلیتهای css3 و html5 رو پشتیبانی نمیکنه، ممکنه بعضی داکیومنت ها درست رندر نشن یا بعضی کدهای جاوااسکریپت اجرا نشن.

چند سالی هست که این کنترل از رده خارج محسوب میشه - بعد از اون کنترل webview اومد که برمبنای ie11 بود و الان هم که webview2 هست بر مبنای edge (کرومیوم)
https://developer.microsoft.com/en-us/microsoft-edge/webview2/