Конвертирование XLS в PDF

24.09.08

Разработка - Универсальные функции

Как сохранить свою печатную форму в PDF? Ответ здесь! ;)
Что необходимо:
1. Microsoft Office 2007
2. Надстройка 2007 Microsoft Office: сохранение в формате PDF или XPS (Майкрософт) (скачиваем http://www.microsoft.com/downloads/details.aspx?displaylang=ru&FamilyID=4d951911-3e7e-4ae6-b059-a2e79ed87041 )

Для начала сохраняем печатную форму в xls файл.
И далее:
Процедура СконвертироватьXLSвPDF(ФайлВходящий)

Попытка 

Excel = Новый COMОбъект("Excel.Application");
ExcelWorkBook = Excel.WorkBooks.Open(ФайлВходящий,,1); // открытие в режиме ReadOnly 

Excel.DisplayAlerts = 0; 
ExcelЛист =Excel.ActiveSheet;
Исключение 

Сообщить("Ошибка открытия файла: " + ФайлВходящий);
		

Возврат;
КонецПопытки;
Если ExcelWorkBook <> Null Тогда

ФайлИсходящий =СтрЗаменить(ФайлВходящий, ".xls", ".pdf");
ExcelWorkBook.ExportAsFixedFormat(0,ФайлИсходящий , 0);
	

КонецЕсли;
Excel.ActiveWorkbook.Close(0); // без записи изменений

Excel.Quit();
	

Excel = 0;
КонецПроцедуры 

Вступайте в нашу телеграмм-группу Инфостарт

См. также

Универсальные функции Работа с интерфейсом Программист 1С:Предприятие 8 Бесплатно (free)

Порой необходимо временно отключить расширение 1С, не удаляя его, чтобы не потерять данные. Но в этом случае при каждом запуске всем будет лезть уведомление о неактивном расширении, хотя очевидно, это техническая информация, которой не стоит лишний раз пугать пользователей.

14.05.2025    5403    DeerCven    15    

57

Универсальные функции Программист 1С:Предприятие 8 1C:Бухгалтерия Бесплатно (free)

Благодаря этим пяти строчкам можно больше не заморачиваться с загрузкой из внешних файлов. Пользуюсь везде, всегда и постоянно.

21.05.2024    46297    dimanich70    83    

164

Универсальные функции Программист 1С:Предприятие 8 1C:Бухгалтерия Абонемент ($m)

Задача: вставить картинку из буфера обмена на форму средствами платформы 1С.

1 стартмани

18.03.2024    6841    6    John_d    13    

59

Универсальные функции Программист Стажер 1С:Предприятие 8 1C:Бухгалтерия Бесплатно (free)

Пришлось помучиться с GUID-ами немного, решил поделиться опытом, мало ли кому пригодится.

12.02.2024    57351    atdonya    31    

68

Универсальные функции Программист 1С:Предприятие 8 Бесплатно (free)

На заключительных этапах, когда идет отладка или доработка интерфейса, необходимо много раз переоткрыть внешний объект. Вот один из способов автоматизации этого.

30.11.2023    8607    ke.92@mail.ru    17    

68

WEB-интеграция Универсальные функции Механизмы платформы 1С Программист 1С:Предприятие 8 1C:Бухгалтерия Бесплатно (free)

При работе с интеграциями рано или поздно придется столкнуться с получением JSON файлов. И, конечно же, жизнь заставит проверять файлы перед тем, как записывать данные в БД.

28.08.2023    22758    YA_418728146    8    

174
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. megatrend 131 06.10.09 11:00 Сейчас в теме
А через COM-объект бесплатной программы PDFCreator нельзя в файл напечатать? ;)
2. Трактор 1274 06.10.09 11:08 Сейчас в теме
(1) PDFCreator не всегда верно сохраняет. У меня не получилось уместить счёт на одну страницу. Бесплатное решение с помощью опена офиса описано тут http://infostart.ru/public/20710/ Работает лучше PDFCreator'а.
5. Душелов 4024 24.09.08 22:05 Сейчас в теме
(2) то, что я дал- самый простой способ, т.к. офис обычно есть у многих... Без всего этого - только внешняя компонента, которая все это будет делать ;) Написать могу, а есть ли смысл?
(3) почитай ветку из 1 коммента ;)
(4) Ломать - плохо! Я уважаю труд других программистов :)
6. CheBurator 3232 25.09.08 00:22 Сейчас в теме
(5) > Написать могу, а есть ли смысл?
есть...
39. sp18s 10.10.19 16:12 Сейчас в теме
(5) только этот код не работает на Office 2003. Ошибка!
ExportAsFixedFormat добавили в 2010.
1. Душелов 4024 24.09.08 15:51 Сейчас в теме
2. CheBurator 3232 24.09.08 20:34 Сейчас в теме
бяка! ;-)
- нужен офис... а если его у мну нет...?
- подойдет 2007, а если 2003? или не дай бог 2000? - где проверка на версию/возможность?
- и это похоже на гланды через ЗПС ;-)
- а где вариант для Оо...? в котором есть родное ПДФ...
3. ineoosaki 24.09.08 21:30 Сейчас в теме
А что мешает печатать бесплатным пдф-принтером?
4. ineoosaki 24.09.08 21:41 Сейчас в теме
немного не по теме, но всеже про пдф.
наткнулся я как-то у себя в архиве на Новейший отчет за 2005год. Решил пдф-хелп почитать. Смотрю, а он (хелп) триальной прогой сконвертирован, и на каждой странице об этом жирным текстом сказано. ИМХО, как-то несолидно к платной проге такой хелп прикладывать.
Ломанули бы прогу, и не писал бы я об этом здесь. :)
7. CheBurator 3232 25.09.08 16:09 Сейчас в теме
По ссылке http://www.microsoft.com/downloads/details.aspx?displaylang=ru&FamilyID=4d951911-3e7e-4ae6-b059-a2e79ed87041)
- запрашиваемая страница не найдена.. так и хочется -1 влепить... а еще спрашиваешь нужна ВК или нет....
8. Душелов 4024 25.09.08 16:36 Сейчас в теме
(7) Пинай админов инфостарта, что так коряво отображают ссылки - удали скобку в конце.
10. Abadonna 3976 25.09.08 16:47 Сейчас в теме
(7)Чебуратор, ти мене убив
9. JohnyDeath 302 25.09.08 16:36 Сейчас в теме
скобку последнию убери!
млин, прям как маленький...
11. JohnyDeath 302 25.09.08 16:55 Сейчас в теме
иногда, конечно, хорошо, что Чебур докапывается до мелочей, но это ИМХО уже перебор! Весь свой статус так растеряет ;)
12. CheBurator 3232 26.09.08 13:57 Сейчас в теме
Чебуру не влом растерять весь свой статус... я от эникейщика ухожу все дальше и дальше... матом в адрес админов инфостарта - ну вы поняли.. если там сидят эникейщики, которые толком не могут сделать - это не в моей власти... ;-)
13. CheBurator 3232 26.09.08 13:58 Сейчас в теме
так самое интересное что эту приблуду фиг скачаешь, если у тебя на компе офис не стоит... тоже мне, блин, автоматизаторы... (это я автору сабжа... ;-))
14. Душелов 4024 26.09.08 14:11 Сейчас в теме
(13) так и написано, что для этого требуется ;) 1 пункт! :)
15. Abadonna 3976 26.09.08 14:13 Сейчас в теме
(12-14) Как-то гаишник меня останавливает:
- почему скорость превышаешь?
- дык у тебя ж радара нет
- как будто я до чего-нибудь еще не докопаюсь ;)
16. ineoosaki 26.09.08 18:22 Сейчас в теме
А вот как в дежавю конвертнуть, не подскажете?
17. Душелов 4024 26.09.08 21:09 Сейчас в теме
(16) а для каких целей? мало информации по этому формату
18. ineoosaki 26.09.08 21:29 Сейчас в теме
(17)
Мне дежавю больше чем пдф нравиться.
Хорошая компресия картинок (1мб ч/б картинка бмп уменьшается до 20кб), в просмотрщиках файл быстрее открывается, чем н-р пдф в акробате.
19. JohnyDeath 302 27.09.08 10:01 Сейчас в теме
(18) pdf, ИМХО, лучше всего открывать FoxIt Reader-ом (бесплатный) https://www.foxitsoftware.com/pdf/reader_2/down_reader.htm
ineoosaki; Душелов; +2 Ответить
20. moonlight81 01.10.08 09:33 Сейчас в теме
Для таких целей я обычно ставлю бесплатный принтер PDFCreator и на него посылаю печать....вот и получается файлик pdf, а тут промежуточная фаза в виде XLS
21. Душелов 4024 01.10.08 09:36 Сейчас в теме
22. gull71 01.10.08 10:56 Сейчас в теме
А можно узнать какой смысл конвертить *.xls в *.pdf, если при сохранении в *.xls теряется форматирование?Не проще напечатать на *.pdf-принтер сразу?Ну если не pdf, то Skitex можно поставить:-)И в дальнейшем отконвертить AcrobatDistiller-ом в pdf?
23. Душелов 4024 01.10.08 10:58 Сейчас в теме
(22) 1. Смотря в формате какого офиса сохранять в xls.
2. Как я понял, все должно делаться программно.
24. sea-man 01.10.08 19:33 Сейчас в теме
Василь, респект и уважуха!
Лавр.
25. Душелов 4024 01.10.08 19:38 Сейчас в теме
26. dance000 03.10.08 09:41 Сейчас в теме
Поддержу по поводу ненужности формата xls, т.к. у себя сделал что печатается прямо на принтер Adobe Distiller и полученный файлик забираю и складываю куда мне нужно.
29. barsuk 24.01.10 15:42 Сейчас в теме
Выдает ошибку - Ошибка при вызове метода контекста (ExportAsFixedFormat): Произошла исключительная ситуация (0x800a03ec)
ExcelWorkBook.ExportAsFixedFormat(0, ФайлВФорматеXLS , 0);
по причине:
Произошла исключительная ситуация (0x800a03ec)
Не работает. Офис 2007.
30. Душелов 4024 24.01.10 15:56 Сейчас в теме
(29) Да, описание ошибки многозначащая... :)
А просто так, из офиса из меню сохраняет?
31. barsuk 24.01.10 16:14 Сейчас в теме
(30) принтера не стояло - из-за этого:) но при попытки открытия пдф файла сохраненног выдает -файл не пдф или поврежден
32. Душелов 4024 24.01.10 16:22 Сейчас в теме
(31) Ну тут уже вопрос к микрософту :)
33. barsuk 24.01.10 16:27 Сейчас в теме
Стоит Foxit Reader - он не открывает его. В чем проблема? Файл пересораненный таким образом будет открываться только акробатом? Или им тоже не будет?:)
34. barsuk 24.01.10 16:29 Сейчас в теме
Но если попробовать открыть этот фал экселем - то все нормально:)
35. Душелов 4024 24.01.10 16:30 Сейчас в теме
(34) Я не знаю, как сохраняет офис. Я не разработчик этой надстройки.
У меня - все открывается. Всеми ридерами. Офис 2007 - лицензия со всеми обновлениями.
36. barsuk 24.01.10 16:34 Сейчас в теме
(35) :) а нет идей почему такое может происходить? Такое ощущение что расширение поменял но в формат пдф не перевел:(
37. cool.vlad4 2 25.07.11 12:08 Сейчас в теме
Пишу только из удивления и возможно, для тех кому надо сохранять mxl в pdf, используя описанный в статье способ(если excel стоит на сервере, то наверное можно сохранять и в контексте сервера). Вся проблема заключается в том, что при сохранении в xls, картинки теряют прозрачность. Если выставлять размер картинки - растянуть, затем делать фон либо прозрачным, либо rgb(255,255,255,0) , то сохраняется в excel(и кстати в open office тоже) с прозрачностью. Остается проблема размещения в одну страницу, которая легко решается либо макросом, либо лучше через com, например
xlPaperA4 = 9;
xlPrintNoComments = -4142;
xlAutomatic = -4105;
xlPortrait = 1;
xlDownThenOver = 1;
xlPrintErrorsDisplayed = 0;
ExcelЛист.PageSetup.LeftMargin = Excel.InchesToPoints(0);
ExcelЛист.PageSetup.RightMargin = Excel.InchesToPoints(0);
ExcelЛист.PageSetup.TopMargin = Excel.InchesToPoints(0);
ExcelЛист.PageSetup.BottomMargin = Excel.InchesToPoints(0);
ExcelЛист.PageSetup.HeaderMargin = Excel.InchesToPoints(0);
ExcelЛист.PageSetup.FooterMargin = Excel.InchesToPoints(0);
ExcelЛист.PageSetup.PrintHeadings = False;
ExcelЛист.PageSetup.PrintGridlines = False;
ExcelЛист.PageSetup.CenterHorizontally = False;
ExcelЛист.PageSetup.CenterVertically = False;
ExcelЛист.PageSetup.Orientation = xlPortrait;
ExcelЛист.PageSetup.PrintComments = xlPrintNoComments;
ExcelЛист.PageSetup.Draft = False;
ExcelЛист.PageSetup.PaperSize = xlPaperA4;
ExcelЛист.PageSetup.FirstPageNumber = xlAutomatic;
ExcelЛист.PageSetup.Order = xlDownThenOver;
ExcelЛист.PageSetup.BlackAndWhite = False;
ExcelЛист.PageSetup.Zoom = 100;
ExcelЛист.PageSetup.PrintErrors = xlPrintErrorsDisplayed;
ExcelЛист.PageSetup.OddAndEvenPagesHeaderFooter = False;
ExcelЛист.PageSetup.DifferentFirstPageHeaderFooter = False;
ExcelЛист.PageSetup.ScaleWithDocHeaderFooter = True;
ExcelЛист.PageSetup.AlignMarginsHeaderFooter = True;
atdonya; NewLifeMan; kanimot; +3 Ответить
38. Shmell 613 20.12.11 08:04 Сейчас в теме
Перенос по строкам в многострочном поле не корректно отображается. Само сохранение в xls уже делает все без переноса и соответственно в pdf все не очень красиво переносится
Для отправки сообщения требуется регистрация/авторизация