Как создать PDF с помощью C#
Мы всегда ищем способы создавать PDF-документы и работать с ними в проектах на C# более точно, аккуратно и эффективно. Наличие простых в использовании функций из библиотеки позволяет нам сосредоточиться больше на работе, а меньше на трудоемких деталях создания PDF, будь то в .NET.
Следующий фрагмент кода также работает с библиотекой Aspose.PDF.Drawing.
Создание (или генерация) PDF документа на языке C#
API Aspose.PDF для .NET позволяет создавать и читать PDF-файлы с использованием C# и VB.NET. API может использоваться в различных приложениях .NET, включая WinForms, ASP.NET и многие другие. В этой статье мы покажем, как использовать API Aspose.PDF для .NET для легкого создания и чтения PDF-файлов в приложениях .NET.
Как создать простой PDF файл
Для создания PDF файла на C# можно использовать следующие шаги.
- Создайте объект класса Document
- Добавьте TextFragment в коллекцию Paragraphs страницы
- Сохраните результатирующий 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");
}
}
}
}