Есть табличный документ, он сохраняется в pdf программно, при помощи Записать().
Но размер конечного файла варьируется от 18Мб и выше. Дальше этот pdf нужно отправить по почте, опять же из интерфейса 1С, и как результат можно получить ошибку от почтового сервера (gmail) о превышении размера вложенного файла (25мб).
В табличном документе есть картинки, минимум две на страницу, суммарный размер картинок не превышает 5Мб.
Думаю, что дело все же в картинках. Подозреваю, что при сохранении в pdf они перепаковываются из jpg в более ресурсоемкий формат.
Чтобы убедиться в этом - попробуй сохранить без картинок. И если таки да - пережимай картинки в более низкое качество.
по хорошему необходимо заставить 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();
Думаю, что дело все же в картинках. Подозреваю, что при сохранении в pdf они перепаковываются из jpg в более ресурсоемкий формат.
Чтобы убедиться в этом - попробуй сохранить без картинок. И если таки да - пережимай картинки в более низкое качество.
(6)Картинки в png, по большей части (нужна прозрачность).
Попробовал использовать Bullzip (anig99), который пришлось установить для правильной работы ПроверитьВывод(), размер 4Мб, но качество очень плохое. Дык еще и платная если хотим снять галку "Сжимать изображения".
(6)Спасибо, подтолкнул на мысль.
В документе 5 страниц, на 4 страницах по картинке в колонтитулах. Изначально png, и весили 11Кб. Сохранил в jpg, вес уменьшился, а результат не изменился.
На первой странице картинка во весь рост, весила 1Мб в jpg, ужал, результат нулевой.
На двух страницах по две картинки png (обязательно с прозрачностью) - 11Кб и по две jpg (каждый раз разные).
Начал просто удалять картинки с выведенного документа и пришел к выводу, что проблема в тех двух жипегах, которые всегда разные. Сжал их и теперь у меня документ весит не 28Мб, а 2,25Мб.
Вернул всё сжатое назад и теперь вес документа 3.3Мб.
(11) А не поделитесь советом или кодом, как сжали и в какой формат?
Тоже ведем войну с платформой 1С, сохраняем всего одно фото размером 600кб, получаем PDF размером 5.5мб
(15)
(14)
(13)
Нет, видно не совсем понятно выразился выше - я сжал картинки средствами ОС (Microsoft Office Picture Manager) перед тем как их запихать ТабличныйДокумент.