Если вы не боитесь использовать сервис онлайн-то EPUB to PDF Rest API можно было бы использовать.
Реальный код JAVA будет выглядеть
public class Main {
public static void main(String[] args) throws IOException {
TreeMap params = new TreeMap<>(String.CASE_INSENSITIVE_ORDER);
params.put("File", "C:\path\to\test-epub.epub");
params.put("Secret", "<secret>");
CloseableHttpResponse response = ConvertApi.convert("epub", "pdf", params);
System.out.println(EntityUtils.toString(response.getEntity(), "UTF-8"));
}
}
class ConvertApi {
public static CloseableHttpResponse convert(String srcFormat, String dstFormat, TreeMap params) throws IOException {
MultipartEntityBuilder builder = MultipartEntityBuilder.create();
params.forEach((k, v) -> {
if(Files.exists(Paths.get(v))) {
builder.addBinaryBody(k, new File(v));
} else {
builder.addTextBody(k, v, ContentType.TEXT_PLAIN);
}
});
String authParam = params.get("secret") == null ? String.format("Token=%s", params.get("token")) : String.format("Secret=%s", params.get("secret"));
CloseableHttpClient httpClient = HttpClients.createDefault();
HttpPost httpPost = new HttpPost(String.format("https://v2.convertapi.com/%s/to/%s?%s", srcFormat, dstFormat, authParam));
httpPost.setEntity(builder.build());
return httpClient.execute(httpPost);
}
}
поскольку EPUB в основном упакованной HTML, вы можете попытаться разделить задачу на две части: 1. Распаковать с помощью существующих библиотек 2. Преобразование HTML в pdf – Photon
Это звучит неплохо. Какие различия, кроме упаковки, имеют epub по сравнению с html, которые могут вызвать проблемы при конвертации? – Gesh
Существует также набор стандартных xml-файлов, которые предоставляют метаданные. Если вы просто хотите текст, вы можете игнорировать большую часть его. – Photon