[PDF] 150 страниц в одной странице, как разъденить.

Добрый день всем форумчанам! Работаю в оперативной печати. Клиент прислал файл с персонифицированными штрих кодами для печати карт, 99х210 мм. Проблема в том, что все все это лежит в пдф файле на одной странице,. Есть ли какая то возможность разделить эту мегастраницу на 150 маленьких?
Но они же сеткой лежат, а не просто накиданы абы как?
 
Последнее редактирование:
Щас подумал, несложно накропать js скрипт для акробат, но и так инструментов для решения задачи более чем достаточно. Да практически на чем угодно сейчас можно сделать. Дублируй страницы, да media box/crop box задавай. Phyton, go...
 
Последнее редактирование:
Как-то так
Python:
import sys
from pypdf import PdfReader, PdfWriter

def grid_crop_pdf(filename, num_cols, num_rows, output_filename=None):
    reader = PdfReader(filename)
    writer = PdfWriter()
    for page_number in range(len(reader.pages)):
        page = reader.pages[page_number]
        mediabox = page.mediabox
        width = float(mediabox.width)
        height = float(mediabox.height)

        cell_width = width / num_cols
        cell_height = height / num_rows

        for row in range(num_rows):
            for col in range(num_cols):
                new_page = reader.pages[page_number].clone()
                left = cell_width * col
                bottom = height - cell_height * (row + 1)
                right = left + cell_width
                top = bottom + cell_height

                # Set crop box
                new_page.cropbox.lower_left = (left, bottom)
                new_page.cropbox.upper_right = (right, top)
                writer.add_page(new_page)

    if not output_filename:
        output_filename = f"cropped_{num_cols}x{num_rows}_{filename}"
    with open(output_filename, "wb") as f:
        writer.write(f)
    print(f"Created {output_filename}")

if __name__ == "__main__":
    # Run example: python script.py input.pdf 3 2
    inp_file = sys.argv[1]
    cols = int(sys.argv[2])
    rows = int(sys.argv[3])
    grid_crop_pdf(inp_file, cols, rows)
 
Можно заморочиться со ссылками на обьекты на одной странице, хотя adobe это прямо запрещает. То бишь ссылки на один словарь использовать на всех страницах
 
Последнее редактирование:
Именно. Но и возится с этим я не буду, нафиг оно никому не нужно
 
Эта штука может прчитать все коды на битмапе, не помню есть там собранный бинарник или нет.
Ну я либу гораздо более продвинутую привел. В общем, вариантов масса.
 

Не по теме:
Я бы клиенту сказал, что если делаешь что-то через ж, то и дальше весь процесс делай там же, и ко мне не обращайся. Либо давай коды, я сам персонализирую, за денюжку. А решая такие проблемы сами, вы просто расслабляете клиента по самое немогу, а потом сами же и вешаетесь
 
Последнее редактирование:
  • Спасибо
Реакции: Chiga
Спасибо, за советы, пока проблему не решил, вот прикрепил проблему мою
 

Вложения

  • Спасибо
Реакции: Chiga
Отличие только в коде. Проще и правильнее переделать.
 
А фон по периметру зачем? Чтобы было видно кривизну резки и фальцовки?
 

Вложения

  • Спасибо
Реакции: _MBK_, densen и Chiga