كيفية إنشاء ملف PDF باستخدام C#

نحن دائمًا نبحث عن طريقة لإنشاء مستندات PDF والعمل معها في مشاريع C# بشكل أكثر دقة وفعالية. وجود وظائف سهلة الاستخدام من مكتبة يتيح لنا تتبع المزيد من العمل، وأقل على التفاصيل التي تستغرق وقتًا طويلاً في محاولة لإنشاء PDFs، سواء في .NET.

الشفرة التالية تعمل أيضا مع مكتبة Aspose.PDF.Drawing.

إنشاء (أو توليد) مستند PDF باستخدام لغة C#

تتيح لك واجهة برمجة التطبيقات Aspose.PDF لـ .NET إنشاء وقراءة ملفات PDF باستخدام C# وVB.NET. يمكن استخدام الواجهة في مجموعة متنوعة من تطبيقات .NET بما في ذلك WinForms وASP.NET وعدة تطبيقات أخرى. في هذا المقال، سنوضح كيفية استخدام واجهة برمجة التطبيقات Aspose.PDF لـ .NET لتوليد وقراءة ملفات PDF بسهولة في تطبيقات .NET.

كيفية إنشاء ملف PDF بسيط

لإنشاء ملف PDF باستخدام C#، يمكن استخدام الخطوات التالية.

  1. إنشاء كائن من فئة Document
  2. إضافة TextFragment إلى مجموعة Paragraphs للصفحة
  3. حفظ المستند PDF الناتج
// المسار إلى دليل المستندات.
string dataDir = RunExamples.GetDataDir_AsposePdf_QuickStart();

// تهيئة كائن المستند
Document document = new Document();
// إضافة صفحة
Page page = document.Pages.Add();
// إضافة نص إلى الصفحة الجديدة
page.Paragraphs.Add(new Aspose.Pdf.Text.TextFragment("Hello World!"));
// حفظ PDF المحدث
document.Save(dataDir + "HelloWorld_out.pdf");

كيفية إنشاء مستند PDF قابل للبحث

Aspose.PDF لـ .NET يوفر الميزة لإنشاء وكذلك التعديل على مستندات PDF الموجودة. Aspose.PDF لـ .NET يوفر القدرة على إنشاء وكذلك التعديل على مستندات PDF الموجودة.

المنطق المحدد أدناه يتعرف على النصوص لصور PDF. للتعرف يمكنك استخدام دعم OCR الخارجي الذي يدعم معيار HOCR. لأغراض الاختبار، استخدمنا OCR من Google tesseract المجاني. لذلك، أولاً يجب عليك تثبيت Tesseract-OCR على نظامك، وسوف تحصل على تطبيق وحدة التحكم tesseract.

فيما يلي الكود الكامل لتحقيق هذا المطلب:

using System;

namespace Aspose.Pdf.Examples.Advanced.WorkingWithDocuments
{
    class ExampleCreateDocument
    {
        private const string _dataDir = "C:\\Samples";
        public static void CreateSearchableDocuments(string file)
        {
            Aspose.Pdf.Document doc = new Aspose.Pdf.Document(file);
            bool convertResult = false;
            try
            {
                convertResult = doc.Convert(CallBackGetHocr);
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
            }
            doc.Save(file);
            doc.Dispose();
        }

        static string CallBackGetHocr(System.Drawing.Image img)
        {
            string tmpFile = System.IO.Path.GetTempFileName();
            try
            {
                System.Drawing.Bitmap bmp = new System.Drawing.Bitmap(img);

                bmp.Save(tmpFile, System.Drawing.Imaging.ImageFormat.Bmp);
                string inputFile = string.Concat('"', tmpFile, '"');
                string outputFile = string.Concat('"', tmpFile, '"');
                string arguments = string.Concat(inputFile, " ", outputFile, " -l eng hocr");
                string tesseractProcessName = @"C:\Program Files\Tesseract-OCR\Tesseract.exe";

                System.Diagnostics.ProcessStartInfo psi =
                    new System.Diagnostics.ProcessStartInfo(tesseractProcessName, arguments)
                    {
                        UseShellExecute = true,
                        CreateNoWindow = true,
                        WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden,
                        WorkingDirectory = System.IO.Path.GetDirectoryName(tesseractProcessName)
                    };

                System.Diagnostics.Process p = new System.Diagnostics.Process
                {
                    StartInfo = psi
                };
                p.Start();
                p.WaitForExit();

                System.IO.StreamReader streamReader = new System.IO.StreamReader(tmpFile + ".hocr");
                string text = streamReader.ReadToEnd();
                streamReader.Close();

                return text;
            }
            finally
            {
                if (System.IO.File.Exists(tmpFile))
                    System.IO.File.Delete(tmpFile);
                if (System.IO.File.Exists(tmpFile + ".hocr"))
                    System.IO.File.Delete(tmpFile + ".hocr");
            }
        }
    }
}