saber - quitar propiedades de un archivo pdf online
Obtenga el número de páginas en un pdf usando un archivo por lotes cmd (5)
Alternativamente, puede usar el comando, que devuelve solo el número:
pdfinfo "${PDFFILE}" | grep Pages | sed ''s/[^0-9]*//''
Necesitará el paquete xpdf (generalmente preinstalado en muchas distribuciones):
Puedo ver que hay muchas preguntas para obtener el número de páginas en un pdf con C, PHP y otros, pero me pregunto con un archivo por lotes o cmd ¿hay una manera simple de obtener el número de páginas?
Como solicitó un "archivo por lotes", debo suponer que solo desea una solución basada en Windows. Pero, en caso de que Mac OS X sea una opción, aquí hay algo que podría ser útil. Si tiene los PDF en una Mac, en una unidad indexada por Spotlight (valor predeterminado), el siguiente comando devolverá el número de páginas sin dependencias externas:
mdls -name kMDItemNumberOfPages POSIX_PATH_OF_PDF_FILE
Fuente: MacScripter.net - http://macscripter.net/viewtopic.php?id=32381
Sin herramientas externas (guarde el script abajo como .bat
):
@if (@X)==(@Y) @end /* JScript comment
@echo off
cscript //E:JScript //nologo "%~f0" %*
exit /b 0
@if (@X)==(@Y) @end JScript comment */
var args=WScript.Arguments;
var filename=args.Item(0);
var fSize=0;
var inTag=false;
var tempString="";
var pages="";
function getChars(fPath) {
var ado = WScript.CreateObject("ADODB.Stream");
ado.Type = 2; // adTypeText = 2
ado.CharSet = "iso-8859-1";
ado.Open();
ado.LoadFromFile(fPath);
var fs = new ActiveXObject("Scripting.FileSystemObject");
fSize = (fs.getFile(fPath)).size;
var fBytes = ado.ReadText(fSize);
var fChars=fBytes.split('''');
ado.Close();
return fChars;
}
function checkTag(tempString) {
if (tempString.length == 0 ) {
return;
}
if (tempString.toLowerCase().indexOf("/count") == -1) {
return;
}
if (tempString.toLowerCase().indexOf("/type") == -1) {
return;
}
if (tempString.toLowerCase().indexOf("/pages") == -1) {
return;
}
if (tempString.toLowerCase().indexOf("/parent") > -1) {
return;
}
var elements=tempString.split("/");
for (i = 0;i < elements.length;i++) {
if (elements[i].toLowerCase().indexOf("count") > -1) {
pages=elements[i].split(" ")[1];
}
}
}
function getPages(fPath) {
var fChars = getChars(fPath);
for (i=0;i<fSize-1;i++) {
if ( fChars[i] == "<" && fChars[i+1] == "<" ) {
inTag = true;
continue;
}
if (inTag && fChars[i] == "<") {
continue;
}
if ( inTag &&
fChars[i] == ">" &&
fChars[i+1] == ">" ) {
inTag = false;
checkTag(tempString);
if (pages != "" ) {
return;
}
tempString="";
}
if (inTag) {
if (fChars[i] != ''/n'' && fChars[i] != ''/r'') {
tempString += fChars[i];
}
}
}
}
getPages(filename);
if (pages == "") {
WScript.Echo("1");
} else {
WScript.Echo(pages);
}
Lleva la ruta al archivo .pdf
y simplemente imprime el número de páginas. No es muy rápido, ya que lee el símbolo pdf por símbolo, pero podría optimizarse.
QPDF es una alternativa ligera a PDFtk (que requiere Java runtime) y pdfinfo (una herramienta bastante tonta).
qpdf --show-npages file.pdf
Imprime solo el número de páginas, sin necesidad de procesamiento posterior.
Existen paquetes para la mayoría de las distribuciones de Linux, generalmente llamadas simplemente qpdf
. Páginas como binarios de host de Softpedia para Windows . El código fuente puede descargarse de SourceForge o del repositorio oficial de GitHub .
La opción --show-npages
se agregó en una versión posterior a 4.1.0, en commit 91367239fd55f7c4996ed6158405ea10573ae3cb . Para ser compatible con la versión 4.1.0 y anterior , puede volcar información básica sobre cada página y contar las páginas. En Linux y OS X:
qpdf --show-pages file.pdf | grep -c ^page
En Windows, debe usar findstr
y find
lugar:
qpdf --show-pages file.pdf | findstr ^page | find /c /v ""
Usando pdftk pdftk my.pdf dump_data | grep NumberOfPages
pdftk my.pdf dump_data | grep NumberOfPages
hace el truco.