C#を使用してPDFを作成する方法

私たちは常にC#プロジェクトでPDFドキュメントを生成し、それらをより正確で効果的に扱う方法を探しています。ライブラリから使いやすい機能を使用することで、作業の追跡が可能になり、PDFを生成しようとする際の時間がかかる詳細について心配することが少なくなります。これが.NETであるかどうかです。

以下のコードスニペットもAspose.PDF.Drawingライブラリで動作します。

C#言語を使用してPDFドキュメントを作成(または生成)

Aspose.PDF for .NET APIを使用すると、C#およびVB.NETを使用してPDFファイルを作成および読み取ることができます。このAPIは、WinForms、ASP.NETなど、さまざまな.NETアプリケーションで使用できます。この記事では、Aspose.PDF for .NET APIを使用して.NETアプリケーションでPDFファイルを簡単に生成および読み取る方法を示します。

簡単なPDFファイルの作成方法

C#を使用してPDFファイルを作成するには、以下の手順を使用できます。

  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 for .NETは、PDF文書を作成および既存のPDF文書を操作する機能を提供します。 Aspose.PDF for .NETは、PDFドキュメントの作成および既存のPDFドキュメントの操作機能を提供します。

以下に指定されたロジックは、PDF画像のテキストを認識します。認識するためには、HOCR標準をサポートする外部OCRを使用できます。テスト目的で、無料のGoogle tesseract OCRを使用しました。そのため、まずシステムに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");
            }
        }
    }
}