Pdf в Jpg

NickProstoNick

Статус как статус :)
Lotus team
22.08.2008
1 809
21
#1
Доброго времени суток!
Есть задача перегонять 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
6 586
272
#2
multivalent давно не обновлялся
jpedal Вам в руки...
навскидку - вот две ссылки, но крайне рекомендую поближе ознакомиться с java ;)
за Вас это никто не сделает...
http://threebit.net/mail-archive/itext-que...s/msg01415.html
http://forums.sun.com/thread.jspa?threadID...95&start=30

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

совсем забыл, в домине подключение сторонних библ протекает по особым правилам:
-способом включения в библиотеку базы - в дизайнере Edit Project (если прально помню)
-способом покладевания в путя доминошной ЖВМ... знакомимся с сылками:
http://web3.inttrust.ru/site/itforum.nsf/6...33;OpenDocument
http://www-1.ibm.com/support/docview.wss?uid=swg21159321
-способом вызова внешней java - здесь мимум особенностей и ограничений (особенно на версию ЖВМ)

вот еще проект
Для просмотра контента необходимо: Войти или зарегистрироваться

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

открытые проекты касабельные ПДФ - http://java-source.net/open-source/pdf-libraries
для ваших целей подходит тока то - что может "рендерить"
http://sourceforge.net/project/showfiles.php?group_id=203731

и для преобразований инмемори имэджей в файл понадобиться типа того:
http://www.nsftools.com/tips/JpgImage.java