Free Support Forum - aspose.cloud

Плохое качество изображений после конвертации docx в html

Добры день! Наш проект использует api для конвертации docx в html.
По запросу на https://api.aspose.cloud/v4.0/words/convert?format=html нам приходит нужный html файл, но проблема в том, что внутри исходного docx файла содержатся математические формулы: дроби, степени, порядки и т.д.
Поведение конвертора по умолчанию такое: взять все векторные изображения из исходного файла и заменить их на png.
У полученных таким путём изображений очень низкое качество.

Так же в вашей документации я нашел упоминание о дефолтном значении png для метафайлов документа https://apireference.aspose.com/words/net/aspose.words.saving/htmlsaveoptions/properties/metafileformat но так и не смог применить эту настройку в своей системе.

В связи с этим есть два вопроса:

  1. Можно ли как-то улучшить качество изображений?
  2. Можно ли настроить конвертер таким образом, что векторные изображения превращадись в svg, а не png формат?

@Onlinethink

Да, вы можете настроить HTMLSaveOptions с помощью SaveAs API для преобразования DOCX в HTML с пользовательскими настройками. HTMLSaveOptions обеспечивает использование Aspose.Words Cloud поддерживает MetafileFormatEnum для сохранения изображений в PNP / SVG / EmfOrWmf. Надеюсь, это поможет вам выполнить ваше требование.

Добрый день!
Спасибо за ответ, но я пока так и не смог понять, как спомощью saveAs я могу отправить нужные мне HTMLSaveOptions. В requestBody не вижу нужных параметров https://apireference.aspose.cloud/words/#/Convert/SaveAs
И есть ещё один вопрос: я пытаюсь отправить через curl запрос на saveAs, и каждый раз у меня выскакивает подобная ошибка:

{
  "Error": {
    "Code": "ErrorItemNotFound",
    "Message": "Error while loading file '10.html' from storage: AmazonS3 Storage exception: The specified key does not exist. Bucket 'afc-filestorage', FilePath '97478/8ee3e5de-46bc-432d-8284-94d2b6f3516d/10.html'",
    "Description": "Operation Failed. Item Not Found.",
    "InnerError": {
      "Code": "errorAmazonS3Storage",
      "Message": "AmazonS3 Storage exception: The specified key does not exist. Bucket 'afc-filestorage', FilePath '97478/8ee3e5de-46bc-432d-8284-94d2b6f3516d/10.html'",
      "Description": "Operation Failed. The remote server returned an error: (404) Not Found."
    }
  },
  "RequestId": "Root=1-5fb25063-589a216a131e9c27604e1e4b"
}

10.html это название файла, который я хочу конвертировать, и который лежит у меня на диске. Есть ли возможность к нему обратиться? Не очень понмиаю, почему апи начинает дёргать amazon. Вот curl скрипт:

curl -X PUT "https://api.aspose.cloud/v4.0/words/10.html/saveAs" \
-H "accept: application/json" \
-H "Authorization: Bearer  <token>" \
-H "Content-Type: application/json" \
-d "{\"SaveFormat\":\"html\",\"FileName\":\"10.html\",\"ZipOutput\":true}"

Буду очень благодарен, если вы оставите curl скрипт, который позволит решить две проблемы выше. С обращением к amazon и с передачей HTMLSaveOptions

@Onlinethink

Обратите внимание, что файл SaveAs преобразует поддерживаемые форматы файлов из облачного хранилища в другие форматы файлов вместо локального диска. Итак, сначала вам нужно загрузить файл в наше облачное хранилище, а затем преобразовать. Например, в следующей команде cURL мы загружаем файл в облачное хранилище по умолчанию с помощью UploadFile API. Если вы хотите загрузить в другое связанное хранилище, вы можете передать имя хранилища в вызове API.

// First get Access Token
// Get App Key and App SID from https://dashboard.aspose.cloud/
curl -X POST "https://api.aspose.cloud/connect/token" 
-d "grant_type=client_credentials&client_id=xxxxx-xxxx-xxxxx-xxxxx-xxxxxxxxxx&client_secret=xxxxxxxxxxxxxxxxxxxxxxxxxxx" 
-H "Content-Type: application/x-www-form-urlencoded" 
-H "Accept: application/json"

//upload file to storage
curl -X PUT "https://api.aspose.cloud/v4.0/words/storage/file/Test.docx" 
-H "accept: application/json" 
-H "Authorization: Bearer [Access_Token]" 
-H "Content-Type: multipart/form-data" 
-F "filecontent=@C:/Temp/Test.docx"

И во-вторых, в заголовке потока вы хотите преобразовать DOCX в HTML, но в приведенном выше общем коде cURL вы пытаетесь сохранить HTML в HTML. Пожалуйста, дважды проверьте формат файла преобразования.

Да, я вижу, что у меня ошибка в формате конвертируемого файла.
Про хранилище понял. Осталось два вопроса:

  1. Есть ли лимит на загрузку в ваше хранилище, как часто я могу загружать файлы и сколькьо их может храниться?
  2. Мне всё ещё до конца не понятно, как спомощью saveAs я могу сказать, в какой формат должны преобразовываться мои метафайлы. Я был бы очень признателен, если бы я смог увидеть в вашем ответе пример curl запроса, который бы конвертировал docx файл в html с преобразованием всех метафайлов в svg. Подобных примеров я найти не смог, а в сваггере по saveAs доступны только следующие настройки:
{
  "SaveFormat": "string",
  "FileName": "string",
  "DmlRenderingMode": "string",
  "DmlEffectsRenderingMode": "string",
  "ZipOutput": true,
  "UpdateLastSavedTimeProperty": true,
  "UpdateSdtContent": true,
  "UpdateFields": true,
  "Dml3DEffectsRenderingMode": "Basic",
  "UpdateLastPrintedProperty": true
}

@Onlinethink

В Aspose Cloud Storage нет ограничений по размеру. Но мы удаляем файлы через определенный период в зависимости от режима хранения, определенного в панели управления aspose.cloud.

Пожалуйста, проверьте следующий пример кода cURL для преобразования DOCX в HTML. В теле запроса API SaveAs в Swagger API Explorer есть примеры параметров сохранения. Полный список параметров см. В деталях HTMLSaveOptions в документации и GitHub Repo. Вы можете установить эти свойства для преобразования DOCX в HTML в SaveAs API.

curl -X PUT "https://api.aspose.cloud/v4.0/words/Sections.docx/saveAs?folder=Temp"
-H "accept: application/json" 
-H "Authorization: Bearer [Access_Token]" 
-H "Content-Type: application/json" 
-H "x-aspose-client: Containerize.Swagger" 
-d "{"SaveFormat":"html","FileName":"html/test.html","ZipOutput":true,"ExportImagesAsBase64":true,"MetafileFormat":"Svg","PrettyFormat":true}"

Спасибо! С данными настройками получилось получить картинки необходимого качества.
Подскажите только: Данные опции возможно использовать только при конвертации файлов, находящихся уже в хранилище или так же можно при непосредственной загрузке файлов (как это делается /words/convert)?

@Onlinethink

Приятно знать, что вам удалось выполнить свое требование.

Боюсь, что в настоящее время SaveAs API конвертирует файлы только из хранилища. Однако у нас уже есть план по внедрению необходимой вам функции. В ближайшем будущем это станет стандартной функцией API Aspose.Words Cloud для обработки файлов из тела запроса. Мы связали ваше сообщение с соответствующей заявкой (WORDSCLOUD-1188), поэтому уведомим вас, как только проблема будет решена.

Однако, если вы ищете эту функцию из соображений безопасности, вы можете использовать любое стороннее хранилище по вашему выбору или попробуйте Aspose.Words Cloud Docker Container, чтобы самостоятельно разместить Aspose.Words Cloud на Вашем собственном сервере.

Добрый день!
При использовании следующего -Curl:

curl -X PUT “https://api.aspose.cloud/v4.0/words/formula_10.docx/saveAs?folder=uploads&storage=convertFilesStorage” -H “accept: application/json” -H “Authorization: Bearer [token]”
-H “Content-Type: application/json” -H “x-aspose-client: Containerize.Swagger” -d “{“SaveFormat”:“html”,“FileName”:“formula_10.html”,“ZipOutput”:true,“UpdateLastSavedTimeProperty”:true,“UpdateSdtContent”:true,“UpdateFields”:true,“Dml3DEffectsRenderingMode”:“Basic”,“UpdateLastPrintedProperty”:true,“ExportImagesAsBase64”:true,“MetafileFormat”:“Svg”,“PrettyFormat”:true}”

Все равно конвертация происходит с преобразованием формул в png формат, подскажите, пожалуйста, с чем может быть связана проблема, т.к. в настройках указан Svg? Спасибо
image.png (21.9 KB)

@Onlinethink

Поделитесь своим входным документом Word вместе с выходным документом HTML и ожидаемым документом HTML. Мы рассмотрим их и соответствующим образом направим вас.

Направляю исходный файл и файл, который получается при использовании -curl из предыдущего сообщения. Мы ожидаем, что в полученном файле изображения будут в svg формате, так как получающиеся png изображения из формул низкого качества, к сожалению.

formula.zip (646.7 KB)

В качестве примера формул в svg подходит https://math-ege.sdamgia.ru/test?id=34860928

@Onlinethink

Преобразование DOCX в HTML связано с OfficeMath. API SaveAs предоставляет свойство OfficeMathOutputMode для отображения OfficeMath, и в настоящее время значение изображения по умолчанию отображает его как PNG. Мы зарегистрировали запрос WORDSCLOUD-1424 для дальнейшего исследования и рендеринга OfficeMath в SVG. Мы сообщим вам, как только проблема будет решена.

Спасибо за ответ!
Последний вопрос: есть ли какая-то опция, позволяющая улучшить качество (разрешение) .png при конвертировании формул?

@Onlinethink

Мы изучаем ваше требование и поделимся своими выводами в ближайшее время.

@Onlinethink

Вы можете попробовать использовать свойство ImageResolution. Значение по умолчанию - 96. Вы можете увеличить значение для лучшего качества. Однако имейте в виду, что это также увеличит размер файла.

"ImageResolution": 200

Спасибо за ответ. К сожалению четкость изображения при этом не улучшилась( Только увеличивается размер. (пример со значением = 400)
image.png (34.2 KB)

@Onlinethink

Мы заметили проблему качества изображения с 12 по 19 и зарегистрировали запрос WORDSCLOUD-1425 для дальнейшего исследования и исправления. Мы сообщим вам, как только решим проблему.