Поиск…


замечания

В исходном дизайне для iText было возможно создать объект Document высокого уровня, а затем иметь разные объекты DocListener прослушивают этот объект Document . Это было достигнуто за счет использования разных авторов: PdfWriter , HTMLWriter и RtfWriter . При использовании PdfWriter внутренний документ PdfDocument был создан. Этот низкоуровневый класс позаботился обо всех структурах, связанных с PDF. Более или менее то же самое верно для других форматов.

На протяжении многих лет iText специализировался и стал чистой библиотекой PDF. Создание HTML и RTF было прекращено, поэтому больше не нужно было создавать Document перед созданием PdfWriter , но мы должны были придерживаться оригинальной архитектуры, потому что мы не были готовы разорвать API.

На протяжении многих лет мы добавляли все больше функций PDF в iText, и тот факт, что PdfDocument был классом для внутреннего использования, стал проблематичным. Мы использовали обходные пути, чтобы мы могли внедрять новые функции PDF, принадлежащие классу PdfDocument до тех пор, пока мы не достигли предела того, что мы считаем приемлемым в качестве обходных решений.

Именно тогда мы решили переписать iText с нуля и создать совершенно новую архитектуру для iText. Теперь у нас есть четкое различие между PdfDocument (для операций низкого уровня) и Document (для высокоуровневых функций). Нам больше не нужно открывать документ, и если мы будем использовать подход « попробуй-с-ресурсами» , нам даже не придется его закрывать.

Хотите узнать больше? Получите бесплатную электронную книгу!

HelloWorld.java (iText 5)

Предположим, что мы хотим создать простой документ Hello World:

введите описание изображения здесь

В iText 5 это будет сделано следующим образом:

public void createPdf(String dest)
    throws DocumentException, IOException {
    Document document = new Document();
    PdfWriter.getInstance(
        document, new FileOutputStream(dest));
    document.open();
    document.add(new Paragraph("Hello World!"));
    document.close();
}

Источник: developers.itxtpdf.com

HelloWorld1.java и HelloWorld2.java (iText 7)

Предположим, что мы хотели создать простой документ Hello World:

введите описание изображения здесь

В iText 7 мы могли бы сделать так:

public void createPdf(String dest) throws IOException {
    PdfDocument pdf = new PdfDocument(new PdfWriter(dest));
    Document document = new Document(pdf);
    document.add(new Paragraph("Hello World!"));
    document.close();
}

Или мы могли бы сделать это так:

public void createPdf(String dest) throws IOException {
    PdfDocument pdf = new PdfDocument(new PdfWriter(dest));
    try (Document document = new Document(pdf)) {
        document.add(new Paragraph("Hello World!"));
    }
}

Источник: developers.itxtpdf.com и учебник iText 7: Building Blocks .



Modified text is an extract of the original Stack Overflow Documentation
Лицензировано согласно CC BY-SA 3.0
Не связан с Stack Overflow