public PdfResources getResources() { if (this.resources == null) { PdfDictionary resourcesDict = getPdfObject().getAsDictionary(PdfName.Resources); if (resourcesDict == null) { resourcesDict = new PdfDictionary(); getPdfObject().put(PdfName.Resources, resourcesDict); } this.resources = new PdfResources(resourcesDict); } return resources; }
/** * Gets {@link PdfResources} of the Form XObject. * Note, if there is no resources, a new instance will be created. * * @return not null instance of {@link PdfResources}. */ public PdfResources getResources() { if (this.resources == null) { PdfDictionary resourcesDict = getPdfObject().getAsDictionary(PdfName.Resources); if (resourcesDict == null) { resourcesDict = new PdfDictionary(); getPdfObject().put(PdfName.Resources, resourcesDict); } this.resources = new PdfResources(resourcesDict); } return resources; }
/** * Draws the appearance of a radio button with a specified value. * * @param width the width of the radio button to draw * @param height the height of the radio button to draw * @param value the value of the button * @deprecated Please, use {@link #drawRadioAppearance(float, float, String)} instead. */ @Deprecated protected void drawPdfA1RadioAppearance(float width, float height, String value) { PdfStream stream = (PdfStream) new PdfStream().makeIndirect(getDocument()); PdfCanvas canvas = new PdfCanvas(stream, new PdfResources(), getDocument()); Rectangle rect = new Rectangle(0, 0, width, height); PdfFormXObject xObject = new PdfFormXObject(rect); drawBorder(canvas, xObject, width, height); drawRadioField(canvas, rect.getWidth(), rect.getHeight(), !"Off".equals(value)); PdfDictionary normalAppearance = new PdfDictionary(); normalAppearance.put(new PdfName(value), xObject.getPdfObject()); PdfWidgetAnnotation widget = getWidgets().get(0); xObject.getPdfObject().getOutputStream().writeBytes(stream.getBytes()); widget.setNormalAppearance(normalAppearance); }
/** * Draws the appearance of a radio button with a specified value. * * @param width the width of the radio button to draw * @param height the height of the radio button to draw * @param value the value of the button * @deprecated Please, use {@link #drawRadioAppearance(float, float, String)} instead. */ @Deprecated protected void drawPdfA1RadioAppearance(float width, float height, String value) { PdfStream stream = (PdfStream) new PdfStream().makeIndirect(getDocument()); PdfCanvas canvas = new PdfCanvas(stream, new PdfResources(), getDocument()); Rectangle rect = new Rectangle(0, 0, width, height); PdfFormXObject xObject = new PdfFormXObject(rect); drawBorder(canvas, xObject, width, height); drawRadioField(canvas, rect.getWidth(), rect.getHeight(), !"Off".equals(value)); PdfDictionary normalAppearance = new PdfDictionary(); normalAppearance.put(new PdfName(value), xObject.getPdfObject()); PdfWidgetAnnotation widget = getWidgets().get(0); xObject.getPdfObject().getOutputStream().writeBytes(stream.getBytes()); widget.setNormalAppearance(normalAppearance); }
put(PdfName.Resources, resources); this.resources = new PdfResources(resources); this.resources.setReadOnly(readOnly);
/** * @deprecated use {@link #drawPdfA2CheckAppearance(float, float, String, int)} instead. */ @Deprecated protected void drawPdfA1CheckAppearance(float width, float height, String selectedValue, int checkType) { PdfStream stream = (PdfStream) new PdfStream().makeIndirect(getDocument()); PdfCanvas canvas = new PdfCanvas(stream, new PdfResources(), getDocument()); Rectangle rect = new Rectangle(0, 0, width, height); PdfFormXObject xObject = new PdfFormXObject(rect); this.checkType = checkType; drawBorder(canvas, xObject, width, height); drawPdfACheckBox(canvas, width, height, !"Off".equals(selectedValue)); xObject.getPdfObject().getOutputStream().writeBytes(stream.getBytes()); PdfDictionary normalAppearance = new PdfDictionary(); normalAppearance.put(new PdfName(selectedValue), xObject.getPdfObject()); PdfDictionary mk = new PdfDictionary(); mk.put(PdfName.CA, new PdfString(text)); PdfWidgetAnnotation widget = getWidgets().get(0); widget.put(PdfName.MK, mk); widget.setNormalAppearance(normalAppearance); }
/** * @deprecated use {@link #drawPdfA2CheckAppearance(float, float, String, int)} instead. */ @Deprecated protected void drawPdfA1CheckAppearance(float width, float height, String selectedValue, int checkType) { PdfStream stream = (PdfStream) new PdfStream().makeIndirect(getDocument()); PdfCanvas canvas = new PdfCanvas(stream, new PdfResources(), getDocument()); Rectangle rect = new Rectangle(0, 0, width, height); PdfFormXObject xObject = new PdfFormXObject(rect); this.checkType = checkType; drawBorder(canvas, xObject, width, height); drawPdfACheckBox(canvas, width, height, !"Off".equals(selectedValue)); xObject.getPdfObject().getOutputStream().writeBytes(stream.getBytes()); PdfDictionary normalAppearance = new PdfDictionary(); normalAppearance.put(new PdfName(selectedValue), xObject.getPdfObject()); PdfDictionary mk = new PdfDictionary(); mk.put(PdfName.CA, new PdfString(text)); PdfWidgetAnnotation widget = getWidgets().get(0); widget.put(PdfName.MK, mk); widget.setNormalAppearance(normalAppearance); }
/** * Creates form XObject from page content. * The page shall be from the document, to which FormXObject will be added. * * @param page an instance of {@link PdfPage} */ public PdfFormXObject(PdfPage page) { this(page.getCropBox()); getPdfObject().getOutputStream().writeBytes(page.getContentBytes()); resources = new PdfResources((PdfDictionary) page.getResources().getPdfObject().clone()); getPdfObject().put(PdfName.Resources, resources.getPdfObject()); }
PdfCanvas canvasOn = new PdfCanvas(streamOn, new PdfResources(), getDocument()); PdfFormXObject xObjectOn = new PdfFormXObject(rect); PdfCanvas canvasOff = new PdfCanvas(streamOff, new PdfResources(), getDocument()); PdfFormXObject xObjectOff = new PdfFormXObject(rect);
PdfCanvas canvasOn = new PdfCanvas(streamOn, new PdfResources(), getDocument()); PdfFormXObject xObjectOn = new PdfFormXObject(rect); PdfCanvas canvasOff = new PdfCanvas(streamOff, new PdfResources(), getDocument()); PdfFormXObject xObjectOff = new PdfFormXObject(rect);
protected void drawPdfA2CheckAppearance(float width, float height, String onStateName, int checkType) { this.checkType = checkType; Rectangle rect = new Rectangle(0, 0, width, height); PdfStream streamOn = (PdfStream) new PdfStream().makeIndirect(getDocument()); PdfCanvas canvasOn = new PdfCanvas(streamOn, new PdfResources(), getDocument()); PdfFormXObject xObjectOn = new PdfFormXObject(rect); xObjectOn.getResources(); drawBorder(canvasOn, xObjectOn, width, height); drawPdfACheckBox(canvasOn, width, height, true); xObjectOn.getPdfObject().getOutputStream().writeBytes(streamOn.getBytes()); PdfStream streamOff = (PdfStream) new PdfStream().makeIndirect(getDocument()); PdfCanvas canvasOff = new PdfCanvas(streamOff, new PdfResources(), getDocument()); PdfFormXObject xObjectOff = new PdfFormXObject(rect); xObjectOff.getResources(); drawBorder(canvasOff, xObjectOff, width, height); xObjectOff.getPdfObject().getOutputStream().writeBytes(streamOff.getBytes()); PdfDictionary normalAppearance = new PdfDictionary(); normalAppearance.put(new PdfName(onStateName), xObjectOn.getPdfObject()); normalAppearance.put(new PdfName("Off"), xObjectOff.getPdfObject()); PdfDictionary mk = new PdfDictionary(); mk.put(PdfName.CA, new PdfString(text)); PdfWidgetAnnotation widget = getWidgets().get(0); widget.put(PdfName.MK, mk); widget.setNormalAppearance(normalAppearance); }
protected void drawPdfA2CheckAppearance(float width, float height, String onStateName, int checkType) { this.checkType = checkType; Rectangle rect = new Rectangle(0, 0, width, height); PdfStream streamOn = (PdfStream) new PdfStream().makeIndirect(getDocument()); PdfCanvas canvasOn = new PdfCanvas(streamOn, new PdfResources(), getDocument()); PdfFormXObject xObjectOn = new PdfFormXObject(rect); xObjectOn.getResources(); drawBorder(canvasOn, xObjectOn, width, height); drawPdfACheckBox(canvasOn, width, height, true); xObjectOn.getPdfObject().getOutputStream().writeBytes(streamOn.getBytes()); PdfStream streamOff = (PdfStream) new PdfStream().makeIndirect(getDocument()); PdfCanvas canvasOff = new PdfCanvas(streamOff, new PdfResources(), getDocument()); PdfFormXObject xObjectOff = new PdfFormXObject(rect); xObjectOff.getResources(); drawBorder(canvasOff, xObjectOff, width, height); xObjectOff.getPdfObject().getOutputStream().writeBytes(streamOff.getBytes()); PdfDictionary normalAppearance = new PdfDictionary(); normalAppearance.put(new PdfName(onStateName), xObjectOn.getPdfObject()); normalAppearance.put(new PdfName("Off"), xObjectOff.getPdfObject()); PdfDictionary mk = new PdfDictionary(); mk.put(PdfName.CA, new PdfString(text)); PdfWidgetAnnotation widget = getWidgets().get(0); widget.put(PdfName.MK, mk); widget.setNormalAppearance(normalAppearance); }
PdfCanvas canvasOn = new PdfCanvas(streamOn, new PdfResources(), getDocument()); PdfFormXObject xObjectOn = new PdfFormXObject(rect); drawBorder(canvasOn, xObjectOn, width, height); PdfCanvas canvasOff = new PdfCanvas(streamOff, new PdfResources(), getDocument()); PdfFormXObject xObjectOff = new PdfFormXObject(rect); drawBorder(canvasOff, xObjectOff, width, height);
PdfCanvas canvasOn = new PdfCanvas(streamOn, new PdfResources(), getDocument()); PdfFormXObject xObjectOn = new PdfFormXObject(rect); drawBorder(canvasOn, xObjectOn, width, height); PdfCanvas canvasOff = new PdfCanvas(streamOff, new PdfResources(), getDocument()); PdfFormXObject xObjectOff = new PdfFormXObject(rect); drawBorder(canvasOff, xObjectOff, width, height);
public Tiling(Rectangle bbox, float xStep, float yStep, boolean colored) { super(new PdfStream()); getPdfObject().put(PdfName.Type, PdfName.Pattern); getPdfObject().put(PdfName.PatternType, new PdfNumber(1)); getPdfObject().put(PdfName.PaintType, new PdfNumber(colored ? PaintType.COLORED : PaintType.UNCOLORED)); getPdfObject().put(PdfName.TilingType, new PdfNumber(TilingType.CONSTANT_SPACING)); getPdfObject().put(PdfName.BBox, new PdfArray(bbox)); getPdfObject().put(PdfName.XStep, new PdfNumber(xStep)); getPdfObject().put(PdfName.YStep, new PdfNumber(yStep)); resources = new PdfResources(); getPdfObject().put(PdfName.Resources, resources.getPdfObject()); }
public void handleXObject(PdfCanvasProcessor processor, Stack<CanvasTag> canvasTagHierarchy, PdfStream xObjectStream, PdfName xObjectName) { PdfDictionary resourcesDic = xObjectStream.getAsDictionary(PdfName.Resources); PdfResources resources; if (resourcesDic == null) { resources = processor.getResources(); } else { resources = new PdfResources(resourcesDic); } // we read the content bytes up here so if it fails we don't leave the graphics state stack corrupted // this is probably not necessary (if we fail on this, probably the entire content stream processing // operation should be rejected byte[] contentBytes; contentBytes = xObjectStream.getBytes(); final PdfArray matrix = xObjectStream.getAsArray(PdfName.Matrix); new PushGraphicsStateOperator().invoke(processor, null, null); if (matrix != null) { float a = matrix.getAsNumber(0).floatValue(); float b = matrix.getAsNumber(1).floatValue(); float c = matrix.getAsNumber(2).floatValue(); float d = matrix.getAsNumber(3).floatValue(); float e = matrix.getAsNumber(4).floatValue(); float f = matrix.getAsNumber(5).floatValue(); Matrix formMatrix = new Matrix(a, b, c, d, e, f); processor.getGraphicsState().updateCtm(formMatrix); } processor.processContent(contentBytes, resources); new PopGraphicsStateOperator().invoke(processor, null, null); } }