Introducción:
El objetivo es poder editar un pdf, en este caso descomprimirlo, sin usar un editor visual Gui, para poder automatizar esta tarea nos centraremos en las opciones desde la línea de comandos con un comando nativo o sino programas gratuitos de terceros y si encuentro la manera pondré como hacerlo en java.
Hay muchas formas de descomprimir un pdf, hoy me centraré en explicar cómo descomprimir un pdf para poder acceder a su contenido o modificarlo porque es necesario para algunos lectores.
¿ Qué herramientas pueden descomprimir un fichero PDF ? Muchas y muy variadas.
Nota: Siempre que busco algo relacionado con PDF hay muchas menciones para convertir PDF a postScript, editarlo y reconvertir a PDF.
Nota: Siempre que busco algo relacionado con PDF hay muchas menciones para convertir PDF a postScript, editarlo y reconvertir a PDF.
Para los usuarios de Windows:
Mutool:
https://mupdf.com/docs/manual-mutool-clean.html
https://mupdf.com/docs/manual-mutool-clean.html
utool.exe clean -d orig.pdf uncompressed-mutool.pdf
PDFtk (Es instalable con binario y Gui):
pdftk test.pdf output compressed_test.pdf compress
Para los usuarios de Linux:
Para preguntar si está comprimido un pdf:
strings your.pdf | grep /Filter
Para compirimir y descomprimir un pdf:
strings your.pdf | grep /Filter
Para compirimir y descomprimir un pdf:
qpdf --stream-data=compress your.pdf compressed.pdf
qpdf --stream-data=uncompress compressed.pdf uncompressed.pdf
PDFtk:pdftk test.pdf output compressed_test.pdf compress
pdftk test.pdf output uncompressed_test.pdf uncompress
Multiplataforma (Programmatically / Programando en Java)
Usando la libreria PDF Box:
PDDocument doc; // = new PDDocument();
doc = PDDocument.load("C:/ejemplo.pdf");
PDStream stream= new PDStream(doc);
stream.addCompression();
doc.save("C:/comprimido.pdf");
doc.close();
Usando la libreria PDF iTextPdf:
PdfReader reader = new PdfReader("C:/ejemplo.PDF");
PdfStamper stamper = new PdfStamper(reader, new FileOutputStream("C:/compressed_Itext.pdf"), PdfWriter.VERSION_1_5);
stamper.setFullCompression();
stamper.getWriter().setCompressionLevel(50);
int total = reader.getNumberOfPages() + 1;
for (int i = 1; i < total; i++) {
reader.setPageContent(i, reader.getPageContent(i));
}
stamper.close();
reader.close();
Eso es todo por hoy. Puedo actualizar este post si veo algo chulo que añadir :)
No hay comentarios:
Publicar un comentario
Bienvenido a mi blog, deja tu comentario a continuación, gracias por tu interés y tu aporte. Un saludo :)