LibreOffice преобразует файлы из RTF в PDF в обычный текст RTF.JAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 LibreOffice преобразует файлы из RTF в PDF в обычный текст RTF.

Сообщение Anonymous »

Я использую jodconverter:

Код: Выделить всё

import org.jodconverter.core.document.DefaultDocumentFormatRegistry;
import org.jodconverter.core.office.OfficeException;
import org.jodconverter.core.office.OfficeUtils;
import org.jodconverter.local.JodConverter;
import org.jodconverter.local.office.LocalOfficeManager;
Он использует libreoffice для преобразования файлов RTF в PDF.
Дело в том, что большинство из них он конвертирует правильно. Я подробно опишу все процессы преобразования:
Сначала я кодирую строковый rtf-файл в base64, поскольку исходное действие приложения вызывает другое, в котором происходит фактическое преобразование:

Код: Выделить всё

    // Encoding the string to Base64
String base64Document = new String(DatatypeConverter
.printBase64Binary(stDocument.getBytes()));
Затем вызываемое приложение преобразует строку в PDF:

Код: Выделить всё

try {
officeManager =
LocalOfficeManager.builder()
.officeHome(LIBRE_OFFICE_PATH)
.install().build();

officeManager
.start();

byte[] inputBytes = Base64.getDecoder().decode(fileInBase64);
ByteArrayInputStream input = new ByteArrayInputStream(inputBytes);

ByteArrayOutputStream output = new ByteArrayOutputStream();
JodConverter
.convert(input)
.to(output)
.as(DefaultDocumentFormatRegistry.PDF)
.execute();

pdfEnBase64 =
Base64.getEncoder()
.encodeToString(output.toByteArray());

} catch (OfficeException oe) {
Затем вызывающее приложение декодирует ее обратно в обычную строку:

Код: Выделить всё

// Decode base64
byte[] byteDocument = Base64
.decodeBase64(stDocumentPdf
.getBytes((java.nio.charset.StandardCharsets.UTF_8)));
Затем он загружает его в браузер:

Код: Выделить всё

                var uintBytes = new Uint8Array(fileContent);
var blob = new Blob([uintBytes], { type: 'application/pdf' });
var link = document.createElement('a');
link.href = window.URL.createObjectURL(blob);
link.download = fileName;
document.body.appendChild(link);
link.click();
document.body.removeChild(link);
Но некоторые файлы конвертируются в PDF с основным содержимым RTF — это фактически преобразованный файл, когда я открываю его в PDF Reader, как если бы jodconverter скопировал и вставил содержимое файла RTF или что-то в этом роде. , я не могу понять:
Изображение

Как видно, Adobe PDF Reader считает это легальным PDF-файлом, поэтому открывает его без проблем.
Нет никакой ошибки . Было бы неплохо протянуть руку помощи.
РЕДАКТИРОВАТЬ:
Я только что провел тесты, есть много документов rtf, которые конвертируются правильно. Я посмотрел на те, которые плохо конвертируются, как в вопросе, и увидел, что удаление заголовка документа решает проблему. Я выясняю, почему заголовок вызывает сбой преобразования.

Подробнее здесь: https://stackoverflow.com/questions/781 ... n-rtf-text
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Преобразование DOCX в PDF на C# с помощью LibreOffice, но без установки приложения LibreOffice в систему
    Anonymous » » в форуме C#
    0 Ответы
    56 Просмотры
    Последнее сообщение Anonymous
  • С# RTF в обычный текст с RichTextBox не работает
    Anonymous » » в форуме C#
    0 Ответы
    16 Просмотры
    Последнее сообщение Anonymous
  • С# RTF в обычный текст с RichTextBox не работает
    Anonymous » » в форуме C#
    0 Ответы
    24 Просмотры
    Последнее сообщение Anonymous
  • Выход RTF показывает «{Apple0}» вместо жирного «Apple» в LibreOffice на Ubuntu
    Гость » » в форуме Python
    0 Ответы
    5 Просмотры
    Последнее сообщение Гость
  • Создайте PDF-файл, совместимый с PDF/UA, из ODT с помощью LibreOffice SDK и Python UNO.
    Anonymous » » в форуме Python
    0 Ответы
    19 Просмотры
    Последнее сообщение Anonymous

Вернуться в «JAVA»