конвертировать MHT файлы в изображения - PullRequest
0 голосов
/ 24 августа 2009

Существуют ли какие-либо библиотеки или API для преобразования файлов MHT в изображения? Можем ли мы использовать программное обеспечение Universal Document Converter для этого? Цени любые мысли.

1 Ответ

1 голос
/ 24 августа 2009

Если вы действительно хотите сделать это программно,

МГТ

Архивная веб-страница. Когда вы сохраняете веб страница как веб-архив в интернете Explorer, веб-страница сохраняет это информация в многоцелевом интернете Почтовое расширение в формате HTML (MHTML) с расширением .MHT. Все относительные ссылки на веб-странице переназначается и встроенный контент включены в файл .MHT.

Вы можете использовать JEditorPane , чтобы преобразовать это в изображение

import javax.imageio.ImageIO;
import javax.swing.*;
import java.awt.*;
import java.awt.image.BufferedImage;
import java.beans.PropertyChangeEvent;
import java.beans.PropertyChangeListener;
import java.io.File;
import java.io.IOException;
import java.net.URL;

public class Test {
    private static volatile boolean loaded;

    public static void main(String[] args) throws IOException {
        loaded = false;
        URL url = new URL("http://www.google.com");
        JEditorPane editorPane = new JEditorPane();
        editorPane.addPropertyChangeListener(new PropertyChangeListener() {
            public void propertyChange(PropertyChangeEvent evt) {
                if (evt.getPropertyName().equals("page")) {
                    loaded = true;
                }
            }
        });
        editorPane.setPage(url);
        while (!loaded) {
            Thread.yield();
        }

        File file = new File("out.png");

        componentToImage(editorPane, file);
    }

    public static void componentToImage(Component comp, File file) throws IOException {
        Dimension prefSize = comp.getPreferredSize();
        System.out.println("prefSize = " + prefSize);
        BufferedImage img = new BufferedImage(prefSize.width, comp.getPreferredSize().height,
                                              BufferedImage.TYPE_INT_ARGB);
        Graphics graphics = img.getGraphics();
        comp.setSize(prefSize);
        comp.paint(graphics);
        ImageIO.write(img, "png", file);
    }

}
...