Analyzing your prompt, please hold on...
An error occurred while retrieving the results. Please refresh the page and try again.
Мы всегда ищем способ более точно, аккуратно и эффективно генерировать PDF-документы и работать с ними в проектах C#. Наличие простых в использовании функций из библиотеки позволяет нам больше отслеживать работу и меньше времени уделять сложным деталям создания PDF-файлов, будь то в .NET.
Следующий фрагмент кода также работает с библиотекой Aspose.PDF.Drawing.
API Aspose.PDF for .NET позволяет создавать и читать PDF-файлы с помощью C# и VB.NET. API можно использовать в различных приложениях .NET, включая WinForms, ASP.NET и другие. В этой статье мы покажем, как использовать API Aspose.PDF for .NET для простой генерации и чтения PDF-файлов в приложениях .NET.
Для создания PDF-файла с помощью C# можно выполнить следующие шаги:
// For complete examples and data files, visit https://github.com/aspose-pdf/Aspose.PDF-for-.NET
private static void CreateHelloWorldDocument()
{
// The path to the documents directory
var dataDir = RunExamples.GetDataDir_AsposePdf_QuickStart();
// Create PDF document
using (var document = new Aspose.Pdf.Document())
{
// Add page
var page = document.Pages.Add();
// Add text to new page
page.Paragraphs.Add(new Aspose.Pdf.Text.TextFragment("Hello World!"));
// Save PDF document
document.Save(dataDir + "HelloWorld_out.pdf");
}
}
Aspose.PDF for .NET предоставляет возможность создавать и манипулировать существующими PDF-документами. При добавлении текстовых элементов внутрь PDF-файла полученный PDF становится доступным для поиска. Однако если мы преобразуем изображение, содержащее текст, в PDF-файл, содержимое внутри PDF не будет доступно для поиска. В качестве обходного пути мы можем использовать OCR для полученного файла, чтобы он стал доступным для поиска.
Этот код распознаёт текст для PDF-изображений. Для распознавания вы можете использовать внешнее OCR, поддерживающее стандарт HOCR. Для целей тестирования мы использовали бесплатный Google tesseract OCR. Поэтому сначала вам нужно установить Tesseract-OCR в вашей системе, и у вас будет консольное приложение tesseract.
Ниже приведён полный код для выполнения этого требования:
// For complete examples and data files, visit https://github.com/aspose-pdf/Aspose.PDF-for-.NET
private static void CreateSearchableDocument()
{
// The path to the documents directory
var dataDir = RunExamples.GetDataDir_AsposePdf_QuickStart();
// Open PDF document
using (var document = new Aspose.Pdf.Document(dataDir + "SearchableDocument.pdf"))
{
document.Convert(CallBackGetHocr);
// Save PDF document
document.Save(dataDir + "SearchableDocument_out.pdf");
}
}
private static string CallBackGetHocr(System.Drawing.Image img)
{
var tmpFile = Path.GetTempFileName();
try
{
using (var bmp = new System.Drawing.Bitmap(img))
{
bmp.Save(tmpFile, System.Drawing.Imaging.ImageFormat.Bmp);
}
var inputFile = string.Concat('"', tmpFile, '"');
var outputFile = string.Concat('"', tmpFile, '"');
var arguments = string.Concat(inputFile, " ", outputFile, " -l eng hocr");
var tesseractProcessName = RunExamples.GetTesseractExePath();
var psi = new System.Diagnostics.ProcessStartInfo(tesseractProcessName, arguments)
{
UseShellExecute = true,
CreateNoWindow = true,
WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden,
WorkingDirectory = Path.GetDirectoryName(tesseractProcessName)
};
var p = new System.Diagnostics.Process
{
StartInfo = psi
};
p.Start();
p.WaitForExit();
using (var streamReader = new StreamReader(tmpFile + ".hocr"))
{
string text = streamReader.ReadToEnd();
return text;
}
}
finally
{
if (File.Exists(tmpFile))
{
File.Delete(tmpFile);
}
if (File.Exists(tmpFile + ".hocr"))
{
File.Delete(tmpFile + ".hocr");
}
}
}
Этот фрагмент кода работает с PDF-документом и его размеченным содержимым, используя библиотеку Aspose.PDF для его обработки.
Пример создаёт новый элемент span в размеченном содержимом первой страницы PDF, находит все элементы BDC и связывает их со span. Затем сохраняется изменённый документ.
Вы можете создать оператор bdc, указав mcid, lang и текст расширения, используя объект BDCProperties:
var bdc = new Aspose.Pdf.Operators.BDC("P", new Aspose.Pdf.Facades.BDCProperties(1, "de", "Hallo, welt!"));
После создания дерева структуры можно связать оператор BDC с указанным элементом структуры с помощью метода Tag на объекте элемента:
Aspose.Pdf.LogicalStructure.SpanElement span = content.CreateSpanElement();
span.Tag(bdc);
Шаги по созданию доступного PDF:
// For complete examples and data files, visit https://github.com/aspose-pdf/Aspose.PDF-for-.NET
private static void CreateAnAccessibleDocument()
{
// The path to the documents directory
var dataDir = RunExamples.GetDataDir_AsposePdf_QuickStart();
// Open PDF document
using (var document = new Aspose.Pdf.Document(dataDir + "tourguidev2_gb_tags.pdf"))
{
// Access tagged content
Aspose.Pdf.Tagged.ITaggedContent content = document.TaggedContent;
// Create a span element
Aspose.Pdf.LogicalStructure.SpanElement span = content.CreateSpanElement();
// Append span to root element
content.RootElement.AppendChild(span);
// Iterate over page contents
foreach (var op in document.Pages[1].Contents)
{
var bdc = op as Aspose.Pdf.Operators.BDC;
if (bdc != null)
{
span.Tag(bdc);
}
}
// Save PDF document
document.Save(dataDir + "AccessibleDocument_out.pdf");
}
}
Этот код изменяет PDF, создавая элемент span внутри размеченного содержимого документа и помечая определённый контент (операции BDC) с первой страницы этим span. Изменённый PDF затем сохраняется в новый файл.
Analyzing your prompt, please hold on...
An error occurred while retrieving the results. Please refresh the page and try again.