Cómo Crear PDF usando C#
Siempre estamos buscando una manera de generar documentos PDF y trabajar con ellos en proyectos C# de manera más precisa, exacta y efectiva. Tener funciones fáciles de usar de una biblioteca nos permite enfocarnos más en el trabajo y menos en los detalles que consumen tiempo al intentar generar PDFs, ya sea en .NET.
El siguiente fragmento de código también funciona con la biblioteca Aspose.PDF.Drawing.
Crear (o Generar) documento PDF usando el lenguaje C#
Aspose.PDF para .NET API te permite crear y leer archivos PDF usando C# y VB.NET. La API puede ser utilizada en una variedad de aplicaciones .NET incluyendo WinForms, ASP.NET y varias otras. En este artículo, vamos a mostrar cómo usar Aspose.PDF para API .NET para generar y leer archivos PDF fácilmente en aplicaciones .NET.
Cómo Crear un Archivo PDF Simple
Para crear un archivo PDF usando C#, se pueden usar los siguientes pasos.
- Crear un objeto de la clase Document
- Agregar TextFragment a la colección de Paragraphs de la página
- Guardar el documento PDF resultante
// La ruta al directorio de documentos.
string dataDir = RunExamples.GetDataDir_AsposePdf_QuickStart();
// Inicializar el objeto documento
Document document = new Document();
// Agregar página
Page page = document.Pages.Add();
// Agregar texto a la nueva página
page.Paragraphs.Add(new Aspose.Pdf.Text.TextFragment("¡Hola Mundo!"));
// Guardar el PDF actualizado
document.Save(dataDir + "HelloWorld_out.pdf");
Cómo crear un documento PDF buscable
Aspose.PDF para .NET ofrece la característica de crear así como manipular documentos PDF existentes. Aspose.PDF para .NET proporciona la funcionalidad para crear así como manipular documentos PDF existentes.
La lógica especificada a continuación reconoce texto en imágenes PDF. Para el reconocimiento puedes usar soportes de OCR externos que sigan el estándar HOCR. Para propósitos de prueba, hemos utilizado el OCR de Google tesseract gratuito. Por lo tanto, primero necesitas instalar Tesseract-OCR en tu sistema, y tendrás la aplicación de consola tesseract.
A continuación se presenta el código completo para lograr este requisito:
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");
}
}
}
}