FreeBasic
Главная
Вход
Регистрация
Среда, 24.04.2024, 14:48Приветствую Вас Гость | RSS
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Форум » Freebasic » Исходники » Расчет номеров страниц для печати брошюры
Расчет номеров страниц для печати брошюры
haavДата: Четверг, 24.10.2019, 20:53 | Сообщение # 1
Генералиссимус
Группа: Администраторы
Сообщений: 1361
Репутация: 49
Статус: Offline
Привет всем!

Понадобилось мне на Linux распечатать документацию в виде брошюры. На винде рекомендуют использовать acrobat , а на Linux че-то как-то мутно (нужно использовать две программы , что-то там преобразовывать) . Возможно просто я плохо искал и на Linux тоже есть готовое , удобное и простое решение. Ну а я посмотрел встроенный просмотрщик PDF (Xreader) . Очень хорошая надо сказать программа. В ней есть:
1) возможность указать печать в виде брошюры (то есть разбивка A4 на 2 странички A5)
2) возможность вручную указать номера страниц в нужном порядке при печати
Однако программа сама не ведет расчет , как это делают коммерческая "акробатина" (я сам не пробовал акробатину в деле , просто сужу по отзывам и советам)

Осталась самая малость , создать утилиту , которая рассчитает и выведет в нужном порядке номера страниц, для того чтобы ввести их в поле ввода программы Xreader.

Важно!!!! Код предоставляется как есть , со всеми потенциальными ошибками. Любое использование на свой страх и риск.
Я не несу ответственности ни за какие потери (будь то финансовые , или потеря времени и пр.) . Перед тем как вбивать цифры в какую либо программу и начать печатать, может стоит все как следует проверить? В общем , не рекомендуется использование утилиты для людей с пустой головой.


И так вот сам код:

Код
' Используется для разметки номеров при печати на листах A4 , чтобы получилось 4 страницы формата A5
' Групировка номеров страниц из PDF документа для печати на принтере
' для последующего переплета. Может использоваться с программами, которые имеют поле для
' ввода печати номеров страниц с определенным порядком и возможностью установки режима брошюры.
' Для примера в linux mint такой программой может быть Xreader.

' Параметры процедуры:
'iFirstPage - номер страницы в документе , с которого нужно начать печать
'iLastPage - последний отпечатываемый номер страницы в документе
'iCountListsSew - кол-во страниц , сшиваемых в блок (блоки должны быть кратны 4 ). Для тех кто в танке, поясняю.
'Листы A4 печатаются с 2 сторон. Каждая из сторон поделены на 2 части. В результате выходит 4 страницы книги
'на одном листе. Листы сгибаются на пополам. Можно сшивать каждый согнутый лист с другими по отдельности (iCountListsSew = 1).
'А можно соединить (вложить друг в друга) листы блоками (например по 4) и сшивать уже блоки (iCountListsSew = 4)

' Общее кол-во рассчитываемых страниц должно быть кратно 4 (потому что на однм листе 4 страницы).
' Именно поэтому я сделал возможность расчета с любой начальной страницы (какие-то ненужные страницы можно пропустить, либо потом отдельно допечатать).

sub createNumbersPrint(iFirstPage as Long , iLastPage as Long , iCountListsSew as Long)
    
    dim as string sFirstMove , sSecondMove
    
    dim as Long iAllPages = iLastPage - iFirstPage + 1
    
    dim as Long iCountBox = iCountListsSew*4
    
    dim as Long iPeriod = iAllPages\iCountBox
    
    dim as Long iStartPage = iFirstPage
    
    for j as Long = 1 to iPeriod
  
  for i as long = 0 to iCountBox\4 -1
   
   sFirstMove &= ( j*iCountBox - i*2 + iFirstPage -1 & "," & j*iCountBox-(j*iCountBox - i*2 - iStartPage ) & "," )
   
   sSecondMove = (j*iCountBox-(j*iCountBox - i*2 - (iStartPage+1) ) & "," &  j*iCountBox - (i*2 + 1) + iFirstPage -1 & "," & sSecondMove  )
   
  Next
  
  iStartPage += iCountBox
  
    Next
    
    sFirstMove    = left(sFirstMove , len(sFirstMove )-1)
    
    sSecondMove    = left(sSecondMove , len(sSecondMove )-1)    
    
    ? sFirstMove
    ?
    ? sSecondMove
    
End Sub

createNumbersPrint(1 , 32,  1)

sleep



Вы сохраняете власть над людьми покуда оставляете им что-то…Отберите у человека все, и этот человек уже будет неподвластен вам…
 
DarkDemonДата: Воскресенье, 27.10.2019, 20:47 | Сообщение # 2
Полковник
Группа: Друзья
Сообщений: 188
Репутация: -2
Статус: Offline
Стас, а как же собственные драйвера принтера? Неужели на линуксе нет таких опций в оболочке драйвера?
И что же это такая за система для пользователя, если там нет настолько элементарных опций.

Не то чтобы эта опция так часто нужна, но пару раз приходилось печатать документацию брошюрой.
В винде для этого достаточно выбрать соотв. опцию в драйвере принтера(в HP и Epson-ах точно есть,
да и думаю на любом другом тоже).
 
haavДата: Понедельник, 28.10.2019, 06:57 | Сообщение # 3
Генералиссимус
Группа: Администраторы
Сообщений: 1361
Репутация: 49
Статус: Offline
Леха, я читал где-то , что на некоторых марках есть такая встроенная возможность. Увы у меня на Canon такого нет. Возможно у меня просто младшая модель.

Вы сохраняете власть над людьми покуда оставляете им что-то…Отберите у человека все, и этот человек уже будет неподвластен вам…
 
haavДата: Воскресенье, 10.11.2019, 16:59 | Сообщение # 4
Генералиссимус
Группа: Администраторы
Сообщений: 1361
Репутация: 49
Статус: Offline
Canon , Canon ... вроде серьезная контора по производству оргтехники. Все блин... больше никогда не буду использовать свой принтер Canon под Linux. До этого как-то больше одной страницы за раз не печатал под Linux. А тут , как я и писал, понадобилось распечатать совокупность страниц. Сегодня решил заняться этим и охренел. Распечаталось всего 4 страницы с разными паузами между печатью отдельных страниц и принтер остановился. Очищаю задание принтера , выключаю принтер , потом включаю. После включения принтер самовольно распечатывает еще одну страницу и опять встает. Кстати , печатать он уже был не должен , ведь я задание обнулил. А если уж печатает , то должен был еще довольно много страниц допечатать. Все думаю принтеру кирдык. Но решил все таки перезагрузиться на винду. На винде все работает хорошо, ни одной ошибки, равные паузы между печатью. Распечатал все. Использовал нумерацию из своей утилиты и STDU Viewer. Теперь надо сшить, склеить, в общем сделать подобие переплета.

Вы сохраняете власть над людьми покуда оставляете им что-то…Отберите у человека все, и этот человек уже будет неподвластен вам…
 
DarkDemonДата: Вторник, 19.11.2019, 18:52 | Сообщение # 5
Полковник
Группа: Друзья
Сообщений: 188
Репутация: -2
Статус: Offline
Стас, я когда ещё начал с этими линуксами возиться, не зная броду полез в воду, так вот я даже не понял как мне
на свой принтер поставить драйвер, мучился мучился, тыкался тыкался, а там везде голая техническая документация
на какой то "открытый формат взаимодействия с принтером". Короче в итоге плюнул на это дело и забил.
Как уже говорил, хорошо если есть рядом человек который это умеет, если его рядом нет - всё, можно вешаться.

Думаю тебе проще для этого держать XP, купить флешку за 400 рублей и впендюрить туда XP, она много не просит,
для всяких офисных дел. А про Canon не знал что жопа, вроде контора серьёзная. Мне конечно по душе HP, с ними
вообще проблем нет - зверь машины.
 
haavДата: Вторник, 19.11.2019, 20:52 | Сообщение # 6
Генералиссимус
Группа: Администраторы
Сообщений: 1361
Репутация: 49
Статус: Offline
Цитата DarkDemon ()
Думаю тебе проще для этого держать XP, купить флешку за 400 рублей и впендюрить туда XP, она много не просит,для всяких офисных дел. А про Canon не знал что жопа, вроде контора серьёзная. Мне конечно по душе HP, с ними
вообще проблем нет - зверь машины.

Да в принципе у меня на компе семерка 32-битная для всех этих дел стоит. Принтер на семерке работает нормально. Что касается хрюши , так гиморно будет работать у меня на компе , ведь дров на видюху под нее нет.


Вы сохраняете власть над людьми покуда оставляете им что-то…Отберите у человека все, и этот человек уже будет неподвластен вам…
 
Форум » Freebasic » Исходники » Расчет номеров страниц для печати брошюры
  • Страница 1 из 1
  • 1
Поиск: