Преобразование Libreoffice .xls в .pdf разбивает содержимое одной страницы на несколько страниц в Ubuntu 18.04. - PullRequest
0 голосов
/ 07 февраля 2020

У меня возникла проблема при преобразовании .xls в .pdf через libreoffice командная строка , упомянутая ниже.

sudo /usr/bin/soffice --headless --nologo --nofirststartwizard --norestore --convert-to pdf:calc_pdf_Export --outdir '/home/user/Downloads/' '/home/user/Downloads/file.xlsx'

Преобразовано успешно, однако оно не работает .xls одна страница контента на несколько страниц в формате PDF. Я хочу преобразовать одну страницу содержимого xls в одну страницу PDF через масштабирование страницы. Мы можем сделать это вручную (можно передать это { ссылка }) через Меню Форматирование -> Страница -> Лист -> Режим масштабирования . Но я не хочу вмешательства пользователя при конвертации Xls в Pdf!

Я просмотрел много статей, но не нашел правильного решения, так как хочу его через командную строку. Есть ли какая-либо опция в синтаксисе командной строки, чтобы масштабировать ее на лету?

1 Ответ

0 голосов
/ 03 марта 2020

Мы можем достичь этого путем применения макросов к этому параметру c XLSX во время выполнения и после этого мы можем выполнить команду преобразования PDF. Шаги, которые я выполнил для реализации этого решения, упомянуты ниже.

Шаг 1: - Сохраните макрос на сервере.

в моем случае я сохранил здесь (/ opt / LibreOffice / пресетов / основные / Standard / Module1.xba). Содержимое Module1.xba:

<?xml version="1.0" encoding="UTF-8"?>
   <!DOCTYPE script:module PUBLIC "-//OpenOffice.org//DTD OfficeDocument 1.0//EN" "module.dtd">
    <!--
    * This file is part of the LibreOffice project.
    *
    * This Source Code Form is subject to the terms of the Mozilla Public
    * License, v. 2.0. If a copy of the MPL was not distributed with this
    * file, You can obtain one at http://mozilla.org/MPL/2.0/.
    *
    * This file incorporates work covered by the following license notice:
    *
    *   Licensed to the Apache Software Foundation (ASF) under one or more
    *   contributor license agreements. See the NOTICE file distributed
    *   with this work for additional information regarding copyright
    *   ownership. The ASF licenses this file to you under the Apache
    *   License, Version 2.0 (the "License"); you may not use this file
    *   except in compliance with the License. You may obtain a copy of
    *   the License at http://www.apache.org/licenses/LICENSE-2.0 .
    -->
    <script:module xmlns:script="http://openoffice.org/2000/script" script:name="Module1" script:language="StarBasic">REM  *****  BASIC  *****
    Sub FitToPage
      Dim document As Object, pageStyles As Object
      document   = ThisComponent
      pageStyles = document.StyleFamilies.getByName("PageStyles")
      For i = 0 To document.Sheets.Count - 1
       Dim sheet As Object, style As Object
       sheet = document.Sheets(i)
       style = pageStyles.getByName(sheet.PageStyle)
       style.ScaleToPagesX = 1
      Next
      On Error Resume Next
      document.storeSelf(Array())
      document.close(true)
    End Sub
    Sub Main

    End Sub
    </script:module>

Шаг 2: - Примените вышеуказанный макрос к файлу xls с помощью следующей команды.

$cmd = 'export HOME=/var/www &&  /opt/libreoffice/program/soffice --headless --nologo --nofirststartwizard --norestore  /home/usr/demo.xls  macro:///Standard.Module1.FitToPage';

Шаг 3 : - Создать Pdf после применения макроса через командную строку.

$cmd = 'export HOME=/var/www && /opt/libreoffice/program/soffice --headless --nologo --nofirststartwizard --norestore  --convert-to pdf:writer_web_pdf_Export  --outdir  /home/usr/  /home/usr/demo.xls';

Примечание: - Единственный недостаток в этой реализации заключается в том, что файл электронных таблиц не должен быть доступен только для чтения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...