Gestión de documentos

Gestión de documentos

Gestión de documentos

Document es el objeto raíz en Aspose.PDF FOSS para .NET. Representa un
archivo PDF completo y proporciona acceso a páginas, metadatos, campos de formulario y todas
las demás estructuras PDF. Abra archivos existentes con Document.Open y cree nuevos
con el constructor Document.


Apertura y creación de documentos

// Open from a byte array
using var doc = Document.Open(File.ReadAllBytes("input.pdf"));

// Open from a file path
using var doc2 = new Document("input.pdf");

// Create a new empty document
using var newDoc = new Document();
newDoc.Pages.Add();
newDoc.Save("new.pdf");

Trabajando con páginas

PageCollection gestiona las páginas del documento. Acceda a las páginas mediante un índice basado en 1, añada nuevas páginas o elimine las existentes.

using var doc = Document.Open(pdfBytes);

// Access first page
var page = doc.Pages[1];

// Add a blank page
var newPage = doc.Pages.Add();

// Get page count
int count = doc.Pages.Count;

Geometría de página

Cada página define varios cuadros delimitadores. Use los métodos setter en Page para ajustarlos.

var page = doc.Pages[1];
page.SetMediaBox(new Rectangle(0, 0, 612, 792));
page.SetCropBox(new Rectangle(36, 36, 576, 756));
page.SetRotation(90);

Guardando documentos

Guardar en una ruta de archivo, un flujo o una matriz de bytes.

// Save to file
doc.Save("output.pdf");

// Save to stream
using var ms = new MemoryStream();
doc.Save(ms);

Adjuntos de archivo

FileSpecification representa archivos adjuntos incrustados en un PDF.

var spec = new FileSpecification("data.csv", "Embedded data file");
doc.EmbeddedFiles.Add(spec);

Sellos de imagen

ImageStamp superpone una imagen raster en una página en una posición especificada.

var stamp = new ImageStamp("logo.png");
stamp.Put(doc.Pages[1]);
doc.Save("stamped.pdf");

Colecciones de operadores

OperatorCollection en cada página contiene los operadores sin procesar del flujo de contenido. Úselo para la inspección o manipulación de contenido a bajo nivel.

var ops = doc.Pages[1].Contents;
foreach (var op in ops)
{
    // Inspect each operator
}

Consejos y Mejores Prácticas

  • Envuelva Document en una declaración using para liberar los manejadores de archivo de inmediato.
  • Utilice Document.Open(byte[]) para flujos de trabajo en memoria y evitar problemas de bloqueo de archivos.
  • Modifique las cajas de página (MediaBox, CropBox) antes de agregar contenido para garantizar un espacio de coordenadas correcto.
  • Llame a Save solo una vez después de todas las modificaciones — las guardadas repetidas son más lentas pero seguras.
  • Utilice PageCollection.Accept(AnnotationSelector) para procesar por lotes las anotaciones en todas las páginas.

Problemas comunes

IssueCauseFix
Document.Open lanza una excepción con PDF válidoEl archivo está cifrado con una contraseñaProporcione el parámetro de contraseña en el constructor
El recuento de páginas es 0 después de la construcciónNuevo Document() comienza vacíoLlame a doc.Pages.Add() para agregar una página en blanco
El archivo guardado es más grande de lo esperadoImágenes o fuentes incrustadas varias vecesUtilice la optimización (ver la guía de Conversión y Optimización)
Pages[0] lanza error de índiceLas páginas son indexadas desde 1, no desde 0Utilice Pages[1] para la primera página

Preguntas frecuentes

¿Cómo fusiono dos documentos PDF?

Utilice PdfFileEditor.Concatenate de la Facades API, o copie manualmente páginas de un documento a otro usando PageCollection.

¿Puedo abrir un PDF desde una URL o un flujo?

Sí. Lea el contenido de la URL en un byte[] primero, luego páselo a Document.Open(byte[]).

¿Cómo elimino una página?

Llame doc.Pages.Delete(pageNumber) donde pageNumber es basado en 1.

¿Es Document seguro para subprocesos?

No. Cada hilo debe trabajar con su propia instancia Document.


Resumen de la referencia de API

Class / MethodDescription
DocumentObjeto raíz PDF; contiene páginas, metadatos y campos de formulario
Document.OpenFábrica estática para abrir un PDF a partir de un arreglo de bytes
Document.SaveSerializa el documento a un archivo o flujo
PagePágina PDF única con contenido, anotaciones y geometría
Page.SetMediaBoxDefine la caja de medios de la página
Page.SetCropBoxDefine el área de recorte visible
Page.SetRotationRota la página 0, 90, 180 o 270 grados
PageCollectionColección ordenada de páginas en un documento
PageCollection.AddAñade una página en blanco
OperatorCollectionOperadores crudos del flujo de contenido para una página
FileSpecificationDescriptor de archivo adjunto incrustado
ImageStampSello de superposición de imagen para páginas
XFormCollectionXObjects de formulario reutilizables en el documento

Ver también

 Español