Как конвертировать URL HTML-страницы в PDF в Java с помощью iText и летающей тарелки? - PullRequest
5 голосов
/ 25 октября 2010

Я только что скачал xhtmlrenderer и файлы iText jar.Я могу создавать PDF-файлы с помощью этих jar-файлов.

Что мне точно нужно, так это: мне нужно создать pdf, если я дам один действительный URL (скажем, «https://xhtmlrenderer.dev.java.net/news.html») вместо «inputFile».Возможно ли это с помощью летающей тарелки и iText?

Если да, пожалуйста, помогите мне добиться этого.

Кроме того, когда я пытаюсь запустить приведенный ниже код, я получаю сообщение об ошибке:поток закрыт

import java.io.*;
import com.lowagie.text.DocumentException;
import org.xhtmlrenderer.pdf.ITextRenderer;

public class FirstDoc {

    public static void main(String[] args) 
            throws IOException, DocumentException {
        String inputFile = "samples/sql.html";
        String url = new File(inputFile).toURI().toURL().toString();
        String outputFile = "firstdoc.pdf";
        OutputStream os = new FileOutputStream(outputFile);

        ITextRenderer renderer = new ITextRenderer();
        renderer.setDocument(url);
        renderer.layout();
        renderer.createPDF(os);

        os.close();
    }
}

1 Ответ

1 голос
/ 24 марта 2011

Да ... это, вероятно, не будет работать, так как запрашиваемая страница не является xhtml, но это должно сработать:

import java.io.*;
import com.lowagie.text.DocumentException;
import org.xhtmlrenderer.pdf.ITextRenderer;

public class FirstDoc {

public static void main(String[] args) 
        throws IOException, DocumentException {
    String url= "http://xhtmlrenderer.java.net/news.html";

    String outputFile = "firstdoc.pdf";
    OutputStream os = new FileOutputStream(outputFile);

    ITextRenderer renderer = new ITextRenderer();
    renderer.setDocument(url);
    renderer.layout();
    renderer.createPDF(os);

    os.close();
}
}

Ошибка закрытия потока возникает, когда запрашиваемый файл не найден. Папка «samples» должна существовать в проекте в вашей рабочей области или там, где вы запускаете приложение из

...