PDA

View Full Version : خواندن كاراكتر به كاراكتر از برنامه ي Microsoft Word



mohsen.srn
شنبه 19 شهریور 1390, 00:45 صبح
سلام خسته نباشيد...
راستش در برنامه اي كه من در نظر دارم روش كار كنم بايد از فايل PDF كلمات رو خوانده و در يك پايگاه داده ذخيره كنم. شك داشتم كه آيا مي شه اين كار رو كرد يا نه. اما بعد فكر كردم چه كاريه كه مسقيما از روي فايل PDF كاراكتر به كاراكتر بخونم، وقتي قبلا برنامه اي نوشتند كه PDF رو به فايل Word تبديل مي كنه.:چشمک: البته نمي دونم شايد راه بهتري هم باشه.

اما حالا موندم چطوري مي شه كاراكتر به كاراكتر از فايل Word خوند:اشتباه:. اگه ميشه يه راهنماييم بكنيد بسيار ممنون مي شم. اگه با مثال باشه بسيار بسيار خوشحالم مي كنيد.
اگه احتمالا برنامه ي open source هم سراغ داره كه چيزي شبيه به اين رو انجام بده معرفي كنيد.

پيشاپيش بسيار ممنونم.

Arcsinos
شنبه 19 شهریور 1390, 14:35 عصر
این کار عملا غیر عملیه و باید با سازندگان فایل های doc. یه مشورتی بکنی و ببینی که فایلشون از چند بخش تشکیل شده .

اگه بیای یه فایل doc. درست کنی و توش بنویسی Salam و بعد اون رو ذخیره کنی ، میبینی که حدود 22010 بایت جا میگیره ، این درحالیه که اگه همین salam رو با اکستنشن txt. ذخیره کنی میبینی که اینن فایل فقط 10 بایت جا میگیره .

البته اگه یه مقدار با همین فایل doc. ور بری و سعی کنی که بفهمی salam بعد از چندمین بایت شرو میشه ، بعد از اون میتونی با دستیابیه تصادفی یا همون تابع fseek برای بقیقه ی فایلهات هم این کارو کنی . اگه یه فایل doc. رو با notepad باز کنی که من این کارو کردم دیدم یه جاهایی وسطای فایل و بین هزاران کاراکتر نا مفهوم نوشته salam . بعد اومدم فونت و رنگ و همه ی چرت و پرتای فایل رو تغییر دادم و بعد فایل رو ذخیره کردم و باز هم حجم فایل همون 22010 بود و جای salam هم همون جای قبلی بود یعنی اینکه ، تغییر فونت و انداه و غیره روی حجم فایل و همچنین جایی که فایل متنی (یعنی salam) شرو میشه تاثیر نمیذاره .

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

Salar Ashgi
شنبه 19 شهریور 1390, 21:45 عصر
به لینک های زیر نگاهی بکنید :



http://www.velocityreviews.com/forums/t615637-read-office-files-from-c.html
http://social.msdn.microsoft.com/Forums/ar/worddev/thread/808a78b6-f8d8-4f06-b71e-c68e6b79b291
http://www.codeguru.com/forum/showthread.php?t=480454

موفق باشید ./

sh4mid
یک شنبه 20 شهریور 1390, 00:05 صبح
سلام
برای اینکه بتونی با محصولات Microsoft Office کار کنی چندتا راه هست
1- بری اینجا (http://msdn.microsoft.com/en-us/library/cc313118.aspx) و این (http://download.microsoft.com/download/2/4/8/24862317-78F0-4C4B-B355-C7B2C1D997DB/OfficeFileFormatsProtocols.zip) رو download کنی و بعد براساس اون کد بزنی
(برای Word2003 به قبل هم باید از این (http://download.microsoft.com/download/5/0/1/501ED102-E53F-4CE0-AA6B-B0F93629DDC6/Word97-2007BinaryFileFormat(doc)Specification.pdf)است اده کنی)
2- از Office Development with Visual Studio (VSTO) (http://msdn.microsoft.com/en-us/office/hh133430) استفاده کنی
4- از مفهوم office automation استفاده کنی( Considerations for server-side Automation of Office (http://support.microsoft.com/kb/257757) , Why Microsoft Office automation is not a good idea (http://www.textcontrol.com/en_US/blog/archive/20100709/) )
5- برای Word2007 به بعد (docx) از OpenXML استفاده کنی
6- بگردی دنبال کتابخونه های آماده یا Open Source
و ...
یک مثال ساده (C# هست ولی میشه تغییرش داد )

using System;
using System.Linq;
using DocumentFormat.OpenXml.Packaging;
using DocumentFormat.OpenXml.Wordprocessing;
using System.Text;

namespace wordsample
{
class Program
{
static void Main(string[] args)
{

string fileName = @"C:\mydoc.docx";
StringBuilder paras = new StringBuilder();
using (WordprocessingDocument myDocument = WordprocessingDocument.Open(fileName, true))
{

int cntPara=0;
foreach (Paragraph para in myDocument.MainDocumentPart.Document.Body.Elements<Paragraph>().ToList())
{
paras.AppendFormat("para{0}:{1}{2}", cntPara++, para.InnerText, Environment.NewLine);
}
}
Console.WriteLine(paras.ToString());
Console.WriteLine("All done. Press a key.");
Console.ReadKey();
}
}

باید DocumentFormat.OpenXml.dll (http://www.microsoft.com/download/en/details.aspx?id=5124) و WindowsBase.dll رو بهش اضافه کنی