Преобразование HTML в PDF с использованием iText - PullRequest
2 голосов
/ 08 февраля 2011

Я пытаюсь преобразовать файл HTMLl в PDF. Для этого я использую iText . Если в HTML-файле есть какое-то изображение, iText не может поместить это изображение в PDF-файл и выдает следующее исключение.

ExceptionConverter: java.io.FileNotFoundException: D:\cid:870001313@01022011-2B8B (The system cannot find the file specified).

Если у HTML есть изображение в его теле, можно ли прочитать это изображение и сделать его вложенным в этот файл PDF? Вот мой исходный код (Truncate.java):

import java.io.BufferedReader;
import java.io.DataInputStream;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;

import com.lowagie.text.Document;
import com.lowagie.text.DocumentException;
import com.lowagie.text.Element;
import com.lowagie.text.Paragraph;
import com.lowagie.text.html.simpleparser.HTMLWorker;
import com.lowagie.text.pdf.PdfWriter;

public class Truncate {
    public static void main(String[] args) throws DocumentException {
        // TODO Auto-generated method stub
        FileReader fr = null;
        Document document = new Document();
        document.open();
        PdfWriter writer = null;
        try {
            String file_name = "C:\\Documentum\\Viewed\\911.htm";
            fr = new FileReader(file_name);
            PdfWriter.getInstance(document, System.out);
            writer = PdfWriter.getInstance(document, new FileOutputStream(
                    "C:\\Documentum\\Viewed\\RH\\RH.pdf"));
            document.add(new Paragraph("RH Mail"));
            ArrayList htmlContentList = HTMLWorker.parseToList(fr, null);

            //fetch the html content line by line
            for (int htmlDataCntr = 0; htmlDataCntr < htmlContentList.size(); htmlDataCntr++) {
                Element htmlDataElement = (Element) htmlContentList
                        .get(htmlDataCntr);
                document.add(htmlDataElement);
            }
            fr.close();
            document.close();

        } catch (FileNotFoundException e) {
            e.printStackTrace();
        }
        catch (IOException e) {
            e.printStackTrace();
        }
        catch(Exception e){
            System.out.println(e);
        }
    }
}

1 Ответ

1 голос
/ 08 февраля 2011

Судя по названию вложения, ваш html экспортируется из электронного письма.Удостоверьтесь, что вы должны проанализировать электронную почту по-другому и получить изображения отдельно от других вещей.

РЕДАКТИРОВАТЬ: Как я уже сказал, я думаю, что проблема лежит вверх по течению.Обозначение cid соответствует внедренному изображению в письме (см., Например, здесь ).Поэтому, если анализатор почты upsteam не предоставит вам файл изображения в качестве вложения, вы ничего не сможете с этим поделать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...