Esempio n. 1
0
  /** @see com.lowagie.tools.AbstractTool#execute() */
  public static void execute(String srcvalue, String destvalue, String rotvalue) {
    try {
      if (StringUtils.isBlank(srcvalue)) {
        throw new InstantiationException("You need to choose a sourcefile");
      }
      File src = new File(srcvalue);
      if (StringUtils.isBlank(destvalue)) {
        throw new InstantiationException("You need to choose a destination file");
      }
      File dest = new File(destvalue);
      if (StringUtils.isBlank(rotvalue)) {
        throw new InstantiationException("You need to choose a rotation");
      }
      int rotation = Integer.parseInt(rotvalue);

      // we create a reader for a certain document
      PdfReader reader = new PdfReader(src.getAbsolutePath());
      // we retrieve the total number of pages and the page size
      int total = reader.getNumberOfPages();
      System.out.println("There are " + total + " pages in the original file.");

      PdfDictionary pageDict;
      int currentRotation;
      for (int p = 1; p <= total; p++) {
        currentRotation = reader.getPageRotation(p);
        pageDict = reader.getPageN(p);
        pageDict.put(PdfName.ROTATE, new PdfNumber(currentRotation + rotation));
      }
      PdfStamper stamper = new PdfStamper(reader, new FileOutputStream(dest));
      stamper.close();
    } catch (Exception e) {
      e.printStackTrace();
    }
  }
  /**
   * Processes content from the specified page number using the specified listener
   *
   * @param <E> the type of the renderListener - this makes it easy to chain calls
   * @param pageNumber the page number to process
   * @param renderListener the listener that will receive render callbacks
   * @return the provided renderListener
   * @throws IOException if operations on the reader fail
   */
  public <E extends RenderListener> E processContent(int pageNumber, E renderListener)
      throws IOException {
    PdfDictionary pageDic = reader.getPageN(pageNumber);
    PdfDictionary resourcesDic = pageDic.getAsDict(PdfName.RESOURCES);

    PdfContentStreamProcessor processor = new PdfContentStreamProcessor(renderListener);
    processor.processContent(
        ContentByteUtils.getContentBytesForPage(reader, pageNumber), resourcesDic);
    return renderListener;
  }
  private String extractTextFromPdf(byte pdfAsByteArray[]) throws IOException, IOException {
    PdfReader reader = new PdfReader(pdfAsByteArray);
    TextRenderListener listener = new TextRenderListener();
    PdfContentStreamProcessor processor = new PdfContentStreamProcessor(listener);
    PdfDictionary pageDic = reader.getPageN(1);
    PdfDictionary resourcesDic = pageDic.getAsDict(PdfName.RESOURCES);

    byte array[] = ContentByteUtils.getContentBytesForPage(reader, 1);
    processor.processContent(array, resourcesDic);

    return listener.getSb();
  }
Esempio n. 4
0
  private static void crop(String input) throws Exception {
    String output = input.replace(".pdf", "-crop.pdf");
    PdfReader reader = new PdfReader(input);
    final int n = reader.getNumberOfPages();
    Rectangle pageSize = reader.getPageSize(1);

    System.out.println("Input page size: " + pageSize);
    float left = (pageSize.getWidth() - kTextWidth) / 2 - kMargin;
    float right = pageSize.getWidth() - left;
    float bottom = (pageSize.getHeight() - kTextHeight) / 2;
    float top = pageSize.getHeight() - bottom;
    PdfRectangle rect = new PdfRectangle(left, bottom + kOffset, right, top + kOffset);
    for (int i = 1; i <= n; i++) {
      PdfDictionary pageDict = reader.getPageN(i);
      pageDict.put(PdfName.CROPBOX, rect);
    }
    PdfStamper stamper = new PdfStamper(reader, new FileOutputStream(output));
    stamper.close();
  }