Java Code Examples for com.lowagie.text.pdf.PdfDictionary#put()

The following examples show how to use com.lowagie.text.pdf.PdfDictionary#put() . You can vote up the ones you like or vote down the ones you don't like, and go to the original project or source file by following the links above each example. You may check out the related API usage on the sidebar.
Example 1
Source File: PdfXConformanceImp.java    From gcs with Mozilla Public License 2.0 6 votes vote down vote up
public void completeInfoDictionary(PdfDictionary info) {
    if (isPdfX() && !isPdfA1()) {
        if (info.get(PdfName.GTS_PDFXVERSION) == null) {
            if (isPdfX1A2001()) {
                info.put(PdfName.GTS_PDFXVERSION, new PdfString("PDF/X-1:2001"));
                info.put(new PdfName("GTS_PDFXConformance"), new PdfString("PDF/X-1a:2001"));
            }
            else if (isPdfX32002())
                info.put(PdfName.GTS_PDFXVERSION, new PdfString("PDF/X-3:2002"));
        }
        if (info.get(PdfName.TITLE) == null) {
            info.put(PdfName.TITLE, new PdfString("Pdf document"));
        }
        if (info.get(PdfName.CREATOR) == null) {
            info.put(PdfName.CREATOR, new PdfString("Unknown"));
        }
        if (info.get(PdfName.TRAPPED) == null) {
            info.put(PdfName.TRAPPED, new PdfName("False"));
        }
    }
}
 
Example 2
Source File: PdfGlyphRenderer.java    From jasperreports with GNU Lesser General Public License v3.0 6 votes vote down vote up
@Override
public void draw()
{
	if (addActualText)
	{
		PdfDictionary markedContentProps = new PdfDictionary();
		markedContentProps.put(PdfName.ACTUALTEXT, new PdfString(allText, PdfObject.TEXT_UNICODE));
		pdfContentByte.beginMarkedContentSequence(PdfName.SPAN, markedContentProps, true);
	}
	
	TabSegment segment = segments.get(segmentIndex);
	segment.layout.draw(
			pdfGraphics2D,
			x + drawPosX,// + leftPadding,
			y + topPadding + verticalAlignOffset + drawPosY
			);
	
	if (addActualText)
	{
		pdfContentByte.endMarkedContentSequence();
	}
	
	return;
}
 
Example 3
Source File: PdfXConformanceImp.java    From itext2 with GNU Lesser General Public License v3.0 6 votes vote down vote up
public void completeInfoDictionary(PdfDictionary info) {
    if (isPdfX() && !isPdfA1()) {
        if (info.get(PdfName.GTS_PDFXVERSION) == null) {
            if (isPdfX1A2001()) {
                info.put(PdfName.GTS_PDFXVERSION, new PdfString("PDF/X-1:2001"));
                info.put(new PdfName("GTS_PDFXConformance"), new PdfString("PDF/X-1a:2001"));
            }
            else if (isPdfX32002())
                info.put(PdfName.GTS_PDFXVERSION, new PdfString("PDF/X-3:2002"));
        }
        if (info.get(PdfName.TITLE) == null) {
            info.put(PdfName.TITLE, new PdfString("Pdf document"));
        }
        if (info.get(PdfName.CREATOR) == null) {
            info.put(PdfName.CREATOR, new PdfString("Unknown"));
        }
        if (info.get(PdfName.TRAPPED) == null) {
            info.put(PdfName.TRAPPED, new PdfName("False"));
        }
    }
}
 
Example 4
Source File: BmpImage.java    From itext2 with GNU Lesser General Public License v3.0 5 votes vote down vote up
private Image indexedModel(byte bdata[], int bpc, int paletteEntries) throws BadElementException {
    Image img = new ImgRaw(width, height, 1, bpc, bdata);
    PdfArray colorspace = new PdfArray();
    colorspace.add(PdfName.INDEXED);
    colorspace.add(PdfName.DEVICERGB);
    byte np[] = getPalette(paletteEntries);
    int len = np.length;
    colorspace.add(new PdfNumber(len / 3 - 1));
    colorspace.add(new PdfString(np));
    PdfDictionary ad = new PdfDictionary();
    ad.put(PdfName.COLORSPACE, colorspace);
    img.setAdditional(ad);
    return img;
}
 
Example 5
Source File: PdfVersionImp.java    From gcs with Mozilla Public License 2.0 5 votes vote down vote up
/** Adds the version to the Catalog dictionary. */
public void addToCatalog(PdfDictionary catalog) {
	if(catalog_version != null) {
		catalog.put(PdfName.VERSION, catalog_version);
	}
	if (extensions != null) {
		catalog.put(PdfName.EXTENSIONS, extensions);
	}
}
 
Example 6
Source File: PaperightPdfConverter.java    From website with GNU Affero General Public License v3.0 5 votes vote down vote up
public String cropPdf(String pdfFilePath) throws DocumentException, IOException, Exception {
	String filename = FilenameUtils.getBaseName(pdfFilePath) + "_cropped." + FilenameUtils.getExtension(pdfFilePath);
	filename = FilenameUtils.concat(System.getProperty("java.io.tmpdir"), filename);
	PdfReader reader = new PdfReader(pdfFilePath);
	try {
		PdfStamper stamper = new PdfStamper(reader, new FileOutputStream(filename));
		try {
			for (int i = 1; i <= reader.getNumberOfPages(); i++) {
				PdfDictionary pdfDictionary = reader.getPageN(i);
				PdfArray cropArray = new PdfArray();
				Rectangle box = getSmallestBox(reader, i);
				//Rectangle cropbox = reader.getCropBox(i);
				if (box != null) {
					cropArray.add(new PdfNumber(box.getLeft()));
					cropArray.add(new PdfNumber(box.getBottom()));
					cropArray.add(new PdfNumber(box.getLeft() + box.getWidth()));
					cropArray.add(new PdfNumber(box.getBottom() + box.getHeight()));
					pdfDictionary.put(PdfName.CROPBOX, cropArray);
					pdfDictionary.put(PdfName.MEDIABOX, cropArray);
					pdfDictionary.put(PdfName.TRIMBOX, cropArray);
					pdfDictionary.put(PdfName.BLEEDBOX, cropArray);
				}
			}
			return filename;
		} finally {
			stamper.close();
		}
	} catch (Exception e) {
		logger.error(e.getMessage(), e);
		throw e;
	} finally {
		reader.close();
	}
}
 
Example 7
Source File: PdfCollectionItem.java    From itext2 with GNU Lesser General Public License v3.0 5 votes vote down vote up
/**
 * Adds a prefix for the Collection item.
 * You can only use this method after you have set the value of the item.
 * @param prefix	a prefix
 */
public void setPrefix(String key, String prefix) {
	PdfName fieldname = new PdfName(key);
	PdfObject o = get(fieldname);
	if (o == null)
		throw new IllegalArgumentException("You must set a value before adding a prefix.");
	PdfDictionary dict = new PdfDictionary(PdfName.COLLECTIONSUBITEM);
	dict.put(PdfName.D, o);
	dict.put(PdfName.P, new PdfString(prefix, PdfObject.TEXT_UNICODE));
	put(fieldname, dict);
}
 
Example 8
Source File: PdfViewerPreferencesImp.java    From gcs with Mozilla Public License 2.0 5 votes vote down vote up
/**
 * Adds the viewer preferences defined in the preferences parameter to a
 * PdfDictionary (more specifically the root or catalog of a PDF file).
 * 
 * @param catalog
 */
public void addToCatalog(PdfDictionary catalog) {
	// Page Layout
	catalog.remove(PdfName.PAGELAYOUT);
	if ((pageLayoutAndMode & PdfWriter.PageLayoutSinglePage) != 0)
		catalog.put(PdfName.PAGELAYOUT, PdfName.SINGLEPAGE);
	else if ((pageLayoutAndMode & PdfWriter.PageLayoutOneColumn) != 0)
		catalog.put(PdfName.PAGELAYOUT, PdfName.ONECOLUMN);
	else if ((pageLayoutAndMode & PdfWriter.PageLayoutTwoColumnLeft) != 0)
		catalog.put(PdfName.PAGELAYOUT, PdfName.TWOCOLUMNLEFT);
	else if ((pageLayoutAndMode & PdfWriter.PageLayoutTwoColumnRight) != 0)
		catalog.put(PdfName.PAGELAYOUT, PdfName.TWOCOLUMNRIGHT);
	else if ((pageLayoutAndMode & PdfWriter.PageLayoutTwoPageLeft) != 0)
		catalog.put(PdfName.PAGELAYOUT, PdfName.TWOPAGELEFT);
	else if ((pageLayoutAndMode & PdfWriter.PageLayoutTwoPageRight) != 0)
		catalog.put(PdfName.PAGELAYOUT, PdfName.TWOPAGERIGHT);

	// Page Mode
	catalog.remove(PdfName.PAGEMODE);
	if ((pageLayoutAndMode & PdfWriter.PageModeUseNone) != 0)
		catalog.put(PdfName.PAGEMODE, PdfName.USENONE);
	else if ((pageLayoutAndMode & PdfWriter.PageModeUseOutlines) != 0)
		catalog.put(PdfName.PAGEMODE, PdfName.USEOUTLINES);
	else if ((pageLayoutAndMode & PdfWriter.PageModeUseThumbs) != 0)
		catalog.put(PdfName.PAGEMODE, PdfName.USETHUMBS);
	else if ((pageLayoutAndMode & PdfWriter.PageModeFullScreen) != 0)
		catalog.put(PdfName.PAGEMODE, PdfName.FULLSCREEN);
	else if ((pageLayoutAndMode & PdfWriter.PageModeUseOC) != 0)
		catalog.put(PdfName.PAGEMODE, PdfName.USEOC);
	else if ((pageLayoutAndMode & PdfWriter.PageModeUseAttachments) != 0)
		catalog.put(PdfName.PAGEMODE, PdfName.USEATTACHMENTS);

	// viewer preferences (Table 8.1 of the PDF Reference)
	catalog.remove(PdfName.VIEWERPREFERENCES);
	if (viewerPreferences.size() > 0) {
		catalog.put(PdfName.VIEWERPREFERENCES, viewerPreferences);
	}
}
 
Example 9
Source File: PdfViewerPreferencesImp.java    From itext2 with GNU Lesser General Public License v3.0 5 votes vote down vote up
/**
 * Adds the viewer preferences defined in the preferences parameter to a
 * PdfDictionary (more specifically the root or catalog of a PDF file).
 * 
 * @param catalog
 */
public void addToCatalog(PdfDictionary catalog) {
	// Page Layout
	catalog.remove(PdfName.PAGELAYOUT);
	if ((pageLayoutAndMode & PdfWriter.PageLayoutSinglePage) != 0)
		catalog.put(PdfName.PAGELAYOUT, PdfName.SINGLEPAGE);
	else if ((pageLayoutAndMode & PdfWriter.PageLayoutOneColumn) != 0)
		catalog.put(PdfName.PAGELAYOUT, PdfName.ONECOLUMN);
	else if ((pageLayoutAndMode & PdfWriter.PageLayoutTwoColumnLeft) != 0)
		catalog.put(PdfName.PAGELAYOUT, PdfName.TWOCOLUMNLEFT);
	else if ((pageLayoutAndMode & PdfWriter.PageLayoutTwoColumnRight) != 0)
		catalog.put(PdfName.PAGELAYOUT, PdfName.TWOCOLUMNRIGHT);
	else if ((pageLayoutAndMode & PdfWriter.PageLayoutTwoPageLeft) != 0)
		catalog.put(PdfName.PAGELAYOUT, PdfName.TWOPAGELEFT);
	else if ((pageLayoutAndMode & PdfWriter.PageLayoutTwoPageRight) != 0)
		catalog.put(PdfName.PAGELAYOUT, PdfName.TWOPAGERIGHT);

	// Page Mode
	catalog.remove(PdfName.PAGEMODE);
	if ((pageLayoutAndMode & PdfWriter.PageModeUseNone) != 0)
		catalog.put(PdfName.PAGEMODE, PdfName.USENONE);
	else if ((pageLayoutAndMode & PdfWriter.PageModeUseOutlines) != 0)
		catalog.put(PdfName.PAGEMODE, PdfName.USEOUTLINES);
	else if ((pageLayoutAndMode & PdfWriter.PageModeUseThumbs) != 0)
		catalog.put(PdfName.PAGEMODE, PdfName.USETHUMBS);
	else if ((pageLayoutAndMode & PdfWriter.PageModeFullScreen) != 0)
		catalog.put(PdfName.PAGEMODE, PdfName.FULLSCREEN);
	else if ((pageLayoutAndMode & PdfWriter.PageModeUseOC) != 0)
		catalog.put(PdfName.PAGEMODE, PdfName.USEOC);
	else if ((pageLayoutAndMode & PdfWriter.PageModeUseAttachments) != 0)
		catalog.put(PdfName.PAGEMODE, PdfName.USEATTACHMENTS);

	// viewer preferences (Table 8.1 of the PDF Reference)
	catalog.remove(PdfName.VIEWERPREFERENCES);
	if (viewerPreferences.size() > 0) {
		catalog.put(PdfName.VIEWERPREFERENCES, viewerPreferences);
	}
}
 
Example 10
Source File: ITextPDFSignatureService.java    From dss with GNU Lesser General Public License v2.1 5 votes vote down vote up
@Override
public DSSDocument sign(DSSDocument toSignDocument, byte[] signatureValue, PAdESCommonParameters parameters) {

	checkDocumentPermissions(toSignDocument, parameters.getPasswordProtection());

	try (InputStream is = toSignDocument.openStream(); ByteArrayOutputStream baos = new ByteArrayOutputStream()) {
		PdfStamper stp = prepareStamper(is, baos, parameters);
		PdfSignatureAppearance sap = stp.getSignatureAppearance();

		byte[] pk = signatureValue;
		int csize = parameters.getContentSize();
		if (csize < pk.length) {
			throw new DSSException(
					String.format("The signature size [%s] is too small for the signature value with a length [%s]",
							csize, pk.length));
		}

		byte[] outc = new byte[csize];
		System.arraycopy(pk, 0, outc, 0, pk.length);

		PdfDictionary dic = new PdfDictionary();
		dic.put(PdfName.CONTENTS, new PdfString(outc).setHexWriting(true));
		sap.close(dic);

		DSSDocument signature = new InMemoryDocument(baos.toByteArray());
		signature.setMimeType(MimeType.PDF);
		return signature;
	} catch (Exception e) {
		throw new DSSException(e);
	}
}
 
Example 11
Source File: PdfXConformanceImp.java    From gcs with Mozilla Public License 2.0 5 votes vote down vote up
public void completeExtraCatalog(PdfDictionary extraCatalog) {
    if (isPdfX() && !isPdfA1()) {
        if (extraCatalog.get(PdfName.OUTPUTINTENTS) == null) {
            PdfDictionary out = new PdfDictionary(PdfName.OUTPUTINTENT);
            out.put(PdfName.OUTPUTCONDITION, new PdfString("SWOP CGATS TR 001-1995"));
            out.put(PdfName.OUTPUTCONDITIONIDENTIFIER, new PdfString("CGATS TR 001"));
            out.put(PdfName.REGISTRYNAME, new PdfString("http://www.color.org"));
            out.put(PdfName.INFO, new PdfString(""));
            out.put(PdfName.S, PdfName.GTS_PDFX);
            extraCatalog.put(PdfName.OUTPUTINTENTS, new PdfArray(out));
        }
    }
}
 
Example 12
Source File: PdfVersionImp.java    From itext2 with GNU Lesser General Public License v3.0 5 votes vote down vote up
/** Adds the version to the Catalog dictionary. */
public void addToCatalog(PdfDictionary catalog) {
	if(catalog_version != null) {
		catalog.put(PdfName.VERSION, catalog_version);
	}
	if (extensions != null) {
		catalog.put(PdfName.EXTENSIONS, extensions);
	}
}
 
Example 13
Source File: PdfCollectionItem.java    From gcs with Mozilla Public License 2.0 5 votes vote down vote up
/**
 * Adds a prefix for the Collection item.
 * You can only use this method after you have set the value of the item.
 * @param prefix	a prefix
 */
public void setPrefix(String key, String prefix) {
	PdfName fieldname = new PdfName(key);
	PdfObject o = get(fieldname);
	if (o == null)
		throw new IllegalArgumentException("You must set a value before adding a prefix.");
	PdfDictionary dict = new PdfDictionary(PdfName.COLLECTIONSUBITEM);
	dict.put(PdfName.D, o);
	dict.put(PdfName.P, new PdfString(prefix, PdfObject.TEXT_UNICODE));
	put(fieldname, dict);
}
 
Example 14
Source File: JRPdfExporterTagHelper.java    From jasperreports with GNU Lesser General Public License v3.0 5 votes vote down vote up
protected void startText(String text, boolean isHyperlink)
{
	if (isTagged)
	{
		PdfDictionary markedContentProps = new PdfDictionary();
		markedContentProps.put(PdfName.ACTUALTEXT, new PdfString(text, PdfObject.TEXT_UNICODE));
		PdfStructureElement textTag = new PdfStructureElement(tagStack.peek(), isHyperlink ? PdfName.LINK : PdfName.TEXT);
		// the following method is part of the patched iText
		pdfContentByte.beginMarkedContentSequence(textTag, markedContentProps);
	}
}
 
Example 15
Source File: PngImage.java    From itext2 with GNU Lesser General Public License v3.0 4 votes vote down vote up
PdfObject getColorspace() {
    if (icc_profile != null) {
        if ((colorType & 2) == 0)
            return PdfName.DEVICEGRAY;
        else
            return PdfName.DEVICERGB;
    }
    if (gamma == 1f && !hasCHRM) {
        if ((colorType & 2) == 0)
            return PdfName.DEVICEGRAY;
        else
            return PdfName.DEVICERGB;
    }
    else {
        PdfArray array = new PdfArray();
        PdfDictionary dic = new PdfDictionary();
        if ((colorType & 2) == 0) {
            if (gamma == 1f)
                return PdfName.DEVICEGRAY;
            array.add(PdfName.CALGRAY);
            dic.put(PdfName.GAMMA, new PdfNumber(gamma));
            dic.put(PdfName.WHITEPOINT, new PdfLiteral("[1 1 1]"));
            array.add(dic);
        }
        else {
            PdfObject wp = new PdfLiteral("[1 1 1]");
            array.add(PdfName.CALRGB);
            if (gamma != 1f) {
                PdfArray gm = new PdfArray();
                PdfNumber n = new PdfNumber(gamma);
                gm.add(n);
                gm.add(n);
                gm.add(n);
                dic.put(PdfName.GAMMA, gm);
            }
            if (hasCHRM) {
                float z = yW*((xG-xB)*yR-(xR-xB)*yG+(xR-xG)*yB);
                float YA = yR*((xG-xB)*yW-(xW-xB)*yG+(xW-xG)*yB)/z;
                float XA = YA*xR/yR;
                float ZA = YA*((1-xR)/yR-1);
                float YB = -yG*((xR-xB)*yW-(xW-xB)*yR+(xW-xR)*yB)/z;
                float XB = YB*xG/yG;
                float ZB = YB*((1-xG)/yG-1);
                float YC = yB*((xR-xG)*yW-(xW-xG)*yW+(xW-xR)*yG)/z;
                float XC = YC*xB/yB;
                float ZC = YC*((1-xB)/yB-1);
                float XW = XA+XB+XC;
                float YW = 1;//YA+YB+YC;
                float ZW = ZA+ZB+ZC;
                PdfArray wpa = new PdfArray();
                wpa.add(new PdfNumber(XW));
                wpa.add(new PdfNumber(YW));
                wpa.add(new PdfNumber(ZW));
                wp = wpa;
                PdfArray matrix = new PdfArray();
                matrix.add(new PdfNumber(XA));
                matrix.add(new PdfNumber(YA));
                matrix.add(new PdfNumber(ZA));
                matrix.add(new PdfNumber(XB));
                matrix.add(new PdfNumber(YB));
                matrix.add(new PdfNumber(ZB));
                matrix.add(new PdfNumber(XC));
                matrix.add(new PdfNumber(YC));
                matrix.add(new PdfNumber(ZC));
                dic.put(PdfName.MATRIX, matrix);
            }
            dic.put(PdfName.WHITEPOINT, wp);
            array.add(dic);
        }
        return array;
    }
}
 
Example 16
Source File: OrderedLayersTest.java    From itext2 with GNU Lesser General Public License v3.0 4 votes vote down vote up
/**
 * Demonstrates how to order optional content groups.
 * 
 * @param args
 *            no arguments needed
 */
@Test
public void main() throws Exception {
	// step 1
	Document document = new Document(PageSize.A4, 50, 50, 50, 50);
	// step 2
	PdfWriter writer = PdfWriter.getInstance(document,
			PdfTestBase.getOutputStream("orderedlayers.pdf"));
	writer.setPdfVersion(PdfWriter.VERSION_1_5);
	writer.setViewerPreferences(PdfWriter.PageModeUseOC);
	// step 3
	document.open();
	// step 4
	PdfContentByte cb = writer.getDirectContent();
	Phrase explanation = new Phrase("Ordered layers", new Font(
			Font.HELVETICA, 20, Font.BOLD, Color.red));
	ColumnText.showTextAligned(cb, Element.ALIGN_LEFT, explanation, 50,
			650, 0);
	PdfLayer l1 = new PdfLayer("Layer 1", writer);
	PdfLayer l2 = new PdfLayer("Layer 2", writer);
	PdfLayer l3 = new PdfLayer("Layer 3", writer);
	PdfLayerMembership m1 = new PdfLayerMembership(writer);
	m1.addMember(l2);
	m1.addMember(l3);
	Phrase p1 = new Phrase("Text in layer 1");
	Phrase p2 = new Phrase("Text in layer 2 or layer 3");
	Phrase p3 = new Phrase("Text in layer 3");
	cb.beginLayer(l1);
	ColumnText.showTextAligned(cb, Element.ALIGN_LEFT, p1, 50, 600, 0);
	cb.endLayer();
	cb.beginLayer(m1);
	ColumnText.showTextAligned(cb, Element.ALIGN_LEFT, p2, 50, 550, 0);
	cb.endLayer();
	cb.beginLayer(l3);
	ColumnText.showTextAligned(cb, Element.ALIGN_LEFT, p3, 50, 500, 0);
	cb.endLayer();
	cb.sanityCheck();

	PdfOCProperties p = writer.getOCProperties();
	PdfArray order = new PdfArray();
	order.add(l1.getRef());
	order.add(l2.getRef());
	order.add(l3.getRef());
	PdfDictionary d = new PdfDictionary();
	d.put(PdfName.ORDER, order);
	p.put(PdfName.D, d);
	// step 5
	document.close();
}
 
Example 17
Source File: NestedLayersTest.java    From itext2 with GNU Lesser General Public License v3.0 4 votes vote down vote up
/**
 * Demonstrates the use of nested layers
 * 
 * @param args
 *            no arguments needed
 */
@Test
public void main() throws Exception {
	// step 1
	Document document = new Document(PageSize.A4, 50, 50, 50, 50);
	// step 2
	PdfWriter writer = PdfWriter.getInstance(document,
			PdfTestBase.getOutputStream("nestedlayers.pdf"));
	writer.setPdfVersion(PdfWriter.VERSION_1_5);
	writer.setViewerPreferences(PdfWriter.PageModeUseOC);
	// step 3
	document.open();
	// step 4
	PdfContentByte cb = writer.getDirectContent();
	Phrase explanation = new Phrase("Layer nesting", new Font(
			Font.HELVETICA, 20, Font.BOLD, Color.red));
	ColumnText.showTextAligned(cb, Element.ALIGN_LEFT, explanation, 50,
			650, 0);
	PdfLayer l1 = new PdfLayer("Layer 1", writer);
	PdfLayer l23 = new PdfLayer("Top Layer 2 3", writer);
	PdfLayer l2 = new PdfLayer("Layer 2", writer);
	PdfLayer l3 = new PdfLayer("Layer 3", writer);
	Phrase p1 = new Phrase("Text in layer 1");
	Phrase p2 = new Phrase("Text in layer 2");
	Phrase p3 = new Phrase("Text in layer 3");
	cb.beginLayer(l1);
	ColumnText.showTextAligned(cb, Element.ALIGN_LEFT, p1, 50, 600, 0);
	cb.endLayer();
	cb.beginLayer(l23);
	cb.beginLayer(l2);
	ColumnText.showTextAligned(cb, Element.ALIGN_LEFT, p2, 50, 550, 0);
	cb.endLayer();
	cb.beginLayer(l3);
	ColumnText.showTextAligned(cb, Element.ALIGN_LEFT, p3, 50, 500, 0);
	cb.endLayer();
	cb.endLayer();
	cb.sanityCheck();

	PdfOCProperties p = writer.getOCProperties();
	PdfArray order = new PdfArray();
	order.add(l1.getRef());
	order.add(l23.getRef());
	PdfArray group = new PdfArray();
	group.add(l2.getRef());
	group.add(l3.getRef());
	order.add(group);
	PdfDictionary d = new PdfDictionary();
	d.put(PdfName.ORDER, order);
	p.put(PdfName.D, d);
	// step 5
	document.close();
}
 
Example 18
Source File: ContentGroupsTest.java    From itext2 with GNU Lesser General Public License v3.0 4 votes vote down vote up
/**
    * Demonstrates how to group optional content.
    */
@Test
public void main() throws Exception {
       	// step 1
           Document document = new Document(PageSize.A4, 50, 50, 50, 50);
           // step 2
           PdfWriter writer = PdfWriter.getInstance(document, PdfTestBase.getOutputStream( "contentgroups.pdf"));
           writer.setPdfVersion(PdfWriter.VERSION_1_5);
           writer.setViewerPreferences(PdfWriter.PageModeUseOC);
           // step 3
           document.open();
           // step 4
           PdfContentByte cb = writer.getDirectContent();
           Phrase explanation = new Phrase("Layer grouping", new Font(Font.HELVETICA, 20, Font.BOLD, Color.red));
           ColumnText.showTextAligned(cb, Element.ALIGN_LEFT, explanation, 50, 650, 0);
           PdfLayer l1 = new PdfLayer("Layer 1", writer);
           PdfLayer l2 = new PdfLayer("Layer 2", writer);
           PdfLayer l3 = new PdfLayer("Layer 3", writer);
           PdfLayerMembership m1 = new PdfLayerMembership(writer);
           m1.addMember(l2);
           m1.addMember(l3);
           Phrase p1 = new Phrase("Text in layer 1");
           Phrase p2 = new Phrase("Text in layer 2 or layer 3");
           Phrase p3 = new Phrase("Text in layer 3");
           cb.beginLayer(l1);
           ColumnText.showTextAligned(cb, Element.ALIGN_LEFT, p1, 50, 600, 0);
           cb.endLayer();
           cb.beginLayer(m1);
           ColumnText.showTextAligned(cb, Element.ALIGN_LEFT, p2, 50, 550, 0);
           cb.endLayer();
           cb.beginLayer(l3);
           ColumnText.showTextAligned(cb, Element.ALIGN_LEFT, p3, 50, 500, 0);
           cb.endLayer();
           cb.sanityCheck();
           
           PdfOCProperties p = writer.getOCProperties();
           PdfArray order = new PdfArray();
           order.add(l1.getRef());
           PdfArray group = new PdfArray();
           group.add(new PdfString("A group of two", PdfObject.TEXT_UNICODE));
           group.add(l2.getRef());
           group.add(l3.getRef());
           order.add(group);
           PdfDictionary d = new PdfDictionary();
           d.put(PdfName.ORDER, order);
           p.put(PdfName.D, d);
           // step 5
           document.close();
   }
 
Example 19
Source File: PngImage.java    From gcs with Mozilla Public License 2.0 4 votes vote down vote up
PdfObject getColorspace() {
    if (icc_profile != null) {
        if ((colorType & 2) == 0)
            return PdfName.DEVICEGRAY;
        else
            return PdfName.DEVICERGB;
    }
    if (gamma == 1f && !hasCHRM) {
        if ((colorType & 2) == 0)
            return PdfName.DEVICEGRAY;
        else
            return PdfName.DEVICERGB;
    }
    else {
        PdfArray array = new PdfArray();
        PdfDictionary dic = new PdfDictionary();
        if ((colorType & 2) == 0) {
            if (gamma == 1f)
                return PdfName.DEVICEGRAY;
            array.add(PdfName.CALGRAY);
            dic.put(PdfName.GAMMA, new PdfNumber(gamma));
            dic.put(PdfName.WHITEPOINT, new PdfLiteral("[1 1 1]"));
            array.add(dic);
        }
        else {
            PdfObject wp = new PdfLiteral("[1 1 1]");
            array.add(PdfName.CALRGB);
            if (gamma != 1f) {
                PdfArray gm = new PdfArray();
                PdfNumber n = new PdfNumber(gamma);
                gm.add(n);
                gm.add(n);
                gm.add(n);
                dic.put(PdfName.GAMMA, gm);
            }
            if (hasCHRM) {
                float z = yW*((xG-xB)*yR-(xR-xB)*yG+(xR-xG)*yB);
                float YA = yR*((xG-xB)*yW-(xW-xB)*yG+(xW-xG)*yB)/z;
                float XA = YA*xR/yR;
                float ZA = YA*((1-xR)/yR-1);
                float YB = -yG*((xR-xB)*yW-(xW-xB)*yR+(xW-xR)*yB)/z;
                float XB = YB*xG/yG;
                float ZB = YB*((1-xG)/yG-1);
                float YC = yB*((xR-xG)*yW-(xW-xG)*yW+(xW-xR)*yG)/z;
                float XC = YC*xB/yB;
                float ZC = YC*((1-xB)/yB-1);
                float XW = XA+XB+XC;
                float YW = 1;//YA+YB+YC;
                float ZW = ZA+ZB+ZC;
                PdfArray wpa = new PdfArray();
                wpa.add(new PdfNumber(XW));
                wpa.add(new PdfNumber(YW));
                wpa.add(new PdfNumber(ZW));
                wp = wpa;
                PdfArray matrix = new PdfArray();
                matrix.add(new PdfNumber(XA));
                matrix.add(new PdfNumber(YA));
                matrix.add(new PdfNumber(ZA));
                matrix.add(new PdfNumber(XB));
                matrix.add(new PdfNumber(YB));
                matrix.add(new PdfNumber(ZB));
                matrix.add(new PdfNumber(XC));
                matrix.add(new PdfNumber(YC));
                matrix.add(new PdfNumber(ZC));
                dic.put(PdfName.MATRIX, matrix);
            }
            dic.put(PdfName.WHITEPOINT, wp);
            array.add(dic);
        }
        return array;
    }
}
 
Example 20
Source File: ChartPdfHandler.java    From jasperreports with GNU Lesser General Public License v3.0 4 votes vote down vote up
@Override
public void exportElement(JRPdfExporterContext exporterContext,
		JRGenericPrintElement element)
{
	try
	{
		PdfWriter writer = exporterContext.getPdfWriter();
		PdfIndirectObject swfRef;
		boolean newContext = !existingContexts.containsKey(exporterContext);
		if (newContext)
		{
			// add the Adobe 1.7 extensions catalog dictionary
			PdfDictionary extensions = new PdfDictionary();
			PdfDictionary adobeExtension = new PdfDictionary();
			adobeExtension.put(new PdfName("BaseVersion"), PdfWriter.PDF_VERSION_1_7);
			adobeExtension.put(new PdfName("ExtensionLevel"), new PdfNumber(3));
			extensions.put(new PdfName("ADBE"), adobeExtension);
			writer.getExtraCatalog().put(new PdfName("Extensions"), extensions);
			
			// add the swf file
			byte[] swfData = readSwf();
			PdfFileSpecification swfFile = PdfFileSpecification.fileEmbedded(writer, 
					null, "Open Flash Chart", swfData);
			swfRef = writer.addToBody(swfFile);
			existingContexts.put(exporterContext, swfRef);
		}
		else
		{
			swfRef = existingContexts.get(exporterContext);
		}
		
		Rectangle rect = new Rectangle(element.getX() + exporterContext.getOffsetX(), 
				exporterContext.getExportedReport().getPageHeight() - element.getY() - exporterContext.getOffsetY(), 
				element.getX() + exporterContext.getOffsetX() + element.getWidth(),
				exporterContext.getExportedReport().getPageHeight() - element.getY() - exporterContext.getOffsetY() - element.getHeight());
		PdfAnnotation ann = new PdfAnnotation(writer, rect);
		ann.put(PdfName.SUBTYPE, new PdfName("RichMedia"));
		
		PdfDictionary settings = new PdfDictionary();
		PdfDictionary activation = new PdfDictionary();
		activation.put(new PdfName("Condition"), new PdfName("PV"));
		settings.put(new PdfName("Activation"), activation);
		ann.put(new PdfName("RichMediaSettings"), settings);
		
		PdfDictionary content = new PdfDictionary();
		
		HashMap<String, PdfIndirectReference> assets = new HashMap<String, PdfIndirectReference>();
		assets.put("map.swf", swfRef.getIndirectReference());
		PdfDictionary assetsDictionary = PdfNameTree.writeTree(assets, writer);
		content.put(new PdfName("Assets"), assetsDictionary);
		
		PdfArray configurations = new PdfArray();
		PdfDictionary configuration = new PdfDictionary();
		
		PdfArray instances = new PdfArray();
		PdfDictionary instance = new PdfDictionary();
		instance.put(new PdfName("Subtype"), new PdfName("Flash"));
		PdfDictionary params = new PdfDictionary();
		
		String chartData = (String) element.getParameterValue(PARAMETER_CHART_DATA);
		String vars = "inline_data=" + chartData;
		params.put(new PdfName("FlashVars"), new PdfString(vars));
		instance.put(new PdfName("Params"), params);
		instance.put(new PdfName("Asset"), swfRef.getIndirectReference());
		PdfIndirectObject instanceRef = writer.addToBody(instance);
		instances.add(instanceRef.getIndirectReference());
		configuration.put(new PdfName("Instances"), instances);
		
		PdfIndirectObject configurationRef = writer.addToBody(configuration);
		configurations.add(configurationRef.getIndirectReference());
		content.put(new PdfName("Configurations"), configurations);
		
		ann.put(new PdfName("RichMediaContent"), content);
		
		writer.addAnnotation(ann);
	}
	catch (Exception e)
	{
		throw new RuntimeException(e);
	}
}