Estoy corriendo en el navegador. Tengo un File ( el tipo de archivo JavaScript ) de tipo application/pdf . Quiero verificar que el formato del pdf sea Carta de EE. UU. (8,5 x 11 pulgadas) o Legal de EE. UU. (8,5 x 14 pulgadas) en orientación horizontal o vertical.
Eché un vistazo a jsPDF y, aunque se ve muy bien crear documentos PDF mediante programación (lo que será útil para las pruebas), no pude encontrar una manera de usarlo para analizar un archivo PDF existente y obtener información sobre el documento (como el formato de página y la orientación).
Cualquier ayuda para lograr mi objetivo será apreciada, ya sea con jsPDF , otra biblioteca o Vanilla JS.
Usando un análisis de texto simple, la mayoría de los archivos PDF, pero no todos , tendrán una o más entradas /MediaBox , que representan cada página. /CropBox es el tamaño de la página vista, por lo que es potencialmente mejor si está presente. Las longitudes de página generalmente se dan en puntos a menos que la página use una unidad de usuario diferente. El formato es [x0, y0, x1, y1], por lo que es posible que no siempre comiencen con 0, o incluso que sean los valores inferiores, es la diferencia entre x0 y x1 la que indica el ancho nominal.
Estas son solo algunas de las primeras entradas de ejemplos europeos recientes, así que tenga en cuenta las variaciones, algunas son enteras, algunas reales y otras mixtas (como gran parte del contenido de pdf, no hay una regla obligatoria)
/MediaBox [0 0 595.28 841.89] /MediaBox [0 0 842 595] /MediaBox[0 0 387.36 594]para letra de EE. UU. y legal, generalmente son números enteros, espera o busca
/MediaBox[0 0 612 792] y similares
En muchos casos, todas las páginas tienen la misma forma, incluso si la intención es girarlas más tarde, pero a veces las páginas se pueden mezclar, sin embargo, eso requiere buscar/contar todas las páginas (suponiendo que todas sean descripciones textuales simples)
/MediaBox .... 0 576 720] = A US Gov Letter Portrait Page (8" x 10") [*] /MediaBox .... 0 720 576] = A US Gov Letter Landscape Page /MediaBox .... 0 576 756] = A US Gov Letter Portrait Page (8" x 10.5") /MediaBox .... 0 756 576] = A US Gov Letter Landscape Page /MediaBox .... 0 576 936] = A US Gov Legal Portrait Page (8" x 13") [*] /MediaBox .... 0 936 576] = A US Gov Legal Landscape Page /MediaBox .... 0 612 792] = A US Letter Portrait Page (8.5" x 11") /MediaBox .... 0 792 612] = A US Letter Landscape Page /MediaBox .... 0 612 936] = A US Gov Legal Portrait Page (8.5" x 13") [*] /MediaBox .... 0 936 612] = A US Gov Legal Landscape Page /MediaBox .... 0 612 1008] = A US Legal Portrait Page (8.5" x 14") /MediaBox .... 0 1008 612] = A US Legal Landscape PageHay otros tamaños americanos históricos
* https://en.wikipedia.org/wiki/Paper_size#Loose_sizes
La rotación se establece con mayor frecuencia en 0 y luego se aplica una transformación matricial o /acción para rotar la primera vista, en aquellos lectores que admiten tales acciones o secuencias de comandos sin bloqueo. Por lo tanto, no es útil buscar 1001x /Rotate 0 entradas
Entonces, por ejemplo, debería haber agregado que el primer archivo aleatorio que di como ejemplo anterior es una página de retrato vertical, angosta y alta, pero es un diagrama para leer desde la derecha como un diseño de aeropuerto horizontal y las pruebas fallarían en cuanto a de qué manera debería se puede leer como vertical u horizontal puede configurarse potencialmente en el pdf, pero depende del usuario leer ambos textos tanto en vertical como en horizontal