ذخیره گرفتن اتوماتیک از فرم بصورت PDF
سلام به همه اساتید عزیز ، من یه پروژه دارم بدون بانک اطلاعاتی ، در این پروژه هر آنچه که کاربر وارد می کنه با روش ارسال پارامتر به stimulsoft report میره برای چاپ.خب تا اینجای کار رو انجام دادم و مشکلی هم نداشتم اما میخواستم ببینم راهی هست که همون فرمی چاپی بصورت PDF یا JPG به ادرسی که بهش معرفی می کنیم هم ذخیره بشه ؟؟؟؟ تا بعدا بشه بهشون دسترسی مجدد داشت ... در واقع اسناد بایگانی بشن جهت دسترسی در آینده ، خب اینجا این سوال مطرح میشه که توی صفحه چاپ stimulsoft report این قابلیت وجود داره و میشه save as های مختلفی رو گرفت اما من مدنظرم این هست که کاربر نخواد خودش اینکار رو انجام بده و به صورت اتوماتیک این کار انجام بشه ، در واقع ما کاربر رو مبتدی فرض می کنیم که میخوایم با کدنویسی این کار رو از روی دوش اون برداریم ، دوستان برنامه stimulsoft report خودش دستور پذیر نیست ؟؟؟؟ ممنون
14 پاسخ
بله این کار نیز قابل انجام هست با استفاده از کد زیر می توانید به طور مستقیم فایل رو به صورت pdf ذخیره کنید
StiPdfExportSettings pdfSettings = new StiPdfExportSettings(); report.ExportDocument(StiExportFormat.Pdf, "MyReport.Pdf", pdfSettings);
بسیار ممنون ...
خب کد رو نگاه کردم ...چند تا سوال
اول اینکه کد رو بزارم دقیقا کجا ...؟؟؟ یعنی این کد بعد از کد ارسال پارامتر به استیمول که در رویداد کلیک باتون هست بزارم ؟
دوم اینکه فکر کنم با این کد از ریپورت ساخته شده pdf میسازه یعنی همزمان میشه اینکار رو کرد؟؟؟ یعنی پارامترها ارسال بشن و بلافاصله pdf هم ساخته بشه ... با این کد به نظر میرسه شدنی نباشه ...
من منظورمه توی توضیحات قبلی نوشتم ... وقتی کاربر موارد خواسته شده رو وارد کرد پارامترها بوسیله دستور به استیمول ارسال میشن و این پارامترها هیچ جا ذخیره نمیشن حالا میخوام علاوه بر اراسل به استیمول به صورت pdf هم اون هم اتوماتیک که کاربر درگیر نشه ذخیره بشه چون میخوام یک باتون روی فرم اصلیم بزارم که فولدری که اون pdf ها ذخیره میشن رو باز کنه برای دسترسی به فایل ها قبلی ...
ممنون
بسیار بسیار ممنون عالی البته من کد رو یه کمی تغییر دادم تا فولدر آرشیو رو کنار پروژه خودم داشته باشم
dialog.InitialDirectory = Application.StartupPath + "\\Archive";
باز هم ممنون
سلام کد زیر را قبل از فراخوانی showdialog قرار دهید
dialog.InitialDirectory = "d:\\myfoler";
شما می تونید یه savefile dialog بذارید و از کاربر بپرسید که فایل رو کجا و با چه نامی ذخیره کنه
و یا می تونید قبل از این که این خط کد رو اجرا کنید با
File.Exists("filename");
چک کنید ببینید فایل وجود دارد یا خیر اگر وجود داشت با یک نام دیگر ذخیره کنید
از کد زیر استفاده کنید
var dialog=new SaveFileDialog();
if(dialog.ShowDialog()==DialogResult.Ok)
{
report.ExportDocument(StiExportFormat.Pdf, dialog.FileName);
}
در مورد اون خطا هم که عکسش رو گذاشتید باید در قسمت بالای صفحه اونجا که نوشته using خط زیر رو اضافه کنید
using System.IO;
ممنون استاد ...
میشه گفت 90 درصد کارم به درستی انجام شده فقط هنوز یک کاره دیگه مونده
اون کدی که شما زحمت کشیدید گذاشتید من زدم یه مشکل داشت اونم این بود که پسوند فایل رو حتما باید دستی وارد می کردیم تا بصورت pdf ذخیره بشه به همین خاطر من کد رو اینطوری تغییر دادم :
SaveFileDialog sfd = new SaveFileDialog();
sfd.Filter = "PDF File|*.pdf";
if (sfd.ShowDialog() == DialogResult.OK) ;
{
report.ExportDocument(StiExportFormat.Pdf, sfd.FileName);
}
با این کد پسوند بصورت پیشفرض روی pdf هستش خب کاربر فقط کافیه نام فایل رو بنویسه و ذخیره کنه بالطبع اگر از قبل فایلی با همین نام باشه نمیتونه ذخیره کنه بنابراین باید با یه نام دیگه ذخیره کنه
فقط یه کار دیگه مونده میخوام مسیر پیشفرض ذخیره فایل رو هم قرار بدم تا کاربر نخواد مسیر رو خودش انتخاب کنه و در اصل میخوام مسیر ثابتی رو بدم تا همون مسیر رو برای بایگانی در نظر بگیرم و با یک button اون مسیر رو ادرس دهی کنم تا کابر بتونه بهشون دسترسی داشته باشه
سلام به شما
نرم افزار stimulReport این قابلیت رو داره و شما می تونید به صورت pdf از گزارش خود export بگیرید. حال راه دوم این است که یک برنامه pdf ساز نصب کنید و هنگام پرینت گرفتن به جای انتخاب پرینتر فیزیکی برنامه نصب شده را انتخاب کنید. و یا بر روی print to pdf کلیک کنید.
ممنون از پاسخگویی ...
توضیح بیشتری میدم شاید کمی مبهم گفته بودم ببنید وقتی کاربر موارد خواسته شده رو تکمیل می کنه خب دکمه چاپ رو میزنه و بالطبع stimulsoft باز میشه و کاربر مجدد دکمه چاپ رو میزنه و چاپ اتفاق میفته ...
بله کاربر از همون صفحه هم میتونه export بگیره و pdf گزارش رو هم ذخیره کنه
اما من هدفم اینه که این کار رو کاربر نخواد انجام بده و بصورت اتوماتیک و مستقیم یک نسخه pdf از همون گزارش در یک مسیری که از قبل مشخصش می کنیم ذخیره بشه
ممنون
ممنون جناب عادلی عزیز
این دستوری که گفتید رو گذاتم قبل از کد قبلی اما خطا گرفت عکسش رو میگذارم
اون savefile dialog که فرمودید رو چطوری بنویسم و کجا قرارش بدم اگر راهنمایی بفرمائید خیلی ممنون میشم چون دقیقا دنبال همین مورد بودم فکر کردم شدنی نیست ... ببخشید آخه بنده مبتدی هست خیلی هنوز راه نیفتادم
از اساتید بزرگوار یک نفر محبت کنه این مورد آخر رو هم راهنمایی کنه ممنون میشم
متشکرم
با کمی ور رفتن خودم به این کد رسیدم :
string txt = textBox1.Text.ToString() + ".pdf";
report.ExportDocument(StiExportFormat.Pdf, txt);
با این کد مقداری رو که کاربر توی تکست باکس 1 وارد می کنه با پسوند pdf. جمع می کنه و در کنار فایل exe ذخیره می کنه
حالا اگر بخوام این فایل آدرس دهی کنم که یک جای مشخص ذخیره بشه باید چکار کنم؟؟؟؟
البته همچنان دنبال روش savefile dialog هستم اگر میشه راجب به اون هم راهنمایی کنید ... باید چیز جالبی باشه
ممنون
دوست عزیز شما از کجا به نظرتون میرسه که شدنی نباشه؟
شما توی هر قسمتی که می خواهید ریپورت ساخته شده به صورت pdf ذخیره بشه این کد رو قرار میدید یعنی همون شکلی که بعد از وارد کردن پارامتر های ریپورت ساخته میشه. در قسمت آدرسی که در داخل متد آورده شده است شما می توانید آدرس پوشه خود را بگذارید.
سلام مجدد
اون کدی که شما گذاشتید رو امتحان کردم متاسفانه خطا میده به این قسمت
StiPdfExportSettings
اما از این کد که استفاده کردم و خوشبختانه مشکل حل شد :
report.ExportDocument(StiExportFormat.Pdf, "MyReport.Pdf");
خب با این کد یک فیل pdf با نام myreport در کنار فایل exe برنامه خودم ایجاد میشه که خیل عالی هستش
اما یه مشکل دیگه ای وجود داره اگر هر سری اطلاعات جدید وارد کنم فایل جدید ساخته نمیشه و فایل موجود تغییر میکنه ....!!!
به نظرتون کد رو باید چطوری تغییر بدم که هر سری یک فایل جدید ساخته بشه مثلا myreport1 و myreport2 الی آخر
ممنون