¿Hay archivos adjuntos ocultos en el PDF? Inventario de archivos incrustados antes de la entrega con pypdf

Es posible que haya archivos adjuntos incrustados en el PDF y los archivos adjuntos con el mismo nombre pueden corresponder a varios contenidos. Inventario con pypdf antes de la entrega: asigne una ID independiente a cada archivo adjunto en el orden de extracción, deje el nombre original como metadatos, no escriba en el disco, no ejecute, no permita que los clientes reciban un paquete de entrega con piezas faltantes.

Es posible que haya archivos adjuntos incrustados en el PDF. Si no se revisan antes de la entrega, es posible que falte el paquete de documentos que recibe el cliente. Este artículo está dirigido a desarrolladores y personal de entrega de documentos que necesitan extraer o verificar archivos PDF incrustados en lotes. Explica por qué los archivos adjuntos con el mismo nombre y nombres de archivo anormales pueden causar una pérdida silenciosa de archivos y cómo usar pypdf para contar archivos adjuntos de forma segura.

Después de leer esto, debería poder hacer tres cosas: asignar una identificación única a cada archivo adjunto, conservar el nombre original como metadatos en lugar de escribirlo directamente en el disco y utilizar un formulario de aceptación para distinguir entre los casos que se pueden manejar automáticamente y aquellos que requieren revisión manual.

Todos los ejemplos de este artículo son muestras sintéticas y el código ha pasado la inspección de muestra en un entorno aislado, pero esto no representa una garantía de todos los archivos reales o efectos del producto. Conserve los originales antes de manipular documentos importantes.

¿Cómo contar los archivos adjuntos PDF antes de la entrega? Conclusión de una frase

Utilice pypdf para asignar una identificación independiente a cada archivo adjunto en el orden de extracción. El nombre original sólo se conserva como metadatos y no se escribe directamente en el disco. Las excepciones se revisan manualmente según el formulario de aceptación.

tu situaciónPrácticas recomendadasrazón
Puede haber archivos adjuntos con el mismo nombre en el PDFAsigne identificaciones independientes en orden de extracción, conserve todo el contenidoLos archivos adjuntos con el mismo nombre se almacenan en forma de lista. Escribir directamente por nombre se sobrescribirá entre sí.
El nombre del archivo contiene ../ o separador de rutaElimine la estructura del directorio y solo tome el nombre del archivo como metadatosLa escritura directa puede fallar e incluso traer riesgos de seguridad
Hay muchos archivos adjuntos o existen cifrados o firmas.Pausar el proceso automatizado y transferirlo a un revisor dedicadoCuando hay más de 20 archivos adjuntos o hay cifrado o firmas, los resultados automatizados requieren confirmación manual.
La integridad debe confirmarse antes de la entrega.Verifique artículo por artículo con el formulario de aceptación.La extracción automática no puede reemplazar la verificación manual antes de la entrega

¿Por qué un archivo adjunto con el mismo nombre pierde archivos silenciosamente?

Al procesar archivos PDF con archivos incrustados, el problema más oculto no es el error, sino la falta de archivos después de que el proceso se ejecuta "con éxito".

  • Al recorrer reader.attachments y escribir directamente en el disco con el nombre original, si el PDF tiene dos archivos llamados report.xlsx incrustados, el último sobrescribirá el anterior.
  • Cuando el nombre del archivo contiene ../ o caracteres reservados del sistema, la escritura puede fallar e incluso desencadenar riesgos de seguridad.
  • El documento oficial en pypdf establece que los nombres de los archivos adjuntos pueden contener cualquier carácter y los archivos adjuntos con el mismo nombre se almacenan en forma de lista.

Por lo tanto, cualquier lógica de extracción por lotes no desinfectada no será confiable cuando se encuentre con archivos PDF no estándar.

Construya una entrada de límite verificable utilizando muestras sintéticas

Para verificar la solidez de la lógica de extracción, es necesario construir muestras sintéticas controladas en lugar de depender de archivos de producción de origen desconocido. El ejemplo supone que un PDF contiene tres archivos adjuntos:

  1. Archivo normal data.csv;
  2. data.csv con el mismo nombre que el primero, pero con contenido diferente;
  3. El nombre del archivo contiene ..\secret.txt con características de recorrido de ruta.

Estos tres archivos adjuntos cubren tres tipos de situaciones: extracción normal, conflicto del mismo nombre y anomalía de ruta, respectivamente.

Ejecute el ejemplo de extracción segura y desinfección de nombres de archivos

Consulte la lista de importación para conocer las dependencias. El código construye la entrada en la memoria, no escribe en el disco y no ejecuta el contenido adjunto.

from io import BytesIO
from pypdf import PdfReader, PdfWriter
writer = PdfWriter()
writer.add_blank_page(width=200, height=200)
writer.add_attachment("data.csv", b"row-one")
writer.add_attachment("data.csv", b"row-two")
writer.add_attachment("../secret.txt", b"synthetic secret")
out = BytesIO()
writer.write(out)
out.seek(0)
reader = PdfReader(out)
records = []
for name, contents in reader.attachments.items():
    for content in contents:
        records.append({"id": len(records), "source_name": name, "bytes": content})
assert len(records) == 3
assert len({r["id"] for r in records}) == 3
assert {r["bytes"] for r in records if r["source_name"] == "data.csv"} == {b"row-one", b"row-two"}
assert any(r["source_name"] == "../secret.txt" for r in records)

Cabe señalar que este código es sólo una demostración lógica y no constituye una cobertura completa de todas las funciones adjuntas de pypdf. En producción también se deben considerar situaciones como la lectura en streaming de archivos grandes y anomalías de codificación.

📊 Comparación central

prácticaAdjunto con el mismo nombreEl nombre del archivo contiene un separador de ruta.ilustrar
Escriba directamente en el disco con el nombre originalEste último cubre el primero.Las escrituras pueden fallar e incluso desencadenar riesgos de seguridadEs fácil perder archivos silenciosamente
Asignar identificaciones independientes en orden de extracciónMantenga cada archivo adjunto individualmenteEl nombre original se utiliza sólo como metadatos y no se utiliza para escribir la ruta.El nombre original todavía se puede rastrear.

🎯 ¿Qué método es el adecuado para ti?

Si solo necesita verificar una pequeña cantidad de archivos adjuntos normales

Conserve el original, extráigalo con el código de muestra y compare el contenido de los archivos uno por uno.

Si el PDF que está procesando puede tener archivos adjuntos con el mismo nombre

Asigne identificaciones independientes en orden de extracción y no utilice números de serie locales ni nombres desinfectados como claves globales.

Si hay más de 20 archivos adjuntos, o hay cifrado o firma

Pause el proceso automatizado y transfiéralo a un revisor dedicado.

❓ Preguntas frecuentes (FAQ)

1. ¿Por qué no se puede escribir el archivo adjunto con el mismo nombre directamente en el disco?

Los archivos escritos más tarde sobrescribirán los archivos escritos anteriormente, lo que provocará que el contenido se pierda silenciosamente.

2. ¿Qué riesgos trae ../ en el nombre del archivo?

Las escrituras directas pueden fallar e incluso desencadenar riesgos de seguridad. El artículo recomienda eliminar la estructura de directorios y conservar sólo los nombres de los archivos como metadatos.

3. El contenido del archivo adjunto está vacío o es muy pequeño. ¿Aún quieres guardarlo?

De acuerdo con las recomendaciones de procesamiento automático del formulario de aceptación, el registro debe registrarse y el archivo aún guardarse, y luego juzgar manualmente si es un marcador de posición o está dañado.

4. ¿Puede este código cubrir todas las funciones de archivos adjuntos de pypdf?

no puedo. Es solo una demostración lógica, y situaciones como la lectura de transmisión de archivos grandes y las excepciones de codificación deben considerarse por separado.

Criterios de aceptación y límites de revisión manual

La extracción automatizada no reemplaza la verificación manual antes de la entrega. La siguiente tabla enumera excepciones comunes y sus métodos de manejo, distinguiendo entre escenarios que se pueden resolver mediante código y aquellos que requieren intervención manual:

Observar fenómenosProcesamiento automáticorevisión manual
Varios archivos adjuntos con el mismo nombreAgregue el prefijo del número de serie y conserve todo el contenidoConfirme si se trata de una iteración de versión o una incrustación incorrecta
El nombre del archivo contiene un separador de ruta.Elimine la estructura del directorio y solo tome el nombre del archivoCompruebe si la carga útil maliciosa está destinada a ocultarse
El contenido del archivo adjunto está vacío o es extremadamente pequeño.Iniciar sesión, aún guardar el archivoDeterminar si es un marcador de posición o está dañado
Caracteres confusos o no imprimibles en el nombre del archivoReemplazar con guión bajo, mantener índiceRetroceder en la semántica de confirmación de metadatos del PDF original
El tipo de archivo adjunto no coincide con la extensiónOlfatear el contenido o dejarlo como estáUso determinado por expertos en el dominio

Esta tabla es adecuada para la verificación a nivel de demostración de código. El efecto de extremo a extremo también debe combinarse con el contexto empresarial. Por ejemplo, la falta de adjuntos de un contrato puede ser más grave que un nombre de archivo incorrecto. Cuando el número de archivos adjuntos supera los 20, o hay cifrado o firmas, el proceso automatizado debe suspenderse y transferirse a una persona dedicada para su revisión.

Lectura adicional

Siguiente paso

  • Agregar casos de prueba de adjuntos sintéticos al canal de CI;
  • Ejecutar el script de extracción de purificación en una muestra de documentos de entrega históricos para establecer una línea base de integridad del archivo adjunto;
  • Si se encuentra una pérdida sistémica, priorice los conflictos de nombres en lugar de los problemas de red o permisos.

Cómo combinar con la traducción de documentos antes de la entrega

La descomposición de archivos, el cifrado o el procesamiento de archivos adjuntos son parte de la preparación para la entrega y la traducción no puede reemplazar estas comprobaciones. Después de conservar la copia original y la lista de procesamiento, evalúe el orden de las páginas, los enlaces y la integridad del contenido de la traducción.

OmniDoc (portal de productos) proporciona un portal de traducción de documentos multiformato y el sitio web oficial presenta funciones de OCR, glosario y comparación bilingüe. Para los equipos que quieran empezar a trabajar directamente desde archivos, esta ruta se puede evaluar con ejemplos de la vida real. Utilice archivos no sensibles que tenga permiso para cargar y utilice los elementos de verificación de este artículo para revisar los resultados. Este artículo no afirma que OmniDoc utilice las bibliotecas de código abierto o los algoritmos internos del artículo, y los ejemplos no pueden reemplazar las pruebas de rendimiento del producto.

📝 Resumen

La clave para contar los archivos adjuntos en PDF antes de la entrega es asignar una identificación independiente a cada archivo adjunto, conservar el nombre original como metadatos y realizar una revisión manual para detectar excepciones. Validar el proceso primero con muestras sintéticas y luego con documentos reales.

Pruébelo ahora: cargue el documento para comenzar la traducción, conservando el diseño original

Actualizado 2026-11-14