List of usage examples for org.apache.pdfbox.pdmodel PDPage getArtBox
public PDRectangle getArtBox()
From source file:fr.aviz.hybridvis.utils.PDF.MultiScalePDFViewer.java
License:Open Source License
private void addOnWallImg(BufferedImage src, PDPage key) { int w = src.getWidth(); int h = src.getHeight(); // current wall column int curX = (int) Math.floor((double) nextX / (double) RESOLUTION_X); if (nextX + w > tempWidth) { // go to next screen row nextX = 0;/* w ww .java 2s .c om*/ nextY += RESOLUTION_Y; } if (nextX + w > (curX + 1) * RESOLUTION_X) { if (w <= RESOLUTION_X) { // small image, but does not fit in current screen nextX = (curX + 1) * RESOLUTION_X; } // else w bigger than screen width, fit as you can } if (nextY > tempHeight) { // well, no more space ... return; } if (hybrid) { // close int pn = findPageNumber(document, key); System.out.println("Printing content in p. " + pn); if (closeImg == null) System.err.println("Image closeImg is null"); Graphics2D g = closeImg.createGraphics(); g.drawImage(src, nextX, nextY, w, h, null); // far, get titles and draw them BufferedImage itemImage; int titlesInPage = 0; List<String> titles = pageTitles.get(key); if (titles != null) { titlesInPage = titles.size(); System.out.println("Printing titles in p. " + pn); } // local coords for titles in one page int pw = (int) key.getArtBox().getWidth() - 100; int ph = (int) key.getArtBox().getHeight() - 100; int px = (int) key.getArtBox().getLowerLeftX() + 50; int py = (int) key.getArtBox().getLowerLeftY() + 50; itemImage = new BufferedImage(pw, ph, BufferedImage.TYPE_INT_ARGB); if (titles_on && clouds_on) { itemImage = printTitlesAndCloudInImage(key, pn, titles, itemFont); } else if (titles_on) { if (titles != null) itemImage = printTitlesInImage(key, titles, itemFont); } else if (clouds_on) { itemImage = printCloudInImage(key, pn, titles, itemFont); } Graphics2D g2 = farImg.createGraphics(); g2.drawImage(itemImage, nextX, nextY, w, h, null); g.dispose(); } // } else { // Graphics2D g = wallImg.createGraphics(); // g.drawImage(src, nextX, nextY, w, h, null); // g.dispose(); // } nextX += w; }
From source file:fr.aviz.hybridvis.utils.PDF.MultiScalePDFViewer.java
License:Open Source License
/** * @param PDDocument/*from w ww. j a v a2 s.co m*/ * Extracts the PDF's structure (up to 2 levels) if available * (PDF passed as PDDocument). Create an image of the structure * for each of the 1st level titles */ protected void pdfGetStructure_PDFbox(PDDocument document) throws IOException { PDDocumentOutline root = document.getDocumentCatalog().getDocumentOutline(); PDOutlineItem item; try { item = root.getFirstChild(); } catch (NullPointerException e) { System.out.println("No structure for pdf " + PDFname); return; } // fill map with titles per page while (item != null) { int pageNumber = findPageNumber(document, item.findDestinationPage(document)); String conc = item.getTitle(); if (conc.length() > 13) conc = conc.subSequence(0, 10) + "..."; System.out.println("Item:" + conc + " at page " + pageNumber); if (pageTitles.containsKey(item.findDestinationPage(document))) pageTitles.get(item.findDestinationPage(document)).add(conc); else { pageTitles.put(item.findDestinationPage(document), new ArrayList<String>()); pageTitles.get(item.findDestinationPage(document)).add(conc); } // do nothing with 2nd level children PDOutlineItem child = item.getFirstChild(); while (child != null) { System.out.println(" Child:" + child.getTitle()); child = child.getNextSibling(); } item = item.getNextSibling(); } int pn = 0; if (!hybrid) { BufferedImage itemImage; for (PDPage key : pages) { // for (PDPage key : pageTitles.keySet()) { ++pn; int titlesInPage = 0; List<String> titles = null; if (pageTitles.containsKey(key)) { titles = pageTitles.get(key); titlesInPage = titles.size(); } int w = (int) key.getArtBox().getWidth() - 200; int h = (int) key.getArtBox().getHeight() - 100; ; int x = (int) key.getArtBox().getLowerLeftX() + 50; int y = (int) key.getArtBox().getLowerLeftY() + 50; // calling createGraphics() to get the Graphics2D and setup for // drawing titles itemImage = new BufferedImage(w, h, BufferedImage.TYPE_INT_ARGB); if (titles_on && clouds_on) { itemImage = printTitlesAndCloudInImage(key, pn, titles, itemFont); } else if (titles_on) { if (titles != null) itemImage = printTitlesInImage(key, titles, itemFont); } else if (clouds_on) { itemImage = printCloudInImage(key, pn, titles, itemFont); } } } }
From source file:fr.aviz.hybridvis.utils.PDF.MultiScalePDFViewer.java
License:Open Source License
private BufferedImage printTitlesInImage(PDPage key, List<String> titles, Font itemFont) { int titlesInPage = titles.size(); // assuming dimensions of PDF page for drawing int w = (int) key.getMediaBox().getWidth() - 200; int h = (int) key.getMediaBox().getHeight() - 100; int x = (int) key.getArtBox().getLowerLeftX() + 50; int y = (int) key.getArtBox().getLowerLeftY() + 50; // no idea why this is needed w *= 2;/*w w w .ja v a2 s. c o m*/ h *= 2; BufferedImage itemImage; if (!hybrid) { // calling createGraphics() to get the Graphics2D and setup for // drawing titles. Completely transparent itemImage = GraphicsEnvironment.getLocalGraphicsEnvironment().getDefaultScreenDevice() .getDefaultConfiguration().createCompatibleImage(w, h, Transparency.TRANSLUCENT); } else { itemImage = new BufferedImage(w, h, BufferedImage.TYPE_INT_ARGB); } Graphics2D g = itemImage.createGraphics(); int currentTitle = titlesInPage; // background of title image transparent g.setColor(new Color(0f, 0f, 0f, opacity)); for (String title : titles) { itemFont = scaleFontToFit(title, w - 100, g, itemFont); g.setFont(itemFont); g.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING, RenderingHints.VALUE_TEXT_ANTIALIAS_GASP); g.drawString(title, (float) x, (float) (y + (titlesInPage - currentTitle + 1) * h / (titlesInPage + 1))); --currentTitle; } // releasing resources g.dispose(); return itemImage; }
From source file:fr.aviz.hybridvis.utils.PDF.MultiScalePDFViewer.java
License:Open Source License
private BufferedImage printTitlesAndCloudInImage(PDPage key, int pageNo, List<String> titles, Font itemFont) { // assuming dimensions of PDF page for drawing int w = (int) key.getMediaBox().getWidth() - 200; int h = (int) key.getMediaBox().getHeight() - 100; int x = (int) key.getArtBox().getLowerLeftX() + 50; int y = (int) key.getArtBox().getLowerLeftY() + 50; // no idea why this is needed w *= 2;// ww w. java 2s . c om h *= 2; BufferedImage itemImage; if (!hybrid) { // calling createGraphics() to get the Graphics2D and setup for // drawing titles. Completely transparent itemImage = GraphicsEnvironment.getLocalGraphicsEnvironment().getDefaultScreenDevice() .getDefaultConfiguration().createCompatibleImage(w, h, Transparency.TRANSLUCENT); } else { itemImage = new BufferedImage(w, h, BufferedImage.TYPE_INT_ARGB); } int originalFont = itemFont.getSize(); Graphics2D g = itemImage.createGraphics(); // background of title image transparent g.setColor(new Color(1f, 1f, 1f, 0f)); g.fillRect(0, 0, w, h); g.setColor(new Color(0f, 0f, 0f, opacity)); if (titles != null) { int titlesInPage = titles.size(); int currentTitle = titlesInPage; for (String title : titles) { itemFont = scaleFontToFit(title, w - 100, g, itemFont); g.setFont(itemFont); g.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING, RenderingHints.VALUE_TEXT_ANTIALIAS_GASP); g.drawString(title, x, (float) ((titlesInPage - currentTitle + 1) * h * .5 / (titlesInPage + 1))); --currentTitle; } } else { System.out.println("PAGE NO TITLE"); } String pageText; StringWriter pageTextWriter = new StringWriter(); System.out.println("Printing text in p. " + pageNo); try { PDFts.setStartPage(pageNo); PDFts.setEndPage(pageNo); PDFts.writeText(document, pageTextWriter); pageText = pageTextWriter.toString(); itemFont = itemFont.deriveFont(originalFont); g.setFont(itemFont); TagCloudImageGenerator tcig = new TagCloudImageGenerator(pageText, null, w, h / 2); int tw = tcig.getCloudImage().getWidth(); int th = tcig.getCloudImage().getHeight(); int y_drawing = h / 2 - 100; int x_drawing = 50; if (tw < w) x_drawing += .5 * (w - tw); if (titles == null) y_drawing = (int) (h / 4.0); g.drawImage(tcig.getCloudImage(), x_drawing, y_drawing, w, (h / 2), null); } catch (IOException e) { e.printStackTrace(); } // releasing resources g.dispose(); return itemImage; }
From source file:fr.aviz.hybridvis.utils.PDF.MultiScalePDFViewer.java
License:Open Source License
private BufferedImage printCloudInImage(PDPage key, int pageNo, List<String> titles, Font itemFont) { // assuming dimensions of PDF page for drawing int w = (int) key.getMediaBox().getWidth() - 200; int h = (int) key.getMediaBox().getHeight() - 100; int x = (int) key.getArtBox().getLowerLeftX() + 50; int y = (int) key.getArtBox().getLowerLeftY() + 50; // no idea why this is needed w *= 2;/*from w w w . j av a 2s . c o m*/ h *= 2; BufferedImage itemImage; if (!hybrid) { // calling createGraphics() to get the Graphics2D and setup for // drawing titles. Completely transparent itemImage = GraphicsEnvironment.getLocalGraphicsEnvironment().getDefaultScreenDevice() .getDefaultConfiguration().createCompatibleImage(w, h, Transparency.TRANSLUCENT); } else { itemImage = new BufferedImage(w, h, BufferedImage.TYPE_INT_ARGB); } int originalFont = itemFont.getSize(); Graphics2D g = itemImage.createGraphics(); // background of title image transparent g.setColor(new Color(1f, 1f, 1f, 0f)); g.fillRect(0, 0, w, h); g.setColor(new Color(0f, 0f, 0f, opacity)); String pageText; StringWriter pageTextWriter = new StringWriter(); System.out.println("Printing text in p. " + pageNo); try { PDFts.setStartPage(pageNo); PDFts.setEndPage(pageNo); PDFts.writeText(document, pageTextWriter); pageText = pageTextWriter.toString(); itemFont = itemFont.deriveFont(originalFont); g.setFont(itemFont); TagCloudImageGenerator tcig = new TagCloudImageGenerator(pageText, null, w, 3 * h / 4); int tw = tcig.getCloudImage().getWidth(); int th = tcig.getCloudImage().getHeight(); int y_drawing = h / 4 - 100; int x_drawing = 50; if (tw < w) x_drawing += .5 * (w - tw); g.drawImage(tcig.getCloudImage(), x_drawing, y_drawing, w, 3 * h / 4, 0, 0, tcig.getCloudImage().getWidth(), tcig.getCloudImage().getHeight(), null); } catch (IOException e) { e.printStackTrace(); } // releasing resources g.dispose(); return itemImage; }
From source file:org.qi4j.envisage.print.PDFWriter.java
License:Apache License
private void createNewPage() { try {/* www. java 2 s . co m*/ if (curContentStream != null) { curContentStream.endText(); curContentStream.close(); } PDPage page = new PDPage(); doc.addPage(page); curContentStream = new PDPageContentStream(doc, page); curPageSize = page.getArtBox(); //System.out.println("pSize: " + pdRect.getWidth() + "," + pdRect.getHeight()); curContentStream.beginText(); curY = curPageSize.getHeight() - startY; curContentStream.moveTextPositionByAmount(startX, curY); if (curFont != null) { setFont(curFont, curFontSize); } } catch (IOException e) { throw new PrintingException("Unable to create page.", e); } }