• Курсы Академии Кодебай, стартующие в мае - июне, от команды The Codeby

    1. Цифровая криминалистика и реагирование на инциденты
    2. ОС Linux (DFIR) Старт: 16 мая
    3. Анализ фишинговых атак Старт: 16 мая Устройства для тестирования на проникновение Старт: 16 мая

    Скидки до 10%

    Полный список ближайших курсов ...

Pdf в Jpg

NickProstoNick

Статус как статус :)
Lotus Team
22.08.2008
1 851
27
BIT
0
Доброго времени суток!
Есть задача перегонять PDF в JPG. причем каждая страница в отдном файле.

Вот нашел такой код
Код:
import java.awt.Graphics2D;
import java.awt.RenderingHints;
import java.awt.Toolkit;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;

import javax.imageio.ImageIO;

import multivalent.Behavior;
import multivalent.Browser;
import multivalent.Context;
import multivalent.Document;
import multivalent.Multivalent;
import multivalent.Node;
import multivalent.ParseException;
import multivalent.node.Root;
import multivalent.std.adaptor.pdf.PDF;
import phelps.io.Files;
import phelps.util.Units;

public class Pdf2Image {


public static BufferedImage getPageBild(String pdfFilePath, int pageNr )throws IOException, ParseException
{
Browser br = Multivalent.getInstance().getBrowser("fake");
PDF pdf = (PDF) Behavior.getInstance("AdobePDF", "AdobePDF", null,
null, null);
File file = Files.getFile(pdfFilePath);
pdf.setFile(file);
Root root = br.getRoot();
Document doc = new Document("doc", null, root);
pdf.docURI = file.toURI();

pdf.parse(doc); // empty parse to determine page count
int pagecnt = Integer.parseInt(doc.getAttr(Document.ATTR_PAGECOUNT));
doc.clear();

doc.putAttr(Document.ATTR_PAGE, Integer.toString(pageNr));
pdf.parse(doc);
Node top = doc.childAt(0);

doc.formatBeforeAfter(0, 0, null);
int w = top.bbox.width;
int h = top.bbox.height;
BufferedImage img = new BufferedImage(w, h,
BufferedImage.TYPE_INT_RGB);
Graphics2D g = img.createGraphics();
g.setClip(0, 0, w, h);

// paint page
g.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING,
RenderingHints.VALUE_TEXT_ANTIALIAS_ON);
g.setRenderingHint(RenderingHints.KEY_ANTIALIASING,
RenderingHints.VALUE_ANTIALIAS_ON);
g.setRenderingHint(RenderingHints.KEY_RENDERING,
RenderingHints.VALUE_RENDER_QUALITY);
Context cx = doc.getStyleSheet().getContext(g,
Toolkit.getDefaultToolkit(), null);
top.paintBeforeAfter(g.getClipBounds(), cx);


// clean up
doc.removeAllChildren();
cx.reset();
g.dispose();
pdf.getReader().close();
return img;
}

public static BufferedImage CropImage(BufferedImage img, int xll, int yll, int xur, int yur)
{

img = img.getSubimage(xll, yur, xur-xll, yll-yur);
return img;
}

}


но в 30-й строке ошибка... а в Java я не силен... вообще никак
нужную библиотеку выгрузить не получилось... она 2,5 метра... но она есть в нете...
Подскажите, в чем ошибка?
 

lmike

нет, пердело совершенство
Lotus Team
27.08.2008
7 941
609
BIT
217
multivalent давно не обновлялся
jpedal Вам в руки...
навскидку - вот две ссылки, но крайне рекомендую поближе ознакомиться с java ;)
за Вас это никто не сделает...



гугл рулед :ph34r:

совсем забыл, в домине подключение сторонних библ протекает по особым правилам:
-способом включения в библиотеку базы - в дизайнере Edit Project (если прально помню)
-способом покладевания в путя доминошной ЖВМ... знакомимся с сылками:


-способом вызова внешней java - здесь мимум особенностей и ограничений (особенно на версию ЖВМ)

вот еще проект link removed
сорцы можете забрать через CVS (там ссылки есть)

открытые проекты касабельные ПДФ -
для ваших целей подходит тока то - что может "рендерить"


и для преобразований инмемори имэджей в файл понадобиться типа того:
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!