Ejemplo n.º 1
0
 /**
  * Draws a horizontal line.
  *
  * @param canvas the canvas to draw on
  * @param leftX the left x coordinate
  * @param rightX the right x coordindate
  * @param y the y coordinate
  */
 public void drawLine(PdfContentByte canvas, float leftX, float rightX, float y) {
   float w;
   if (getPercentage() < 0) w = -getPercentage();
   else w = (rightX - leftX) * getPercentage() / 100.0f;
   float s;
   switch (getAlignment()) {
     case Element.ALIGN_LEFT:
       s = 0;
       break;
     case Element.ALIGN_RIGHT:
       s = rightX - leftX - w;
       break;
     default:
       s = (rightX - leftX - w) / 2;
       break;
   }
   canvas.setLineWidth(getLineWidth());
   if (getLineColor() != null) canvas.setColorStroke(getLineColor());
   canvas.moveTo(s + leftX, y + offset);
   canvas.lineTo(s + w + leftX, y + offset);
   canvas.stroke();
 }
Ejemplo n.º 2
0
 /**
  * @see org.saipdf.text.pdf.draw.DrawInterface#draw(org.saipdf.text.pdf.PdfContentByte, float,
  *     float, float, float, float)
  */
 public void draw(PdfContentByte canvas, float llx, float lly, float urx, float ury, float y) {
   canvas.saveState();
   drawLine(canvas, llx, urx, y);
   canvas.restoreState();
 }
Ejemplo n.º 3
0
  /**
   * This class can be used to split an existing PDF file.
   *
   * @param args the command line arguments
   */
  public static void main(String args[]) {
    if (args.length != 4) {
      System.err.println("arguments: srcfile destfile1 destfile2 pagenumber");
    } else {
      try {
        int pagenumber = Integer.parseInt(args[3]);

        // we create a reader for a certain document
        PdfReader reader = new PdfReader(args[0]);
        // we retrieve the total number of pages
        int n = reader.getNumberOfPages();
        System.out.println("There are " + n + " pages in the original file.");

        if (pagenumber < 2 || pagenumber > n) {
          throw new DocumentException(
              MessageLocalization.getComposedMessage(
                  "you.can.t.split.this.document.at.page.1.there.is.no.such.page", pagenumber));
        }

        // step 1: creation of a document-object
        Document document1 = new Document(reader.getPageSizeWithRotation(1));
        Document document2 = new Document(reader.getPageSizeWithRotation(pagenumber));
        // step 2: we create a writer that listens to the document
        PdfWriter writer1 = PdfWriter.getInstance(document1, new FileOutputStream(args[1]));
        PdfWriter writer2 = PdfWriter.getInstance(document2, new FileOutputStream(args[2]));
        // step 3: we open the document
        document1.open();
        PdfContentByte cb1 = writer1.getDirectContent();
        document2.open();
        PdfContentByte cb2 = writer2.getDirectContent();
        PdfImportedPage page;
        int rotation;
        int i = 0;
        // step 4: we add content
        while (i < pagenumber - 1) {
          i++;
          document1.setPageSize(reader.getPageSizeWithRotation(i));
          document1.newPage();
          page = writer1.getImportedPage(reader, i);
          rotation = reader.getPageRotation(i);
          if (rotation == 90 || rotation == 270) {
            cb1.addTemplate(page, 0, -1f, 1f, 0, 0, reader.getPageSizeWithRotation(i).getHeight());
          } else {
            cb1.addTemplate(page, 1f, 0, 0, 1f, 0, 0);
          }
        }
        while (i < n) {
          i++;
          document2.setPageSize(reader.getPageSizeWithRotation(i));
          document2.newPage();
          page = writer2.getImportedPage(reader, i);
          rotation = reader.getPageRotation(i);
          if (rotation == 90 || rotation == 270) {
            cb2.addTemplate(page, 0, -1f, 1f, 0, 0, reader.getPageSizeWithRotation(i).getHeight());
          } else {
            cb2.addTemplate(page, 1f, 0, 0, 1f, 0, 0);
          }
          System.out.println("Processed page " + i);
        }
        // step 5: we close the document
        document1.close();
        document2.close();
      } catch (Exception e) {
        e.printStackTrace();
      }
    }
  }