Как правильно конвертировать html в rtf для Adobe Indesign на C#
В общем есть программа Adobe Indesign, есть C# под рукой. У меня цель такая, чтобы я мог какие-нибудь html блоки вставлять в Adobe Indesign. Когда я вставляю просто файл .html то у меня вставляется просто код оттуда в эту программу. Я пробовал разные форматы что могут восприниматься этой прогой и нашёл только .icml и .rtf. Хорошо себя показал именно .rtf. Но есть одна проблема, в rtf всё правильно генерируется и отображается, но когда я этот rtf вставляю в прогу, то если страница свёрстана на табличных тегах(table, tr, td) то в принципе всё хорошо работает, но некоторые стили по дороге туда теряются: цвет границ(border), отступы(не все, но половина), шрифты(бывает что шрифт не принимается и в проге отображается такой текст просто светло-красным) и тд. Может кто такое уже делал и у вас правильно вставлялось или вообще другой формат конвертирования использовать? В C# я использовал библиотеку от Саутина прям по документации и он правильно сохраняет со всеми стилями, но опять же Adobe Indesign как будто просто не хочет принимать половину стилей. Я пробовал pdf, он сохраняет что нужно, но не даёт доступа к редактированию, поэтому его не советовать.
C#:
string inputFile = @"C:\Users\oneta\Documents\sharp\TestClipboard\TestClipboard\index.html";
string outputFile = Path.ChangeExtension(inputFile, "2.rtf");
HtmlConvertOptions opt = new HtmlConvertOptions();
opt.OutputFormat = HtmlToRtf.OutputFormat.Rtf;
opt.Encoding = Encoding.utf8;
HtmlToRtf h = new HtmlToRtf();
opt.BaseURL = Path.GetDirectoryName(Path.GetFullPath(inputFile));
using (FileStream htmlStream = new FileStream(inputFile, FileMode.Open))
{
using (MemoryStream rtfStream = new MemoryStream())
{
if (h.Convert(htmlStream, rtfStream, opt))
{
File.WriteAllBytes(outputFile, rtfStream.ToArray());
System.Diagnostics.Process.Start(new System.Diagnostics.ProcessStartInfo(outputFile) { UseShellExecute = true });
}
}
}
if (File.Exists(outputFile))
{
System.Collections.Specialized.StringCollection replacementList = new System.Collections.Specialized.StringCollection();
replacementList.Add(outputFile);
Clipboard.SetFileDropList(replacementList);
MessageBox.Show("Блок успешно преобразован в RTF и сохранен.");
}
else
{
MessageBox.Show("Ошибка при преобразовании блока в RTF.");
}
И сама вёрстка:
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style>
.first-block, .third-block, .second-block{
display: -webkit-box;
display: -ms-flexbox;
display: flex;
-webkit-box-orient: horizontal;
-webkit-box-direction: normal;
-ms-flex-direction: row;
flex-direction: row;
-webkit-box-pack: justify;
-ms-flex-pack: justify;
justify-content: space-between;
width: 380px;
padding: 5px 10px;
}
.second-block{
border-bottom: 1px solid orange;
}
.first-block{
background-color: #30B5BF;
}
.first-block a{
color: white;
}
table{
border-top: 2px solid black;
border-bottom: 2px solid black;
width: 400px;
text-align: center;
}
h3{
color: #4B4B4B;
}
th, td{
padding: 5px;
border: 1px solid black;
}
.main-block{
border: 2px solid orange;
width: 400px;
}
.main-block b:nth-child(2), .main-block b:nth-child(3){
border-left: 2px solid orange;
padding-left: 10px;
}
b{
width: 100px;
height: 30px;
padding-left: 10px;
border-left: 2px solid orange;
}
.text-unit{
display: -webkit-box;
display: -ms-flexbox;
display: flex;
-webkit-box-orient: horizontal;
-webkit-box-direction: normal;
-ms-flex-direction: row;
flex-direction: row;
-webkit-box-pack: justify;
-ms-flex-pack: justify;
justify-content: space-between;
}
.collapse, .island{
border-top: 1px solid #E8E8E8;
}
.island{
padding: 5px 15px;
margin: 50px;
border: 1px solid #E8E8E8;
border-radius: 4px;
}
label, span{
color: rgb(75, 75, 75);
}
.island h3{
font-weight: 600;
}
</style>
</head>
<body>
<div class="first-block" style="margin-top: 30px;">
<span>Название продукта</span>
<a href="#">Смотреть на сайте</a>
</div>
<img src="medeor.jpg" alt="диван">
<h3>Название заголовка продукта</h3>
<table>
<tr>
<th>Ширина</th>
<th>Длина</th>
<th>Высота</th>
</tr>
<tr>
<td>745мм</td>
<td>2000мм</td>
<td>885мм</td>
</tr>
</table>```