Document document = new Document(dataDir + "Sample1.one"); UserSavingCallbacks savingCallbacks = new UserSavingCallbacks(); savingCallbacks.setRootFolder("documentFolder"); savingCallbacks.setCssFolder("css"); savingCallbacks.setKeepCssStreamOpened(true); savingCallbacks.setImagesFolder("images"); savingCallbacks.setFontsFolder("fonts"); HtmlSaveOptions options = new HtmlSaveOptions(); options.setFontFaceTypes(FontFaceType.Ttf); options.setCssSavingCallback(savingCallbacks); options.setImageSavingCallback(savingCallbacks); options.setFontSavingCallback(savingCallbacks); options.setExportCss(ResourceExportType.ExportEmbedded); options.setExportImages(ResourceExportType.ExportEmbedded); options.setExportFonts(ResourceExportType.ExportEmbedded); File dir = new File(savingCallbacks.getRootFolder()); if (!dir.exists()) { dir.mkdir(); } document.save(Paths.get(savingCallbacks.getRootFolder(), "document.html").toString(), options); try (OutputStreamWriter writer = new OutputStreamWriter(savingCallbacks.getCssStream(), "utf-8")) { writer.write(System.lineSeparator()); writer.write("/* This line is appended to stream manually by user */"); writer.close(); }