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
Documenten una declaraciónusingpara 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
Savesolo 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
| Issue | Cause | Fix |
|---|---|---|
Document.Open lanza una excepción con PDF válido | El archivo está cifrado con una contraseña | Proporcione el parámetro de contraseña en el constructor |
| El recuento de páginas es 0 después de la construcción | Nuevo Document() comienza vacío | Llame a doc.Pages.Add() para agregar una página en blanco |
| El archivo guardado es más grande de lo esperado | Imágenes o fuentes incrustadas varias veces | Utilice la optimización (ver la guía de Conversión y Optimización) |
Pages[0] lanza error de índice | Las páginas son indexadas desde 1, no desde 0 | Utilice 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 / Method | Description |
|---|---|
Document | Objeto raíz PDF; contiene páginas, metadatos y campos de formulario |
Document.Open | Fábrica estática para abrir un PDF a partir de un arreglo de bytes |
Document.Save | Serializa el documento a un archivo o flujo |
Page | Página PDF única con contenido, anotaciones y geometría |
Page.SetMediaBox | Define la caja de medios de la página |
Page.SetCropBox | Define el área de recorte visible |
Page.SetRotation | Rota la página 0, 90, 180 o 270 grados |
PageCollection | Colección ordenada de páginas en un documento |
PageCollection.Add | Añade una página en blanco |
OperatorCollection | Operadores crudos del flujo de contenido para una página |
FileSpecification | Descriptor de archivo adjunto incrustado |
ImageStamp | Sello de superposición de imagen para páginas |
XFormCollection | XObjects de formulario reutilizables en el documento |