Кто-нибудь написал библиотеку (или просто программу), которая оптимизирует содержимое потоков страниц PDF?Я говорю о таких вещах, как «удалить q
... Q
блоки, которые не имеют общего эффекта», «объединить смежные BT
... ET
блоки», «отслеживать состояние графики и удалять операторы, которые устанавливаютчто-то к значению, которое у него уже есть, «возможно, даже», измените порядок операций рисования, чтобы минимизировать изменения состояния графики, когда это можно сделать без изменения внешнего вида страницы ».Я не придирчив к языку реализации, но открытый исходный код очень предпочтителен, так как мне, возможно, придется взломать его для моих конкретных нужд.
Вот небольшой фрагмент примера того, что я хотел бысделанный.Графика "сетки" R + его бэкэнд PDF генерирует смешное количество бессмысленных операций, как это:
1 J 1 j q
Q q
Q q
Q q
Q q
Q q
Q q
Q q
Q q
Q q
BT
0.000 0.000 0.000 rg
/F2 1 Tf 12.00 0.00 -0.00 12.00 168.43 14.40 Tm [(T) 120 (ask)] TJ
ET
Q q
BT
0.000 0.000 0.000 rg
/F2 1 Tf 0.00 12.00 -12.00 0.00 19.42 205.26 Tm
[(Quer) -15 (ies per min) 10 (ute)] TJ
ET
Q q
Q q 23.02 489.60 26.53 0.00 re W n
Q q
Q q 23.02 489.60 26.53 0.00 re W n
Q q
Q q
Q q
[...]
Это может быть уменьшено до
1 J 1 j
BT
/F2 1 Tf
12 0 0 12 168.43 14.40 Tm [(T) 120 (ask)] TJ
0 12 -12 0 19.42 205.26 Tm [(Quer) -15 (ies per min) 10 (ute)] TJ
ET
и, возможно, еще больше с большим количествомсложное использование текстовых операторов, что я не могу сделать в своей голове.