Здравствуйте!
Проблема: есть сохраненный из 1С файл XLS с текстом и картинкой. В EXCEL вижу что фон картинки - прозрачный, и за ней виден текст.
А после конвертации в PDF прозрачность фона - исчезает, да вдобавок еще появляется ненужная рамка у картинки.
Как побороть сию неприятность ????????????
ОЧ-Ч-Ч-Ч-Ч-ЧЕНЬ НУЖНО ! ! !
Файл XLS (сохранялся в формате XLS97), полученный из 1С - готов прислать на анализ.
Йоксель » Главный форум
Прозрачный фон картинки в PDF
(10 posts)-
Отправлено 14 года(лет) назад #
-
Это смотря как происходит "конвертация в PDF". Например, сохраняем из восьмерки в MXL7 и открываем Йокселем. Тогда в 99% случаев прозрачности не будет (прозрачность в этом случае будет только для картинок EMF/WMF). Если сохранять в xl97, а уже этот файл открывать Йокселем, то не исключено, что можно будет добиться прозрачности. Но не факт. Лучший способ - создать изначально документ в формате xl97, в него вставить картинки в формате PNG с прозрачностью. Когда требуется получить PDF, то открываем этот XLS-документ Йокселем, средствами Йокселя подправляем, где нужно, результат экспортируем в PDF.
Отправлено 14 года(лет) назад # -
Не понял...
Так я вроде именно так и делаю! Сохраняю из 1С файл с наложенной картинкой (*.PNG) с прозрачным фоном в формате XLS97. Его же и открываю Йокселем. Конвертирую. И результат - ПРОЗРАЧНОСТЬ ПРОПАЛА ! ! !
Вот как все делается:
===================================================================
// Для присоединения документа к письму как вложение
// сохраним файл накладной (ВРЕМЕННО, формат = XLS97)
Попытка
ЭлементыФормы.ПолеТабличногоДокумента.Записать(КаталогВременныхФайлов()+"MyFile.xls", ТипФайлаТабличногоДокумента.XLS97);
Исключение
Предупреждение("Ошибка при записи. Файл не записан.");
КонецПопытки;// Сконвертируем файл накладной (ВРЕМЕННЫЙ) из формата XLS в формат PDF
Попытка
ЗагрузитьВнешнююКомпоненту(КаталогПрограммы() + "Yoksel.dll");Йоксель = ПолучитьCOMОбъект("","Йоксель");
КонвертерPDF = Йоксель.СоздатьГрафическийКонвертерPDF();
// КонвертерPNG = Йоксель.СоздатьГрафическийКонвертер();
Исключение
Предупреждение("Не удалось загрузить внешнюю компоненту Yoksel!", 20);
Возврат;
КонецПопытки;// Конвертируем временный файл в формат pdf
Попытка
Таб = Йоксель.СоздатьТабличныйДокумент();
Таб.Открыть(КаталогВременныхФайлов()+ "MyFile.xls", "2");
Таб.ПараметрыПечати.Ориентация = 2;
КонвертерPDF.Документ = Таб;
// // Установим размер страницы в А4
КонвертерPDF.КоличествоБитНаПиксел = 24; //1, 4, 8, 24
КонвертерPDF.ШиринаСтраницы = 11907;
КонвертерPDF.ВысотаСтраницы = 16840;
КонвертерPDF.ПолеСлева = 1134; // в твипах (1 твип = 1/567 см)
КонвертерPDF.ЗаписатьВФайл(КаталогВременныхФайлов()+ "MyFile.pdf");
Исключение
Сообщить(ОписаниеОшибки(), СтатусСообщения.Важное);
Возврат;
КонецПопытки;
=====================================================================
Ну и что здесь нужно исправить, чтоб фон сохранить прозрачным ???????????????Отправлено 14 года(лет) назад # -
Насколько я помню, 1С вообще не поддерживает PNG. Когда вставляем в документ PNG-картинку, она преобразуется в другой формат.
Отправлено 14 года(лет) назад # -
Ну так каково будет решение в моей ситуации ?
Буду очень признателен за ПОДРОБНУЮ ИНСТРУКЦИЮ (желательно с примером)
Заранее спасибо!Отправлено 14 года(лет) назад # -
Еще раз проверил - в 1С я выбираю добавление картинки именно формата PNG!
(Правда там этот формат идет в общей строке форматов вида:
Все картинки (*.bmp, *.dib, *.rle, *.gif, *.jpg, *.jpeg, *.png
и понять - делает ли 1С внутреннее преобразование формата - неясно...)
НО: если посмотреть ПРОМЕЖУТОЧНЫЙ файл *.XLS - то в нем все в порядке: фон прозрачный!
П О М О Г И Т Е ! ! ! !Отправлено 14 года(лет) назад # -
> Ну так каково будет решение в моей ситуации
Я уже писал - работать с шаблоном в файле XLS, где вставлена PNG-картинка с прозрачностью. Шаблон должен быть сформирован Excel'ем, а не 1С.
> Буду очень признателен за ПОДРОБНУЮ ИНСТРУКЦИЮ (желательно с примером)
Нет уж. Сам давай.
> Еще раз проверил - в 1С я выбираю добавление картинки именно формата PNG!
Это ничего не значит. В 1С 7.7 можно, например, вставлять JPEG-картинки, тогда как в документе может быть только BMP. Здесь какой-то, скорее всего стандартный виндовый, механизм задействуется, через который 1С загружает картинки из неподдерживаемых ей форматов.
> если посмотреть ПРОМЕЖУТОЧНЫЙ файл *.XLS - то в нем все в порядке: фон прозрачный!
Все может быть. В конце концов Йоксель не поддерживает абсолютно все возможности Excel.
Повторяю еще раз, Йоксель поддерживает прозрачность только для картинок EMF/WMF или PNG. Поэтому в документе должна быть картинка именно в таких форматах. Реальный способ этого добиться - использовать шаблон в формате XLS. Процесс формирования документа может выглядеть так: формируем документ без картинки через 1С. Как либо загружаем его в документ Йокселя. В отдельном документе Йокселя открываем шаблон XLS с картинкой. В этот документ с картинкой вставляем в начало строки из документа, сформированного в 1С (ТабличныйДокумент.ВставитьОбласть). Получается конечный документ, который потом преобразуем в картинку.
Отправлено 14 года(лет) назад # -
Здорово... (:-()
А вот что говорит Альма-1С по такому поводу:
Ссылка: _http://devtrainingforum.v8.1c.ru/forum/thread.jsp?id=567051
Q: ... Подскажите как можно из 1С выгрузить картинку в Excel с сохранением прозрачности фона???A: В Excel 97 и 2007 можно экспортировать картинки с прозрачным фоном при соблюдении следующих условий:
- картинка не векторная
- РазмерКартинки = Растянуть
- Узор = Нет заливки
--------------------------
Так и делал. Итог - см.выше...
Черт-те-что !
"Все мозги разбил на части,
Все извилины заплел.
И Канатчиковы власти
Колют нам второй укол..."Отправлено 14 года(лет) назад # -
Перечитай тему еще раз.
Отправлено 14 года(лет) назад # -
(0) печатай на doPdfPrinter , он не портит прозрачность картинок
Отправлено 14 года(лет) назад #
Отправить сообщение
Вы должны войти в систему, чтобы оставлять сообщения.