Сжать pdf при сохранении из табличного документа

1. arshanskiyav 29 08.11.17 23:35 Сейчас в теме
Имеем:
Комплексная автоматизация, редакция 1.1 (1.1.90.1)
1С:Предприятие 8.3 (8.3.8.2322)

Есть табличный документ, он сохраняется в pdf программно, при помощи Записать().
Но размер конечного файла варьируется от 18Мб и выше. Дальше этот pdf нужно отправить по почте, опять же из интерфейса 1С, и как результат можно получить ошибку от почтового сервера (gmail) о превышении размера вложенного файла (25мб).

В табличном документе есть картинки, минимум две на страницу, суммарный размер картинок не превышает 5Мб.

Есть ли возможность сжать как-то pdf?
По теме из базы знаний
Найденные решения
6. herfis 500 09.11.17 11:07 Сейчас в теме
Думаю, что дело все же в картинках. Подозреваю, что при сохранении в pdf они перепаковываются из jpg в более ресурсоемкий формат.
Чтобы убедиться в этом - попробуй сохранить без картинок. И если таки да - пережимай картинки в более низкое качество.
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
10. Aitbay 09.11.17 11:53 Сейчас в теме
по хорошему необходимо заставить pdf принтер при сохранении файла:
1. текст записывать текстом а не картинкой (проверяется в "акробате про" можно отредактировать текст)
2. в пдф записывать только используемые шрифты иначе в пдф записывается информация обо всех установленных шрифтах системы
сам раньше когда работал в газете юзал nova pdf (платный) , который как раз мог не меняя качества уменьшать размер pdf за счет того что не писал в него лишнюю инфу
***********************************
можно еще попробовать сохранить в ворд или xls и потом xls SaveAs в pdf из 1с
не мое нашел в просторах гугл ответов


ДанныеМакета = Справочники.ДоговорыСКонтрагентами.МакетДоговора.Получить();
ИмяФайла = "D:\file.docx";
ИмяФайлаПДФ = "D:\file.pdf";
ДанныеМакета.Записать(ИмяФайла);

MSWord = Новый COMОбъект("Word.Application");
MSWord.Visible = Ложь;
MSWord.Documents.Open(ИмяФайла);
Документ = MSWord.Application.Documents(1);
Документ.Activate();
ТекстМакета = Документ.Content.Text;
//Получим массив параметров
МассивПараметров = РазбитьСтроку(ТекстМакета, "[", "]");
ТаблицаЗначенийПараметров = Новый ТаблицаЗначений;
ТаблицаЗначенийПараметров.Колонки.Добавить("НазваниеПараметра");
ТаблицаЗначенийПараметров.Колонки.Добавить("ПреобразованноеЗначение");
Для Каждого ТекПараметр Из МассивПараметров Цикл
Попытка
СсылкаНаОбъект = Вычислить(ТекПараметр);
СтрПреобразование = ТаблицаЗначенийПараметров.Добавить();
СтрПреобразование.НазваниеПараметра = ТекПараметр;
СтрПреобразование.ПреобразованноеЗначение = СсылкаНаОбъект;
Исключение
Сообщить("Невозможно интерпретировать параметр ["+ ТекПараметр+ "]");
КонецПопытки;
КонецЦикла;
//Заменим названия параметров на значения
Замена = Документ.Content.Find;
Для Каждого ТекСтрока Из ТаблицаЗначенийПараметров Цикл
Попытка
Замена.Execute("["+ ТекСтрока.НазваниеПараметра +"]", , , , , , , , , ТекСтрока.ПреобразованноеЗначение, 2);
Исключение
Сообщить("Невозможно преобразовать параметр ["+ ТекСтрока.НазваниеПараметра +"]");
КонецПопытки;
КонецЦикла;

//Сохраним в word
Документ.Save();
//Сохраним в pdf
Документ.SaveAs(ИмяФайлаПДФ, 17);

MSWord.Application.Quit();
Показать
12. arshanskiyav 29 09.11.17 12:05 Сейчас в теме
(10) Я уже думал на счет промежуточного сохранения, когда встала проблема с первой страницей, но это как то очень нагружено получается.
2. artkor 283 09.11.17 00:01 Сейчас в теме
Можно в zip заррхивировать, а полученный архив отправить. Подробнее здесь: https://its.1c.ru/db/metod8dev/content/2323/hdoc
4. arshanskiyav 29 09.11.17 10:37 Сейчас в теме
(2) В виду нынешних атак, на многих серверах запрет архивов. А админы запрещают открывать такие вложения.
3. Aitbay 09.11.17 06:51 Сейчас в теме
В табличном документе есть картинки, минимум две на страницу, суммарный размер картинок не превышает 5Мб

5мб для картинок очень много
платформенный способ записать в pdf всегда увеличивает файл записывает туда кучу не нужной информации

попробуйте через com-объект
Acrobat = Новый COMОбъект("AcroPDF.PDF.1");
5. arshanskiyav 29 09.11.17 11:02 Сейчас в теме
(3) ЕМНИП, для использования этого объекта нужен установленный Acrobat и не Reader.
8. user856012 13 09.11.17 11:21 Сейчас в теме
(5)
ЕМНИП, для использования этого объекта нужен установленный Acrobat и не Reader.
Этточно: http://compconfig.ru/tips/sjatie-pdf.html

Лично я бы для попробовал установить какой-нибудь виртуальный PDF-принтер, сформировал файл через него и посмотрел - есть ли выигрыш в размере?

Если есть, то думал бы, как организовать такую печать (по факту - сохранение) программно.

А если выигрыша нету, то и дергаться нечего.

Ну, для очистки совести погонял бы готовый PDF через пару-тройку онлайн-сервисов по сжатию и посмотрел бы на результат.
9. arshanskiyav 29 09.11.17 11:34 Сейчас в теме
6. herfis 500 09.11.17 11:07 Сейчас в теме
Думаю, что дело все же в картинках. Подозреваю, что при сохранении в pdf они перепаковываются из jpg в более ресурсоемкий формат.
Чтобы убедиться в этом - попробуй сохранить без картинок. И если таки да - пережимай картинки в более низкое качество.
7. arshanskiyav 29 09.11.17 11:17 Сейчас в теме
(6)Картинки в png, по большей части (нужна прозрачность).
Попробовал использовать Bullzip (anig99), который пришлось установить для правильной работы ПроверитьВывод(), размер 4Мб, но качество очень плохое. Дык еще и платная если хотим снять галку "Сжимать изображения".
11. arshanskiyav 29 09.11.17 11:59 Сейчас в теме
(6)Спасибо, подтолкнул на мысль.
В документе 5 страниц, на 4 страницах по картинке в колонтитулах. Изначально png, и весили 11Кб. Сохранил в jpg, вес уменьшился, а результат не изменился.
На первой странице картинка во весь рост, весила 1Мб в jpg, ужал, результат нулевой.
На двух страницах по две картинки png (обязательно с прозрачностью) - 11Кб и по две jpg (каждый раз разные).
Начал просто удалять картинки с выведенного документа и пришел к выводу, что проблема в тех двух жипегах, которые всегда разные. Сжал их и теперь у меня документ весит не 28Мб, а 2,25Мб.

Вернул всё сжатое назад и теперь вес документа 3.3Мб.

И еще плюс, теперь выводится на экран быстрее.
13. ingmar 29.08.19 10:48 Сейчас в теме
(11) А не поделитесь советом или кодом, как сжали и в какой формат?
Тоже ведем войну с платформой 1С, сохраняем всего одно фото размером 600кб, получаем PDF размером 5.5мб
14. frob_st 50 18.05.20 14:32 Сейчас в теме
(13) Получилось решить? Сейчас озадачен этой же проблемой....
15. Night_Trap 02.06.20 16:33 Сейчас в теме
(11) Подскажите пожалуйста, удалось ли решить вопрос программно?
16. arshanskiyav 29 02.06.20 17:50 Сейчас в теме
(15)
(14)
(13)
Нет, видно не совсем понятно выразился выше - я сжал картинки средствами ОС (Microsoft Office Picture Manager) перед тем как их запихать ТабличныйДокумент.
17. trio-tlt 11.04.24 09:11 Сейчас в теме
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот