[Acr 9 и ранее] Обработка страниц разных форматов в PDF

Статус
Закрыто для дальнейших ответов.

zollinger

Участник
Топикстартер
Сообщения
525
Реакции
163
Частенько приносят на печать pdf'ы с большим количеством страниц разных форматов, которые нужно отправлять на разные принтеры. Надоело выписывать размеры страниц и возиться с диапазонами печати. Поиск по интернету ничего разумного (читай - бесплатного и нормально работающего) не принес. Тогда были написаны 2 макроса для работы с такими файлами: первый собирает pdf-отчет с размерами страниц, второй сортирует страницы в файле по увеличению размера и создает отчет с диапазонами для печати. Проверено в Acrobat Pro 9. Думаю, будет работать и в более новых версиях. Кому интересно - качайте на здоровье. Скрипты для обработки PDF со страницами разных размеров в файле
 
Последнее редактирование:

Аюшка

Участник
Сообщения
1
Реакции
0
И на 11-м работает, но в мои рабочие условия идеально вписалось бы, еслиб умело сортировать только по высоте страницы, потому что 594 и 841, это разные рулоны бумаги) а длина не имеет значения. Но в целом стало легче жить всему отделу, спасибо.:)
 

zollinger

Участник
Топикстартер
Сообщения
525
Реакции
163
И на 11-м работает, но в мои рабочие условия идеально вписалось бы, еслиб умело сортировать только по высоте страницы, потому что 594 и 841, это разные рулоны бумаги) а длина не имеет значения. Но в целом стало легче жить всему отделу, спасибо.:)
Пожалуйста, на здоровье!
 

Бубалех

Участник
Сообщения
4
Реакции
0
Доброго времени суток, уважаемы скриптологи), очень понравился Ваш скрипт форматный ". diffsizepageutils классная штука, благодарствую, но есть у меня просьба он же вопопрос, так как писарь я не неважный))), но в работе штуки эти очень нужны, смыл в том чтобы немного изменить файл отчета (мне нужно, что бы была привязка с форматам пусть с небольшой погрешность 5-10миллимтров, потом чтобы он ничего не не групировал, а давл полное описание типа A4 - листов А3 -2, и вобщее колистово листов, что-то типа этого
Код:
if (app.viewerVersion < 10){
app.addMenuItem({cName: "Pages sorter", cUser: "Pages sorter", cParent: "Tools", cExec: "PagesSorter()", cEnable: "event.rc=(event.target != null);"});
app.addMenuItem({cName: "Pages size", cUser: "Pages size", cParent: "Tools", cExec: "PagesSize()", cEnable: "event.rc=(event.target != null);"});
app.addMenuItem({cName: "Split by Pages size", cUser: "Split by Pages size", cParent: "Tools", cExec:"SplitByPagesSize()", cEnable: "event.rc=(event.target != null);"});
}
else {
app.addToolButton({cName: "Pages sorter", cLabel: "Pages sorter", cExec: "PagesSorter()", cEnable: "event.rc=(event.target != null);"});
app.addToolButton({cName: "Pages size", cLabel: "Pages size", cExec: "PagesSize()", cEnable: "event.rc=(event.target != null);"});
app.addToolButton({cName: "Split by Pages size", cLabel: "Split by Pages size", cExec: "SplitByPagesSize()", cEnable: "event.rc=(event.target != null);"});
}

function createRepHeader(doc, rep2Head){rep2Head.writeText("// Pages from " +doc.path+" sorted by sizes \n// All sizes in mm, based on Crop box\n");
}

PagesSorter=app.trustedFunction(function(){
app.beginPriv();
var aa=[];
var acp=[];

var cp, tmp, cc;
var nr=2.834;
var prec=0;
var linePerpage=59;
var ind=25;
if (this.numPages<2){
app.alert("Must be 2 or more pages in file");return -1;
}
var npw=0;
var nph=0;
var rep=new Report();
rep.size=1.2;
rep.writeText("PDF page by size sorter Copyright © VasЯ 2018");
createRepHeader(this, rep);
for (cc=0;cc<this.numPages;cc++){
aa.length=0;
for (cp=cc;cp<this.numPages;cp++){
ar=this.getPageBox("Crop", cp);
widthP=(ar[2]-ar[0])/nr;
heightP=(ar[1]-ar[3])/nr;
if (heightP>widthP){
tmp=heightP;
heightP=widthP;
widthP=tmp;
}aa.push({page:cp, width:widthP.toFixed(prec), height:heightP.toFixed(prec)});
};
aa.sort(function(a, b){if (a.width==b.width){
return a.height-b.height;
}else {
return a.width-b.width;
}});
this.movePage(aa[0].page, cc-1);
if ((aa[0].width != npw) || (aa[0].height != nph)){
npw=aa[0].width;
nph=aa[0].height;
acp.push({page:cc, width:aa[0].width, height:aa[0].height});
}}
rep.writeText("// Погрешность определения форматов составляет 5 мм ");
rep.writeText("// start page end page total pages width (mm) height (mm)");
rep.indent(ind);
for (tmp=0;tmp<acp.length-1;tmp++){
var ff;

//if (292<acp[tmp].width<302 && 205<acp[tmp].height<215){ ff="A4";}
if (205<acp[tmp].width<215 && 292<acp[tmp].height<302) {ff="A4"}
else{

//if (292<acp[tmp].width<302 && 415<acp[tmp].height<425){ ff="A3";}
if (415<acp[tmp].width<425 && 292<acp[tmp].height<302){ ff="A3"}
else{

//if (589<acp[tmp].width<599 && 415<acp[tmp].height<425){ ff="A2";}
if (415<acp[tmp].width<425 && 589<acp[tmp].height<599){ ff="A2"}
else{

//if (589<acp[tmp].width<599 && 836<acp[tmp].height<846){ ff="A1";}
if (836<acp[tmp].width<846 && 589<acp[tmp].height<599){ ff="A1"}
else{

//if (1184<acp[tmp].width<1194 && 836<acp[tmp].height<846){ ff="A0";}
if (836<acp[tmp].width<846 && 1184<acp[tmp].height<1194){ ff="A0"}
else {ff="неизвестный формат"}
}
}
}
}



rep.writeText((acp[tmp].page+1)+"\t\t"+acp[tmp+1].page + "\t\t"+ff+ " x " +((acp[tmp+1].page+1)-(acp[tmp].page+1))+ "\t\t"+acp[tmp].width+"\t\t"+acp[tmp].height);
if ((cc % linePerpage==0)&&(cc!=0)){
rep.breakPage();
createRepHeader(this, rep);
}}
// var ff;

//if (292<acp[tmp].width<302 && 205<acp[tmp].height<215){ ff="A4";}
//if (205<acp[tmp].width<215 && 292<acp[tmp].height<302){ ff="A4";}
//else{

//if (292<acp[tmp].width<302 && 415<acp[tmp].height<425){ ff="A3";}
//if (415<acp[tmp].width<425 && 292<acp[tmp].height<302){ ff="A3";}
//else{

//if (589<acp[tmp].width<599 && 415<acp[tmp].height<425){ ff="A2";}
//if (415<acp[tmp].width<425 && 589<acp[tmp].height<599){ ff="A2";}
//else{



Зарастание благодарю, дажен несли это не возможно!!!
//if (589<acp[tmp].width<599 && 836<acp[tmp].height<846){ ff="A1";}
//if (836<acp[tmp].width<846 && 589<acp[tmp].height<599){ ff="A1";}
//else{

//if (1184<acp[tmp].width<1194 && 836<acp[tmp].height<846){ ff="A0";}
//if (836<acp[tmp].width<846 && 1184<acp[tmp].height<1194){ ff="A0";}
//else {ff="неизвестный формат"}
//}
//}
//}
//}
 

Вложения

  • Пример выводимого отчётта.JPG
    Пример выводимого отчётта.JPG
    37.7 КБ · Просм.: 526

zollinger

Участник
Топикстартер
Сообщения
525
Реакции
163
Доброго времени суток, уважаемы скриптологи), очень понравился Ваш скрипт форматный ". diffsizepageutils классная штука, благодарствую, но есть у меня просьба он же вопопрос, так как писарь я не неважный))), но в работе штуки эти очень нужны, смыл в том чтобы немного изменить файл отчета (мне нужно, что бы была привязка с форматам пусть с небольшой погрешность 5-10миллимтров, потом чтобы он ничего не не групировал, а давл полное описание типа A4 - листов А3 -2, и вобщее колистово листов, что-то типа этого
Не понял, в чем вопрос-то? Вроде все сумел. Или нет? Запусти да проверь :) Правда, вместо кучи if'ов (комментированых) я бы написал функцию типа inBound(currlenпер, checklength, inaccuracy, formatname). Ну или еще какой-то из вариантов, меня куча if'ов да еще и с прописанными константами раздражают
 

zollinger

Участник
Топикстартер
Сообщения
525
Реакции
163
Может и доделаю, как время будет, хотя мне не особенно нужно. Там есть чисто идеологические проблемы, что важнее - определение формата (с заданной точностью) или точность размеров, объединять ли форматы, попадающие в диапазон, но отличающиеся размерами между собой... Это вот узкоспециализированая такая вещь получается, мне оно не особо надо, для себя я хочу добавить подсчет общей площади, т.к. я цену за печать выставляю не по форматам (особенно при нестандартных/дробных форматах), а по общей площади - за кв. м.
 

Бубалех

Участник
Сообщения
4
Реакции
0
Не понял, в чем вопрос-то? Вроде все сумел. Или нет? Запусти да проверь :) Правда, вместо кучи if'ов (комментированых) я бы написал функцию типа inBound(currlenпер, checklength, inaccuracy, formatname). Ну или еще какой-то из вариантов, меня куча if'ов да еще и с прописанными константами раздражают
Здравствуйте, дело в том, что код не работает(, и не выводит форматы, толтко А4, а который прописан первым, а если взять файлы pdf. журнал или газету, то пишет формат не определяет... даже если он соответствует прописаным. Мне нужен файл отчета в котором было бы видно форматы, высота ширина в см., общее количество листов и количество листов поформатно. В идеале круто было бы, что бы страницы которые отличаются от ГОСТа были бы в отчете как-то выделены. Например есть формат А4 он соответствует размеру 210×297 мм, а действенности размер может быть 150×200. Моя цель выявить такое страницы данным скриптом, если такое возможно? Про функцию, я учту, большое спасибо.
 

zollinger

Участник
Топикстартер
Сообщения
525
Реакции
163
У меня тут пару часов не было интернета, работа стояла, и от скуки я сделал вашу задачку. В приложенном файле - копия отчета работы скрипта. Если интересно и нужно - пишите в личку
 

Вложения

  • _C_Documents and Settings_Пользователь_Рабочий стол_Том 3 265)17-АС(АР) GS.jpg
    _C_Documents and Settings_Пользователь_Рабочий стол_Том 3 265)17-АС(АР) GS.jpg
    22.7 КБ · Просм.: 733
  • Спасибо
Реакции: Бубалех

zollinger

Участник
Топикстартер
Сообщения
525
Реакции
163
Вот тут еще изменения - он теперь и количество страниц считает каждого формата и в отчёте их расписывает
 

Вложения

  • _C_Documents and Settings_Пользователь_Рабочий стол_Том 3 265)17-АС(АР) GS.jpg
    _C_Documents and Settings_Пользователь_Рабочий стол_Том 3 265)17-АС(АР) GS.jpg
    25.4 КБ · Просм.: 547

Бубалех

Участник
Сообщения
4
Реакции
0
Вот тут еще изменения - он теперь и количество страниц считает каждого формата и в отчёте их расписывает
О это просто божественно)), целую Ваши умелые скипторуки, скинь, если Вам не турдно скрипт на почту md315@rambler.ru! И размер моей благодарности не будет юзнать границ..)
 

zollinger

Участник
Топикстартер
Сообщения
525
Реакции
163
О, даже небольшая благодарность, выраженная в денежных знаках, была бы к месту. Тем более, что на выходных скрипт был переписан до версии 1.3, точнее, практически полностью, это позволило сортировке работать намного быстрее - скорость работы стала пропорциональна количеству страниц, а не его квадрату, что дает огромное ускорение, особенно на файлах с большим количеством страниц. Разделение на файлы со страницами разных форматов тоже стало работать заметно быстрее, сейчас вот еще отчет по страницам немного подкорректирую и будет почти идеальный инструмент, быстрый и простой. Так что - пишите на почту, я с радостью вам помогу
 
Последнее редактирование:

zollinger

Участник
Топикстартер
Сообщения
525
Реакции
163
Пишете в личку, она мне на почту пересылает уведомление
 

zollinger

Участник
Топикстартер
Сообщения
525
Реакции
163
Предыдущие версии, которые выложены - бесплатны, а за новую хочу немножко совсем денег, поскольку столкнулся с тем, что она реально облегчает жизнь и ускоряет работу. В личку пишите, пожалуйста, все обсудим
 

zollinger

Участник
Топикстартер
Сообщения
525
Реакции
163
пользуйтесь предыдущими версиями. Они бесплатны. За улучшенный функционал я хочу совсем немного
 

_MBK_

Пикирующий бомбардировщик
15 лет на форуме
Сообщения
33 138
Реакции
10 835

huck

безучастник
15 лет на форуме
Сообщения
703
Реакции
59
А вы пробовали скрипт и эту софтину? Разный функционал. Скрипт может сортировать и разделять pdf на отдельные файлы по форматам страниц, а pdfinfo только выводит информацию. Причем информация, скажем, о боксах выдается в пунктах, в совершенно нудобоваримом формате. К ней еще парсер прикручивать нужно, да и то сомневаюсь, что будет толк.
 
Статус
Закрыто для дальнейших ответов.