Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / WinForms, .Net Framework Новый топик    Ответить
 Компрессия pdf  [new]
FreeBard
Member

Откуда:
Сообщений: 218
Доброго времени суток!

Дали задачу написать модуль для системы документооборота уменьшающий размер pdf файла.
Файлы с несжатой графикой(отсканированные документы, скорее всего tiff), хранить в базе махины весом в 100мб моветон.

Попробовал библиотеку Docotic pdf от Bitmiracle. Для моей задачи подошла идеально, простота исп, хорошо сжимает. Единственный недостаток - цена овер $400 за лицензию.. Покупать целый фреймворк ради одной функции никто не хочет. Кряк или серийник найти не получилось.

Суть вопроса: возможно кто то сталкивался с подобной проблемой уменьшения размера, подскажите как решали, что использовали.
Возможно есть бесплатные библиотеки?

Или может пути решения (вынуть графические файлы из пдф, конвертировать например в jpg и запихать обратно)
5 окт 17, 18:39    [20846282]     Ответить | Цитировать Сообщить модератору
 Re: Компрессия pdf  [new]
Дмитрий77
Member

Откуда:
Сообщений: 4018
FreeBard
размер pdf файла.
Файлы с несжатой графикой(отсканированные документы, скорее всего tiff), ...в 100мб
Возможно есть бесплатные библиотеки?
Или может пути решения (вынуть графические файлы из пдф, конвертировать например в jpg и запихать обратно)


Правильно мыслишь.

Ghostscript
Он тебе сконвертит любой PDF (пофиг чего там внутри) -> TIFF (многостраничный)
формат TIFF задашь, там куча опций (я интересовался только факсовыми форматами, но там есть и любые цветные, и grayscale и все что хочешь со сжатием и т.п.)
gswin32c.exe + gsdll32.dll (командная строка)

Далее тебе нужен libtiff
GnuWin32 v.3.8.2 это кажется самое то
Там есть утилита TIFF2PDF.exe
Она тебе запихнет твой TIFF обратно в PDF (но уже тот TIFF который сжатый)

Но, имей ввиду что если в исходном pdf у тебя не чистая картинка, а какой-то еще текст и т.п.,
то GS при конвертации в TIFF сделает тебе "чистую картинку".

А несжатый TIFF это да, нечто по размеру на 2 порядка превышающее сжатый (причем качество картинки такое же).
6 окт 17, 12:34    [20847845]     Ответить | Цитировать Сообщить модератору
 Re: Компрессия pdf  [new]
Roman Mejtes
Member

Откуда: г. Пермь
Сообщений: 2272
Дмитрий77,

PDF это только контейнер, оригинальный PDF файл может весить значительно меньше чем такой же файл, но с Tiff содержимым
6 окт 17, 12:59    [20847949]     Ответить | Цитировать Сообщить модератору
 Re: Компрессия pdf  [new]
Дмитрий77
Member

Откуда:
Сообщений: 4018
Roman Mejtes,
ты мне чего объяснить пытаешься, т.е. я этого типа не знаю, да?
У чела есть оригинальный PDF-контейнер с оригинальным несжатым TIFF в нем, за счет чего этот PDF весит немерено.
GS ему из этого PDF сделает приемлимых размеров сжатый TIFF.
tiff2pdf пихнет этот новый сжатый TIFF в новый PDF-контейнер. Будет новый PDF маленьких размеров.
Все путем.
Бинарники и того и другого скачиваются, компилировать исходники GS и libtiff/GnuWin32 даже не надо (компиляция подобных проектов это отдельная нетривиальная тема).
6 окт 17, 13:13    [20848017]     Ответить | Цитировать Сообщить модератору
 Re: Компрессия pdf  [new]
Изопропил
Member

Откуда:
Сообщений: 30344
Дмитрий77
компиляция подобных проектов это отдельная нетривиальная тема

не так всё страшно
6 окт 17, 13:33    [20848123]     Ответить | Цитировать Сообщить модератору
 Re: Компрессия pdf  [new]
Дмитрий77
Member

Откуда:
Сообщений: 4018
Изопропил
Дмитрий77
компиляция подобных проектов это отдельная нетривиальная тема

не так всё страшно

Ну, мне не страшно. А автору м.б. проще готовые бинарники взять, они ж есть.
Я все это предпочитаю компилить в VC++2005 под 8.0.50727.762 дабы не иметь нигде проблем с запуском.
Хотя с крайней версией GS я чуть помучился, чтоб впихнуть ее именно в 2005-ю, пришлось править make-файлы, или как оно там называется.

GS кстати API имеет, недавно как раз доразбирался. Но автор опять же может взять готовую cmd и не мучиться.
6 окт 17, 13:54    [20848248]     Ответить | Цитировать Сообщить модератору
 Re: Компрессия pdf  [new]
Изопропил
Member

Откуда:
Сообщений: 30344
Дмитрий77,

у топикстартера вроде как tiff на входе, GS ему не нужен
6 окт 17, 14:09    [20848323]     Ответить | Цитировать Сообщить модератору
 Re: Компрессия pdf  [new]
Дмитрий77
Member

Откуда:
Сообщений: 4018
Изопропил
Дмитрий77,
у топикстартера вроде как tiff на входе, GS ему не нужен

Перечитай, у него pdf, в котором сидит несжатый tiff.
FreeBard
Дали задачу написать модуль для системы документооборота уменьшающий размер pdf файла.
Файлы с несжатой графикой(отсканированные документы, скорее всего tiff),

GS ему как раз в одно действие решит задачу конвертации PDF обратно в TIFF + задачу сжатия TIFF-формата.
6 окт 17, 14:23    [20848406]     Ответить | Цитировать Сообщить модератору
 Re: Компрессия pdf  [new]
FreeBard
Member

Откуда:
Сообщений: 218
Дмитрий77, спасибо за подробные рекомендации!

Все-таки хотелось бы решения именно на дотнете, бесплатную .NET-библиотеку для работы с пдф, которая позволит выполнить эти действия.
Код будет интегрирован в достаточно массивную самописную орм, не хочется для такой небольшой задачи ее (и так за годы ставшую монстрообразной) дополнительно обвешивать внешними приложениями.
6 окт 17, 16:16    [20848856]     Ответить | Цитировать Сообщить модератору
 Re: Компрессия pdf  [new]
Изопропил
Member

Откуда:
Сообщений: 30344
FreeBard
обвешивать внешними приложениями.
это не страшно.

разделяй и властвуй (с)

кого интересует кроме разработчика какие и сколько dll,exe и процессов в приложении
6 окт 17, 17:06    [20849075]     Ответить | Цитировать Сообщить модератору
 Re: Компрессия pdf  [new]
Изопропил
Member

Откуда:
Сообщений: 30344
FreeBard,

на входе у тебя файлы изображений или pdf?
6 окт 17, 17:08    [20849083]     Ответить | Цитировать Сообщить модератору
 Re: Компрессия pdf  [new]
Дмитрий77
Member

Откуда:
Сообщений: 4018
FreeBard,

Да вы попробуйте, там все просто, я вам фактически дал ссылки на бинарники.
cmd через Shell из .Net не вызовете (с ожиданием завершения процесса)?

>дополнительно обвешивать внешними приложениями.
GS требует dll+exe ну либо API вместо exe (под спойлером все есть, с callback-ами аккуратней, но они вам не нужны).
tiff2pdf.exe требует 3 маленьких dll (имена легко вычислите, положив в отдельную папку).

Самый большой gsdll32.dll ~15MB (если не компилировать ненужные "девайсы", можно сделать около 11МБ).
Мне этот размер тоже когда-то не понравился, но таки согласился и несколько лет все нормально, оно того стоит.

Не, хотя говорят есть пи-д-тые .Net dll, кот. "работают из браузера",
но я б на вашем месте попробовал/воспользовался тем что я сказал, оно вашу задачу предположительно решит на ура.

В общем дело ваше.
6 окт 17, 17:08    [20849085]     Ответить | Цитировать Сообщить модератору
 Re: Компрессия pdf  [new]
FreeBard
Member

Откуда:
Сообщений: 218
Изопропил, файлы пдф
6 окт 17, 19:50    [20849476]     Ответить | Цитировать Сообщить модератору
 Re: Компрессия pdf  [new]
FreeBard
Member

Откуда:
Сообщений: 218
Дмитрий77, я конечно попробую, хотя бы как альтернативный вариант, но все же для меня в данной задаче предпочтительней решение на дотнет
6 окт 17, 19:54    [20849479]     Ответить | Цитировать Сообщить модератору
 Re: Компрессия pdf  [new]
FreeBard
Member

Откуда:
Сообщений: 218
Проблема решена взломом Docotic'a
8 окт 17, 22:59    [20853135]     Ответить | Цитировать Сообщить модератору
 Re: Компрессия pdf  [new]
Roman Mejtes
Member

Откуда: г. Пермь
Сообщений: 2272
FreeBard
Docotic'a
оставайтесь на месте, за вами уже выехала
9 окт 17, 10:11    [20853583]     Ответить | Цитировать Сообщить модератору
Все форумы / WinForms, .Net Framework Ответить