Attachments
Attachments
Esta página describe la inserción de archivos dentro de un PDF. Existen dos mecanismos distintos: adjuntos a nivel de documento, que son archivos incrustados sin presencia visible en ninguna página, y anotaciones de adjunto de archivo ancladas a una página, que colocan un icono clicable en una página específica.
Adjuntos a nivel de documento
Document.AddAttachment() incrusta bytes bajo un name, insertándolo en el árbol de nombres de archivos incrustados del documento — volver a añadirlo con el mismo nombre sobrescribe la entrada existente. Devuelve un identificador Attachment. Document.GetAttachments() devuelve cada adjunto a nivel de documento como una matriz de identificadores Attachment, ordenados por nombre, y Document.RemoveAttachment() elimina uno por nombre.
El identificador Attachment expone Name, Description, MimeType, Size, CreationDate y ModDate como propiedades, GetBytes() para leer el contenido bruto del archivo incrustado, y GetField() / SetField() / RemoveField() para acceso de bajo nivel a campos individuales /Filespec. El AttachmentOptions opcional pasado a AddAttachment() acepta mimeType, description, compress, creationDate y modDate.
No hay un ejemplo de código verificado disponible para este API en la captura de conocimiento actual para esta plataforma — consulte el Resumen de API Reference a continuación para obtener los nombres exactos de métodos y propiedades.
Adjuntos de archivo anclados a la página
Page.AddFileAttachment() incrusta un archivo y coloca una anotación de ícono /FileAttachment en un rect determinado de una página específica, devolviendo un FileAttachmentAnnotation. A diferencia de un adjunto a nivel de documento, este es visible y clickeable en un visor PDF. FileAttachmentAnnotation comparte las propiedades comunes de anotación (Rect, Color, Contents, Name, Flags, Print, Hidden, Opacity) además de sus propios Icon y FileName, y admite GetBytes() para leer el contenido incrustado y Flatten() para incorporar su ícono al contenido estático de la página.
Consejos y buenas prácticas
- Utilice un adjunto a nivel de documento (
Document.AddAttachment()) para un archivo que debe acompañar al PDF sin aparecer en ninguna página; usePage.AddFileAttachment()cuando el archivo debe representarse mediante un ícono clickeable en una ubicación específica. Document.AddAttachment()sobrescribe un adjunto existente con el mismoname— verifiqueDocument.GetAttachments()primero si necesita evitar reemplazarlo accidentalmente.- Lea el contenido de un adjunto con
GetBytes()en cualquier tipo de controlador — el método está disponible tanto enAttachmentcomo enFileAttachmentAnnotation.
Problemas comunes
| Problema | Causa | Solución |
|---|---|---|
| Un archivo adjunto recién añadido reemplazó a uno existente | Document.AddAttachment() se llamó con un name ya en uso | Llame a Document.GetAttachments() primero para comprobar una colisión de nombres |
| El archivo adjunto no tiene icono visible en la página | Document.AddAttachment() se utilizó, lo que es de nivel de documento y no tiene presencia en la página por diseño | Use Page.AddFileAttachment() en su lugar para un ícono visible y anclado a la página |
Document.RemoveAttachment() devuelve false | No existe ningún adjunto con el name proporcionado en el árbol de nombres | Confirme el nombre exacto mediante Document.GetAttachments() antes de eliminar |
FAQ
¿Cuál es la diferencia entre Document.AddAttachment y Page.AddFileAttachment?
Document.AddAttachment() inserta un archivo en el nivel del documento sin ningún icono visible en ninguna página. Page.AddFileAttachment() inserta un archivo y coloca una anotación de icono /FileAttachment clicable en una ubicación específica de una página.
¿Cómo puedo enumerar cada archivo adjunto ya insertado en un documento?
Llame a Document.GetAttachments(), que devuelve todos los adjuntos del documento como una matriz de manejadores Attachment ordenados por nombre.
¿Cómo puedo leer el contenido del archivo de un adjunto?
Llame a GetBytes() sobre el manejador Attachment (o FileAttachmentAnnotation); está disponible en ambos.
¿Puedo eliminar un adjunto?
Sí — Document.RemoveAttachment(name) elimina un adjunto del documento por nombre y devuelve si se encontró y eliminó alguno.
API Reference Resumen
| Clase/Método | Descripción |
|---|---|
Document.AddAttachment() | Incruste bytes como un adjunto nombrado dentro del documento |
Document.GetAttachments() | Enumera todos los adjuntos del documento |
Document.RemoveAttachment() | Elimina un adjunto del documento por nombre |
Attachment | Gestiona más de un archivo incrustado; Name, Description, MimeType, Size, GetBytes() |
Page.AddFileAttachment() | Incrusta un archivo como una anotación de icono clicable anclada a la página |
FileAttachmentAnnotation | El controlador de anotación del adjunto anclado a la página; agrega Icon, FileName |