Форум программистов, компьютерный форум, киберфорум
PowerShell
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/3: Рейтинг темы: голосов - 3, средняя оценка - 4.67
13 / 8 / 7
Регистрация: 12.06.2019
Сообщений: 197

Обработка файлов

08.05.2024, 21:00. Показов 675. Ответов 10
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте
Есть сайт на Windows Server
Одна из задач - выдавать пользователю некие документы в формате PDF.
Сам сайт формирует их в форматах docx (ну или xlsx).
Для конвертации в PDF используется (точнее пытаюсь использовать) установленный на сервере LibreOffice.
Для этих целей:
1. В Windows cоздал пользователя
2. Через IIS подключил этот сайт как этого пользователя
3. Дал пользователю права на чтение и запись файлов в нужной папке
4. С сайта запускаю сценарий *.ps1
Проблема в п. 4
Сценарий выглядит так:
PowerShell
1
2
3
4
5
6
7
$LibreOfficeExe = "C:\Program Files\LibreOffice\program\soffice.exe"
$ConvertTo = "pdf"
$OutputDirectory = "\uploads\doc"
$InputFile = "\uploads\doc\testpdf\act-5226.docx"
 
$Argument = '--headless --convert-to ' + $ConvertTo + ' --outdir "' + $OutputDirectory1 + '" "' + $InputFile + '"'
Start-Process $LibreOfficeExe -ArgumentList $Argument
Проблема заключается в том, что этот сценарий из командной строки powershell работает корректно, а вот при запуске с сайта процесс LibreOffice запускается и висит без действий. Я так думаю, скорее всего будучи запущенным не через строку Office не имеет прав на работу с файлами. Поэтому и висит.
Пользователь (сайт) такие права имеет, потому что другой сценарий (простое копирование файла) выполняется нормально
PowerShell
1
Copy-Item $InputFile -Destination $OutputDirectory
Как можно решить эту проблему?
Заранее спасибо!
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
08.05.2024, 21:00
Ответы с готовыми решениями:

Добавление части имени файла внутрь файлов, обработка множества файлов
Есть директория, в которой находится n-ое количество файлов csv. Нужно в начало каждой строки, во всех файлах добавить часть из названия...

Обработка файлов по очереди
Добрый день! Есть рабочий скрип, но есть проблема. Он считывает все файлы в папке и потом полученный и обработанный текст сохраняет...

Обработка файлов с созданием и использованием файла со списком имён файлов, исключаемых при данной обработке
Эх, чтобы я без вас делал то ;) Доброго времени суток! Задача сценария: просматривать файлы в текущей директории и если их нету в...

10
Любознательный
 Аватар для YuS_2
7405 / 2255 / 360
Регистрация: 10.03.2016
Сообщений: 5,216
08.05.2024, 22:32
Цитата Сообщение от Престашоп Посмотреть сообщение
что этот сценарий из командной строки powershell работает корректно
этот сценарий, не может работать корректно, в принципе.

Цитата Сообщение от Престашоп Посмотреть сообщение
$OutputDirectory = "\uploads\doc"
Цитата Сообщение от Престашоп Посмотреть сообщение
--outdir "' + $OutputDirectory1 +
- это две разные переменные.
0
13 / 8 / 7
Регистрация: 12.06.2019
Сообщений: 197
08.05.2024, 22:40  [ТС]
Это ошибка копипаста только здесь в примере, на самом деле там одинаковые
Извините за неточность...
0
Любознательный
 Аватар для YuS_2
7405 / 2255 / 360
Регистрация: 10.03.2016
Сообщений: 5,216
08.05.2024, 23:06
Престашоп, ну а в принципе... "скрипач не нужен..."
В смысле, ни MS Office, ни Libreoffice... нужен Free Spire.Office for .NET
1
13 / 8 / 7
Регистрация: 12.06.2019
Сообщений: 197
08.05.2024, 23:16  [ТС]
Цитата Сообщение от YuS_2 Посмотреть сообщение
В смысле, ни MS Office, ни Libreoffice... нужен Free Spire.Office for .NET
А что это по сути изменит?
0
Любознательный
 Аватар для YuS_2
7405 / 2255 / 360
Регистрация: 10.03.2016
Сообщений: 5,216
09.05.2024, 00:22
Цитата Сообщение от Престашоп Посмотреть сообщение
А что это по сути изменит?

Но если у Вас проблема с раздачей прав (ну, раз локально скрипт работает), то скорее всего, вопрос надо не здесь задавать. Проблема ведь не в скрипте? В общем непонятно как и что у Вас запускается...

Добавлено через 35 минут
Но, на всякий случай, как использовать:
Скачиваете пакет, указываете путь к библиотекам:
PowerShell
1
2
3
4
5
Add-Type -Path D:\Test\Spire.Doc.dll
Add-Type -Path D:\Test\Spire.Pdf.dll
$doc = New-Object Spire.Doc.Document
$doc.LoadFromFile("test.doc")
$doc.SaveToFile("test.pdf",[Spire.Doc.FileFormat]::PDF)
Всё.
Проверить несложно...
0
505 / 158 / 49
Регистрация: 27.02.2016
Сообщений: 820
09.05.2024, 05:32
поставьте либрофис в докер и

Code
1
docker run --entrypoint sh --rm -it --name $NAME --hostname libreoffice -e PGID=1000 -e PUID=1000 -c 512 -m 2096m -v /usr/share/fonts:/usr/share/fonts:ro -v $(pwd)/data:/home/alpine $BASE_IMAGE /usr/bin/libreoffice --headless --convert-to pdf /home/alpine/test.doc
не стоит мучиться дургими словами с повышением привилегий веб клиетна на видоз
заодно и на линуск передохите
0
 Аватар для volodin661
6686 / 2278 / 347
Регистрация: 10.12.2013
Сообщений: 7,863
09.05.2024, 22:02
Цитата Сообщение от Престашоп Посмотреть сообщение
Есть сайт на Windows Server
не стыдно ?
0
13 / 8 / 7
Регистрация: 12.06.2019
Сообщений: 197
09.05.2024, 22:14  [ТС]
Это всё что может ответить уважающий себя и других участников форума?
0
 Аватар для volodin661
6686 / 2278 / 347
Регистрация: 10.12.2013
Сообщений: 7,863
09.05.2024, 23:15
подробнее ?
данное изделие должно бесследно исчезнуть с тела планеты и оно исчезнет.

выбор есть.
0
Любознательный
 Аватар для YuS_2
7405 / 2255 / 360
Регистрация: 10.03.2016
Сообщений: 5,216
10.05.2024, 10:39
Цитата Сообщение от volodin661 Посмотреть сообщение
данное изделие должно бесследно исчезнуть с тела планеты и оно исчезнет.
Ты чего, окноненавистник штоль? Во вражеском разделе шпионишь разведкой занимаешься?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
10.05.2024, 10:39
Помогаю со студенческими работами здесь

Обработка файлов в цикле For
Есть простой скрипт который использует утилиту от LibreOffice для конвертации файлов XLSX в XLS. Надо натравить на папку, рекурсивно...

Обработка txt файлов
Добрый день! Хотел бы создать свою тему по обработке txt. Конечно я знаю о команде for /f но все же не могу решить одну задачу. ...

Обработка имен файлов с пробелами в for
Добрый день! Что-то никак не могу сообразить как вылечить найденный в и-нете пример: for /f "skip=%MaxArc%" %%i in ('dir...

Обработка файлов на основе их содержимого
Добрый день. Интересует возможность обработки файлов (удаление\перемещение) на основе его содержимого. Имеется файл *.txt вида: ...

Поиск и обработка файлов в подкаталогах
Есть программка, которая соединяет множество текстовых файлов в один, но не суть. Она запускается батником с таким кодом: main.exe...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru