pdfHTML
пока не поддерживает тег fieldset
, и ваш образец конвертируется во что-то вроде следующего:
Вы можете подключить Ваша пользовательская реализация в pdfHTML
, хотя и до некоторой степени настраивает внешний вид (в зависимости от ваших потребностей). Вот базовый c пример того, как настроить внешний вид с большим количеством предположений:
private static class LegendTagWorker extends DivTagWorker {
public LegendTagWorker(IElementNode element, ProcessorContext context) {
super(element, context);
}
@Override
public IPropertyContainer getElementResult() {
IPropertyContainer result = super.getElementResult();
// Shift the position of the legend a bit above
result.setProperty(Property.POSITION, LayoutPosition.RELATIVE);
result.setProperty(Property.TOP, -14);
// Set the background of the text to white so that it does not overlap with the border of outer element
if (result instanceof Div && ((Div) result).getChildren().get(0) instanceof Paragraph) {
Paragraph p = (Paragraph) ((Div) result).getChildren().get(0);
((Text)p.getChildren().get(0)).setBackgroundColor(ColorConstants.WHITE);
}
return result;
}
}
private static class CustomTagWorkerFactory extends DefaultTagWorkerFactory {
@Override
public ITagWorker getCustomTagWorker(IElementNode tag, ProcessorContext context) {
if (tag.name().equals("legend")) {
return new LegendTagWorker(tag, context);
}
return super.getCustomTagWorker(tag, context);
}
}
Тогда вам просто нужно передать фабрику рабочих тегов в свойства конвертера:
ConverterProperties properties = new ConverterProperties();
properties.setTagWorkerFactory(new CustomTagWorkerFactory());
HtmlConverter.convertToPdf(inFile, outFile, properties);
Теперь мы получаем следующий результат:
Обратите внимание, что это очень простой c пример, и вам нужно будет настроить это для ваших нужд. Прежде чем эта функция будет реализована в pdfHTML
, вам придется использовать обходной путь - либо в коде, как я предлагал, либо вы можете сделать некоторые настройки с CSS, аналогично настройкам, которые я делаю в Java коде