Java Tutorial/PDF/Layer

Материал из Java эксперт
Перейти к: навигация, поиск

Create PdfLayer

   <source lang="java">

import java.io.FileOutputStream; import com.lowagie.text.Document; import com.lowagie.text.Element; import com.lowagie.text.Phrase; import com.lowagie.text.pdf.ColumnText; import com.lowagie.text.pdf.PdfContentByte; import com.lowagie.text.pdf.PdfLayer; import com.lowagie.text.pdf.PdfLayerMembership; import com.lowagie.text.pdf.PdfWriter; public class MainClass {

 public static void main(String[] args) throws Exception {
   Document document = new Document();
   PdfWriter writer = PdfWriter.getInstance(document, new FileOutputStream("2.pdf"));
   writer.setPdfVersion(PdfWriter.VERSION_1_5);
   document.open();
   PdfContentByte cb = writer.getDirectContent();
   PdfLayer layer1 = new PdfLayer("layer 1", writer);
   PdfLayer layer2 = new PdfLayer("layer 2", writer);
   PdfLayer layer3 = new PdfLayer("layer 3", writer);
   PdfLayerMembership cat = new PdfLayerMembership(writer);
   cat.addMember(layer2);
   cat.addMember(layer3);
   PdfLayerMembership no_cat = new PdfLayerMembership(writer);
   no_cat.addMember(layer2);
   no_cat.addMember(layer3);
   no_cat.setVisibilityPolicy(PdfLayerMembership.ALLOFF);
   cb.beginLayer(layer1);
   ColumnText.showTextAligned(cb, Element.ALIGN_LEFT, new Phrase("A"), 50, 775, 0);
   cb.endLayer();
   cb.beginLayer(layer2);
   ColumnText.showTextAligned(cb, Element.ALIGN_LEFT, new Phrase("B"), 50, 750, 0);
   cb.endLayer();
   cb.beginLayer(layer3);
   ColumnText.showTextAligned(cb, Element.ALIGN_LEFT, new Phrase("C"), 50, 725, 0);
   cb.endLayer();
   cb.beginLayer(cat);
   ColumnText.showTextAligned(cb, Element.ALIGN_LEFT, new Phrase("D"), 50, 700, 0);
   cb.endLayer();
   cb.beginLayer(no_cat);
   ColumnText.showTextAligned(cb, Element.ALIGN_LEFT, new Phrase("E"), 50, 700, 0);
   cb.endLayer();
   document.close();
 }

}</source>





Grouped layers

   <source lang="java">

import java.io.FileOutputStream; import java.util.ArrayList; import com.lowagie.text.Document; import com.lowagie.text.Element; import com.lowagie.text.Phrase; import com.lowagie.text.pdf.ColumnText; import com.lowagie.text.pdf.PdfContentByte; import com.lowagie.text.pdf.PdfLayer; import com.lowagie.text.pdf.PdfWriter; public class MainClass {

 public static void main(String[] args) throws Exception {
   Document document = new Document();
   PdfWriter writer = PdfWriter
       .getInstance(document, new FileOutputStream("2.pdf"));
   writer.setPdfVersion(PdfWriter.VERSION_1_5);
   document.open();
   PdfContentByte cb = writer.getDirectContent();
   PdfLayer group = PdfLayer.createTitle("Grouped layers", writer);
   PdfLayer layer1 = new PdfLayer("Group: layer 1", writer);
   PdfLayer layer2 = new PdfLayer("Group: layer 2", writer);
   group.addChild(layer1);
   group.addChild(layer2);
   cb.beginLayer(layer1);
   ColumnText.showTextAligned(cb, Element.ALIGN_LEFT, new Phrase("layer 1 in the group"), 50, 700,
       0);
   cb.endLayer();
   cb.beginLayer(layer2);
   ColumnText.showTextAligned(cb, Element.ALIGN_LEFT, new Phrase("layer 2 in the group"), 50, 675,
       0);
   cb.endLayer();
   
   document.close();
 }

}</source>





Nested Layers

   <source lang="java">

import java.io.FileOutputStream; import java.util.ArrayList; import com.lowagie.text.Document; import com.lowagie.text.Element; import com.lowagie.text.Phrase; import com.lowagie.text.pdf.ColumnText; import com.lowagie.text.pdf.PdfContentByte; import com.lowagie.text.pdf.PdfLayer; import com.lowagie.text.pdf.PdfWriter; public class MainClass {

 public static void main(String[] args) throws Exception {
   Document document = new Document();
   PdfWriter writer = PdfWriter
       .getInstance(document, new FileOutputStream("2.pdf"));
   writer.setPdfVersion(PdfWriter.VERSION_1_5);
   document.open();
   PdfContentByte cb = writer.getDirectContent();
   PdfLayer nested = new PdfLayer("Nested Layers", writer);
   PdfLayer nested_1 = new PdfLayer("Nested Layer 1", writer);
   PdfLayer nested_2 = new PdfLayer("Nested Layer 2", writer);
   nested.addChild(nested_1);
   nested.addChild(nested_2);
   cb.beginLayer(nested);
   ColumnText.showTextAligned(cb, Element.ALIGN_LEFT, new Phrase("nested layers"), 50, 775, 0);
   cb.endLayer();
   cb.beginLayer(nested_1);
   ColumnText.showTextAligned(cb, Element.ALIGN_LEFT, new Phrase("nested layer 1"), 100, 800, 0);
   cb.endLayer();
   cb.beginLayer(nested_2);
   ColumnText.showTextAligned(cb, Element.ALIGN_LEFT, new Phrase("nested layer 2"), 100, 750, 0);
   cb.endLayer();
   
   document.close();
 }

}</source>





not printed layer

   <source lang="java">

import java.io.FileOutputStream; import java.util.ArrayList; import com.lowagie.text.Document; import com.lowagie.text.Element; import com.lowagie.text.Phrase; import com.lowagie.text.pdf.ColumnText; import com.lowagie.text.pdf.PdfContentByte; import com.lowagie.text.pdf.PdfLayer; import com.lowagie.text.pdf.PdfWriter; public class MainClass {

 public static void main(String[] args) throws Exception {
   Document document = new Document();
   PdfWriter writer = PdfWriter
       .getInstance(document, new FileOutputStream("2.pdf"));
   writer.setPdfVersion(PdfWriter.VERSION_1_5);
   document.open();
   PdfContentByte cb = writer.getDirectContent();
   PdfLayer not_printed = new PdfLayer("not printed", writer);
   not_printed.setOnPanel(false);
   not_printed.setPrint("Print", false);
   cb.beginLayer(not_printed);
   ColumnText.showTextAligned(cb, Element.ALIGN_CENTER, new Phrase("PRINT THIS PAGE"), 300, 700,
       90);
   cb.endLayer();
   
   document.close();
 }

}</source>





Radio Group

   <source lang="java">

import java.io.FileOutputStream; import java.util.ArrayList; import com.lowagie.text.Document; import com.lowagie.text.Element; import com.lowagie.text.Phrase; import com.lowagie.text.pdf.ColumnText; import com.lowagie.text.pdf.PdfContentByte; import com.lowagie.text.pdf.PdfLayer; import com.lowagie.text.pdf.PdfWriter; public class MainClass {

 public static void main(String[] args) throws Exception {
   Document document = new Document();
   PdfWriter writer = PdfWriter
       .getInstance(document, new FileOutputStream("2.pdf"));
   writer.setPdfVersion(PdfWriter.VERSION_1_5);
   document.open();
   PdfContentByte cb = writer.getDirectContent();
   PdfLayer radiogroup = PdfLayer.createTitle("Radio Group", writer);
   PdfLayer radio1 = new PdfLayer("Radiogroup: layer 1", writer);
   radio1.setOn(true);
   PdfLayer radio2 = new PdfLayer("Radiogroup: layer 2", writer);
   radio2.setOn(false);
   PdfLayer radio3 = new PdfLayer("Radiogroup: layer 3", writer);
   radio3.setOn(false);
   radiogroup.addChild(radio1);
   radiogroup.addChild(radio2);
   radiogroup.addChild(radio3);
   ArrayList options = new ArrayList();
   options.add(radio1);
   options.add(radio2);
   options.add(radio3);
   writer.addOCGRadioGroup(options);
   cb.beginLayer(radio1);
   ColumnText.showTextAligned(cb, Element.ALIGN_LEFT, new Phrase("option 1"), 50, 600, 0);
   cb.endLayer();
   cb.beginLayer(radio2);
   ColumnText.showTextAligned(cb, Element.ALIGN_LEFT, new Phrase("option 2"), 50, 575, 0);
   cb.endLayer();
   cb.beginLayer(radio3);
   ColumnText.showTextAligned(cb, Element.ALIGN_LEFT, new Phrase("option 3"), 50, 550, 0);
   cb.endLayer();
   
   document.close();
 }

}</source>





Show hide text with layer

   <source lang="java">

import java.io.FileOutputStream; import java.util.ArrayList; import com.lowagie.text.Chunk; import com.lowagie.text.Document; import com.lowagie.text.Phrase; import com.lowagie.text.pdf.BaseFont; import com.lowagie.text.pdf.PdfAction; import com.lowagie.text.pdf.PdfContentByte; import com.lowagie.text.pdf.PdfLayer; import com.lowagie.text.pdf.PdfWriter; public class MainClass {

 public static void main(String[] args) throws Exception {
   Document document = new Document();
   PdfWriter writer = PdfWriter.getInstance(document, new FileOutputStream("2.pdf"));
   writer.setPdfVersion(PdfWriter.VERSION_1_5);
   document.open();
   PdfLayer a1 = new PdfLayer("answer 1", writer);
   a1.setOn(false);
   BaseFont bf = BaseFont.createFont(BaseFont.HELVETICA, BaseFont.WINANSI, BaseFont.NOT_EMBEDDED);
   PdfContentByte cb = writer.getDirectContent();
   cb.beginText();
   cb.setTextMatrix(50, 790);
   cb.setLeading(24);
   cb.setFontAndSize(bf, 18);
   cb.newlineShowText("This is a question?");
   cb.beginLayer(a1);
   cb.setRGBColorFill(0xFF, 0x00, 0x00);
   cb.newlineShowText("This is the answer");
   cb.resetRGBColorFill();
   cb.endLayer();
   cb.endText();
   ArrayList stateOn = new ArrayList();
   stateOn.add("ON");
   stateOn.add(a1);
   PdfAction actionOn = PdfAction.setOCGstate(stateOn, true);
   ArrayList stateOff = new ArrayList();
   stateOff.add("OFF");
   stateOff.add(a1);
   PdfAction actionOff = PdfAction.setOCGstate(stateOff, true);
   ArrayList stateToggle = new ArrayList();
   stateToggle.add("Toggle");
   stateToggle.add(a1);
   PdfAction actionToggle = PdfAction.setOCGstate(stateToggle, true);
   Phrase p = new Phrase("Change the state of the answers:");
   Chunk on = new Chunk(" on ").setAction(actionOn);
   p.add(on);
   Chunk off = new Chunk("/ off ").setAction(actionOff);
   p.add(off);
   Chunk toggle = new Chunk("/ toggle").setAction(actionToggle);
   p.add(toggle);
   document.add(p);
   document.close();
 }

}</source>





Text on layer

   <source lang="java">

import java.io.FileOutputStream; import com.lowagie.text.Document; import com.lowagie.text.pdf.BaseFont; import com.lowagie.text.pdf.PdfContentByte; import com.lowagie.text.pdf.PdfLayer; import com.lowagie.text.pdf.PdfWriter; public class MainClass {

 public static void main(String[] args) throws Exception {
   Document document = new Document();
   PdfWriter writer = PdfWriter.getInstance(document, new FileOutputStream("2.pdf"));
   writer.setPdfVersion(PdfWriter.VERSION_1_5);
   document.open();
   PdfLayer layer = new PdfLayer("Do you see me?", writer);
   BaseFont bf = BaseFont.createFont(BaseFont.HELVETICA, BaseFont.WINANSI, BaseFont.NOT_EMBEDDED);
   PdfContentByte cb = writer.getDirectContent();
   cb.beginText();
   cb.setTextMatrix(50, 790);
   cb.setLeading(24);
   cb.setFontAndSize(bf, 18);
   cb.showText("Do you see me?");
   cb.beginLayer(layer);
   cb.newlineShowText("this is a test");
   cb.endLayer();
   cb.endText();
   document.close();
 }

}</source>





Using Layer

   <source lang="java">

import java.io.FileOutputStream; import com.lowagie.text.Document; import com.lowagie.text.pdf.GrayColor; import com.lowagie.text.pdf.PdfContentByte; import com.lowagie.text.pdf.PdfWriter; public class MainClass {

 public static void main(String[] args) throws Exception {
   Document document = new Document();
   PdfWriter writer = PdfWriter.getInstance(document, new FileOutputStream("2.pdf"));
   document.open();
   PdfContentByte over = writer.getDirectContent();
   PdfContentByte under = writer.getDirectContentUnder();
   drawLayer(over, 70, 750, 150, 100);
   drawLayer(under, 70, 730, 150, 100);
   document.close();
 }
 public static void drawLayer(PdfContentByte cb, float llx, float lly, float w, float h) {
   cb.saveState();
   cb.setColorFill(new GrayColor(0.9f));
   cb.setColorStroke(new GrayColor(0.2f));
   cb.moveTo(llx, lly);
   cb.lineTo(llx + w / 4, lly + h / 3);
   cb.lineTo(llx + 7 * w / 8, lly + h / 3);
   cb.lineTo(llx + (2 * w) / 3, lly);
   cb.closePathFillStroke();
   cb.restoreState();
 }

}</source>