PDA

View Full Version : سوال: کار با pdf



kingtak
شنبه 02 دی 1391, 10:37 صبح
سلام دوستان
من دارم یه با c# یه برنامه کتابخانه دیجیتال مینویسم
میخوام اینجوری باشه که توی دیتابیس یه جدول برای کتاب ها باشه که مشخصات کتاب(عنوان،نویسنده،ناشر و...)رو نگه میداره.و اطلاعات توی دیتا گرید نشون داده میشه.
حالا می خوام وقتی کاربر روی هر آیتم کلیک کرد کتابی که با فرمن pdf هست باز بشه و...
چند تا سوال دارم؟
آیا باید کتاب ها رو هم توی دیتا بیس ذخیره کنم؟
میتونم توی شبکه محلی آدرس یه دایرکتوری رو بدم و وقتی کاربر توی دیتاگرید کلیک کرد اون کتاب مربوطه باز بشه؟(چجوری)
اصلا چطوری باید آیتم انتخاب شده رو به فایل کتاب ربط بدم؟باید آدرس هرکتاب رو توی جدول دیتابیس نگه دارم؟

danialafshari
شنبه 02 دی 1391, 11:12 صبح
سلام دوست عزیز
شما باید در دیتابیست پیش (عنوان،نویسنده،ناشر و...) یک فیلد دیگه ایجاد کنی به نام مسیر فایل و مسیر فایل pdf رو اونجا ذخیره کنی
برای باز کردن فایل pdf هم می تونی از کامپوننت axAcroPDF1 که مال adobe reader یا همون adobe acrobat هست استفاده کنی(باید نصب باشه)
بعد با کد زیر فراخوانی می کنی :
OpenFileDialog dlg = new OpenFileDialog();
dlg.Filter = "pdf files (*.pdf) |*.pdf";
dlg.ShowDialog();
if (dlg.FileName != null)
{
axAcroPDF1.LoadFile(dlg.FileName);
}

به همین راحتی
موفق باشی

morteza271
شنبه 02 دی 1391, 11:30 صبح
سلام.
برای ذخیره کردن فایل های توی دیتابیس یا فقط آدرسش بستگی به خودتون و برنامتون داره.
اگه توی دیتابیس ذخیره کنید شاید بعد از مدتی حجم دیتابیستون زیاد بشه و اگه آدرس فایل رو ذخیره کنید ممکنه کاربر اون فایل رو از اونجا حذف کنه و یا جابجاش کنه پس برنامتون ممکنه به خطا بخوره که باید مدیریت کنید حتی ممکنه مشکلات دیگه ای هم بوجود بیاره مثلا برای پشتیبان گیری و بازیابی ...

من توصیه میکنم توی دیتابیس ذخیره کنید ولی اگه نمیتونید بهتره پس هر فایلی که انتخاب شد رو ابتدا به کنار برنامه کپی کنید و بعد آدرس جدید رو توی دیتابی ذخیره کنید. اینطوری کنترلش بهتره.

samadblaj
شنبه 02 دی 1391, 13:24 عصر
سلام.
برای ذخیره کردن فایل های توی دیتابیس یا فقط آدرسش بستگی به خودتون و برنامتون داره.
اگه توی دیتابیس ذخیره کنید شاید بعد از مدتی حجم دیتابیستون زیاد بشه و اگه آدرس فایل رو ذخیره کنید ممکنه کاربر اون فایل رو از اونجا حذف کنه و یا جابجاش کنه پس برنامتون ممکنه به خطا بخوره که باید مدیریت کنید حتی ممکنه مشکلات دیگه ای هم بوجود بیاره مثلا برای پشتیبان گیری و بازیابی ...

من توصیه میکنم توی دیتابیس ذخیره کنید ولی اگه نمیتونید بهتره پس هر فایلی که انتخاب شد رو ابتدا به کنار برنامه کپی کنید و بعد آدرس جدید رو توی دیتابی ذخیره کنید. اینطوری کنترلش بهتره.

سلام ببخشید وقتی یک فایل pdf ؤو باز کنیم ابتدا در سیستم کپی میشود و بعد اجرا آیا میشه مستقیم از دیتابیس فایل رو اجرا کرد؟

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

morteza271
شنبه 02 دی 1391, 15:55 عصر
سلام ببخشید وقتی یک فایل pdf ؤو باز کنیم ابتدا در سیستم کپی میشود و بعد اجرا آیا میشه مستقیم از دیتابیس فایل رو اجرا کرد؟
راستش من خودم دقیقا این کار رو نکردم که به صورت مستقیم بازش کنم.
من معمولا فایل رو توی دیتابیس ذخیره میکنم و برای نمایش آن اول اونو روی سیستم کپی میکنم و بعد بازش میکنم و در آخر هم حذفش میکنم.
میتونید مثلا یه پوشه temp کنار برنامتون بسازید و فایلها رو توی اون ذخیره کنید و بعد از اینکه برنامتون بسته شد فایل های داخلش رو حذف کنید.

البته به نظرم باید اینکار امکانپذیر باشه. مثلا با همون کامپوننتی که دوستمون معرفی کردن شاید بشه که اینکار رو کرد. به صورتی که مثلا به جای آدرس فایل بهش یه ارایه بایت یا استریم داد.
به نظرم بگردین حتما میشه اینکار رو کرد.
موفق باشید

kingtak
شنبه 02 دی 1391, 22:20 عصر
از دوستانم به خاطر توجهی که کردن ممنونم.
به نظر خودم هم اگه آدرس فایل هارو تو دیتا بیس ذخیره کنم به صرفه تره.
ولی یه مشکل دیگه دارم که نمیتونم فایل pdf رو توی برنامه باز کنم
این کدی هم که معرفی کردید توی wpfکار نکرد.اسمبلی axAcroPDF1 هم اصلا اضافه نمیشه....
توی اینترنت هم خیلی سرچ کردم ولی باز به نتیجه درست حسابی نرسیدم.
مثلا تو این لینک:http://www.codeproject.com/Articles/380019/Using-Adobe-Reader-in-a-WPF-app
این لینک به نظر کامله ولی نتونستم کامل متوجه بشم در ضمن چون با MVVM آشنا نیستم اصلا متوجه نمیشم چطوریه
باز اگه از دوستان کسی توی wpf این کار رو انجام داده یا منبع فارسی کامل خبر داره کمکم کنه.
کارم خیلی لنگه!!!!!!!!!:ناراحت:

kingtak
یک شنبه 03 دی 1391, 14:18 عصر
آخرش یه راه ساده تونستم پیدا کنم.:لبخندساده:
یه دونه Web Browser به صفحه اضافه میکنم و تو کد های XAML آدرس فایل Pdf رو توی خاصیت سورس قرار میدم یا کد پایین رو توی یک دکمه میزارم و وقتی کلیک شد فایل من باز میشه.

webBrowser1.Navigate(@"D:\Programing\C#‎‎‎\1001inC#‎‎‎.pdf");


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

SHD.NET
یک شنبه 03 دی 1391, 16:46 عصر
نمیشه بدون اینکه adobe pdf نصب باشه از برنامه استفاده کرد ؟
یعنی سیستمی که روی اون این برنامه نصب نیست ، چجوری میشه این مشکلو حل کرد ؟؟
با Copy local میشه ؟

ممنون

samadblaj
یک شنبه 03 دی 1391, 17:13 عصر
نمیشه بدون اینکه adobe pdf نصب باشه از برنامه استفاده کرد ؟
یعنی سیستمی که روی اون این برنامه نصب نیست ، چجوری میشه این مشکلو حل کرد ؟؟
با Copy local میشه ؟

ممنون

سلام دوست عزیز با استفاده از این فایل میتونید فایل های PDF رو باز کنید و نیازی به نصب Adobe Reader هم نیست...نسخه اخرش الان تو دستم نیست...

http://barnamenevis.org/attachment.php?attachmentid=21112&stc=1&d=1217533339

danialafshari
دوشنبه 04 دی 1391, 01:03 صبح
نمیشه بدون اینکه adobe pdf نصب باشه از برنامه استفاده کرد ؟
یعنی سیستمی که روی اون این برنامه نصب نیست ، چجوری میشه این مشکلو حل کرد ؟؟
با Copy local میشه ؟

ممنون

شما می تونی pdf رو تبدیل به html کنی و راحت و بدون نیاز به نصب برنامه از اون استفاده کنی
موفق باشی

FastCode
دوشنبه 04 دی 1391, 01:10 صبح
نمیدونم توی ویندوز کار میکنه یا نه ولی نباید مشکلی داشته باشه چون CLI ه.
http://packages.debian.org/squeeze/libpoppler-cil