Optimizando PDF

Optimizando PDF

Uno de mis clientes es un periódico el cual cuenta con una aplicación interna que permite que suban el periódico en formato PDF para que luego con una interface de calendario esté disponible en su web. Después de un año de servicio el folder web donde colocan los periódicos ya excede los 2.5 megas y es por que suben PDF no optimizados, a mi parecer son los PDF que se mandan a imprenta entonces pesan en promedio entre 25 a 35 MB. Como empresario la solución es muy simple cobrarles más por darles más espacio, pero es un problema que realmente me interesaba solucionar. La segunda solución es que ellos subieran PDFS menos pesados, sugiriéndoles alguna herramienta para ello o alguna forma de guardado que mejore la compresión. Esto si es una solución pero aun así lo que más me interesaba era si era posible que yo en el servidor los compactara y que siguieran siendo PDF. Básicamente mi idea es posible lo que voy a redactar no es un conocimiento total de la solución sino un concentrado de la información relevante para la solución. pues el primer asunto es que los PDF contienen imágenes y el formato PDF no optimiza por default las imágenes esto significa que si agregas una foto de 16 mega pixeles a un PDF y luego la haces pequeña porque así la ocupas el PDF contendrá la imagen original y solo la hará pequeña para mostrarla, el segundo problema en realidad tiene que ver con lo mismo para que las fuentes se vean correctamente cada fuente utilizada en un documento es integrada como metadato para ser usada a la hora de visualizarla. Pues hasta ahí con esas dos cosas podía solucionar mi problema en primer lugar renderizarla el texto para que estuviera en el formato visual que se deseaba sin incluir la fuente y además aplicaría escalado y compresión a las imágenes para que las que contenga sean del tamaño en el que se visualizan no en el tamaño original. <?php /* Optimiza los pdf guardandolos de menos tamaño Depende de tener ghostscript */ if ($dh = opendir(‘.’)) { while (($file = readdir($dh)) !== false) { //if (($file[0]!=’.’) and (substr(strrchr($file, ‘.’), 1) == ‘pdf’)) { if (($file[0]!=’.’) and (pathinfo($file, PATHINFO_EXTENSION) == ‘pdf’)) { system(“gs -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -dPDFSETTINGS=/screen -dNOPAUSE -dQUIET -dBATCH -sOutputFile=$file.mini $file”); system(“rm $file”); system(“mv $file.mini $file”); } } closedir($dh); } El codigo depende de la libreria isntalada ghostscript para instalarla solo basta sudo apt-get install ghostscript la linea del if que esta comentada hace lo mismo que la que esta en uso la diferecia basicmaente es la optimizacion, la segunda es mas...

Internet en el Hilton

Internet en el Hilton

Por razones de uno de mis dos trabajos tuve que viajar a México y nos hospedamos en el hotel hilton que está en el centro histórico. No es la primera vez que nos hospedamos ahi pero esta vez me llamo la atención que cuando nos registrábamos nos comentara la chica de recepción que normalmente el internet en las habitaciones tiene un coste pero que como estábamos en periodo vacacional nos daría un código para que pudiéramos usarlo. Cuando entro a mi habitación desempaco y prendo mi portátil y procedo a conectarme a internet un portal captivo me da la bienvenida y me pregunta si tengo un código o si quiero comprarlo. Como tengo un código procedo a ponerlo y funciona así que empiezo a trabajar actualizar repositorios, a subir y bajar información revisar emails esas cosas, pero cuando estoy corriendo unos scripts me acuerdo del que suelo usar para escanear la red en busca de máquinas conectadas, total no me quita nada. “` #!/usr/bin/python # -*- coding: utf-8 -*- from subprocess import Popen, PIPE import socket lan=([(s.connect((‘8.8.8.8′, 80)), s.getsockname()[0], s.close()) for s in [socket.socket(socket.AF_INET, socket.SOCK_DGRAM)]][0][1]).split(“.”) lanip=lan[0]+’.’+lan[1]+’.’+lan[2]+’.’ for ip in range(1,255): ipAddress = lanip+str(ip) subprocess = Popen([‘/bin/ping’, ‘-c 1’, ipAddress], stdout=PIPE, stdin=PIPE, stderr=PIPE) stdout, stderr = subprocess.communicate(input=None) if “bytes from ” in stdout : print “IP: %s ” %(ipAddress) “` Descubro que solo mi propia portátil está conectada según a la red cosa que era mentira también estaba conectado mi celular. Así que me pongo a ver qué es lo que pasa era bastante simple estaban colocando a cada persona conectada en una subred diferente Pues ya entrado en el tema decido revisar su portal captivo para ver el modelo del dispositivo y demás información que me diera curiosidad, entro en la parte de comprar un código y descubro que hay un error muy habitual en personas que apenas empieza a programar aplicaciones web, el campo del precio de lo que pagarías por el acceso estaba como código dentro del HTML en un campo escondido, así que solo tenías que ponerle el precio que quisieras pagar o incluso nada, para tener el...

Clase para calculo y consulta de CURP

Clase para calculo y consulta de CURP

Tenia colocada esta clase en mi antiguo blog pero como no le doy mantenimiento lo moveré a este, coloco el modelo. La descarga contiene documentación y ejemplos de uso en GTK y web. DESCARGAR...