Программная переупорядоченность содержимого PDF в слоях (OCGs)

#javascript #python #pdf

Вопрос:

Вот действительно простая проблема, которая, как-то, кажется, еще не имеет предложенного решения.

У меня есть PDF-документ, содержимое которого распределено по слоям примерно так:

 <Layer 1>
    <Clip Group>
        <GraphicsPath>
        <GraphicsPath>
        <GraphicsPath>
        ...
        <CutPath>
        <CutPath>
        <CutPath>
        ...
 

Программно я хочу изменить порядок содержимого, чтобы оно было организовано следующим образом:

 <ThroughCut>
    <CutPath>
    <CutPath>
    <CutPath>
    ...
<Graphics>
    <GraphicsPath>
    <GraphicsPath>
    <GraphicsPath>
    ...
 

Я определил структуру слоя с помощью Adobe Illustrator. Там можно сразу создавать и переименовывать слои, а затем перетаскивать объекты, чтобы получить правильное расположение. Тем не менее, я уже несколько дней пытаюсь найти хороший способ сделать это программно. Похоже, что PyMuPDF для этого подойдет библиотека Python, поскольку она поддерживает добавление и настройку слоев и изображений (должен признаться, я не совсем понимаю разницу), но я играл с ней уже полдня и просто не могу понять это.

Решения, использующие Python и JavaScript, наиболее ценятся, но на данный момент я возьму все, что смогу запустить из командной строки на машине UNIX.

Комментарии:

1. Необязательная группа содержимого-это термин PDF, слой-популярный термин для необязательного содержимого. Вы хотите изменить порядок фактического содержимого страницы или только узлов в визуальном дереве дополнительного содержимого (которое отображается в Acrobat и позволяет отображать/скрывать слои)?

2. Только узлы. Для простоты: чтобы иллюстратор понял, вот и все. На самом деле я форматирую PDF, чтобы его правильно читало другое программное обеспечение, но оно совместимо с Illustrator.