Мы можем достичь этого путем применения макросов к этому параметру 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';
Примечание: - Единственный недостаток в этой реализации заключается в том, что файл электронных таблиц не должен быть доступен только для чтения.