Example usage for org.apache.pdfbox.cos COSDictionary COSDictionary

List of usage examples for org.apache.pdfbox.cos COSDictionary COSDictionary

Introduction

In this page you can find the example usage for org.apache.pdfbox.cos COSDictionary COSDictionary.

Prototype

public COSDictionary() 

Source Link

Document

Constructor.

Usage

From source file:org.lockss.pdf.pdfbox.PdfBoxTokens.java

License:Open Source License

/**
 * <p>/*w w  w  .j  a  va 2 s . c  o m*/
 * Convenience method to make an empty PDF dictionary.
 * </p>
 * @return An empty PDF dictionary.
 * @since 1.56
 */
protected static PdfToken makeDictionary() {
    return makeDictionary(new COSDictionary());
}

From source file:org.pdfsam.pdfbox.component.PDDocumentHandler.java

License:Open Source License

/**
 * @return the view preferences for the underlying {@link PDDocument} or an empty dictionary if no ViewerPreferences is dictionary is found.
 *//*from w w w  . jav  a  2  s  . c  om*/
public PDViewerPreferences getViewerPreferences() {
    PDViewerPreferences retVal = document.getDocumentCatalog().getViewerPreferences();
    if (retVal == null) {
        retVal = new PDViewerPreferences(new COSDictionary());
    }
    return retVal;
}

From source file:pdfpicmangler.PDPng.java

License:Open Source License

/**
 * Construct from a stream.//from   ww  w .  ja va 2  s .  com
 * 
 * @param doc The document to create the image as part of.
 * @param is The stream that contains the png data.
 * @throws IOException If there is an error reading the png data.
 */
public PDPng(PDDocument doc, InputStream is) throws IOException {
    super(doc, "png");

    System.out.println("reading in png");

    COSDictionary dic = getCOSStream();

    dic.setItem(COSName.SUBTYPE, COSName.IMAGE);
    //dic.setItem(COSName.TYPE, COSName.XOBJECT);

    data = getCOSStream().createFilteredStream();

    readPng(is);

    setWidth(imageWidth);
    setHeight(imageHeight);
    dic.setInt(COSName.BITS_PER_COMPONENT, bitDepth);

    if ((colorType & PNG_TYPE_PALETTE) != 0) {
        getCOSStream().setItem(COSName.COLORSPACE, paldata);
    } else if ((colorType & PNG_TYPE_COLOR) != 0) {
        setColorSpace(PDDeviceRGB.INSTANCE);
    } else {
        setColorSpace(new PDDeviceGray());
    }

    COSDictionary filterParams = new COSDictionary();
    filterParams.setInt(COSName.PREDICTOR, 15); // png adaptive predictor
    filterParams.setInt(COSName.COLORS,
            ((colorType & PNG_TYPE_COLOR) == 0 || (colorType & PNG_TYPE_PALETTE) != 0) ? 1 : 3);
    filterParams.setInt(COSName.BITS_PER_COMPONENT, bitDepth);
    filterParams.setInt(COSName.COLUMNS, imageWidth);
    filterParams.setDirect(true);

    dic.setItem(COSName.DECODE_PARMS, filterParams);
    dic.setItem(COSName.FILTER, COSName.FLATE_DECODE);

    dic.setInt(COSName.LENGTH, dataLen);
    dic.getDictionaryObject(COSName.LENGTH).setDirect(true);
}

From source file:se.streamsource.streamflow.web.application.pdf.Underlay.java

License:Apache License

private PDXObjectForm importAsXObject(PDDocument target, PDPage page) throws IOException {
    final PDStream xobjectStream = new PDStream(target, page.getContents().createInputStream(), false);
    final PDXObjectForm xobject = new PDXObjectForm(xobjectStream);

    xobject.setResources(page.findResources());
    xobject.setBBox(page.findCropBox());

    COSDictionary group = new COSDictionary();
    group.setName("S", "Transparency");
    group.setBoolean(COSName.getPDFName("K"), true);
    xobject.getCOSStream().setItem(COSName.getPDFName("Group"), group);

    return xobject;
}

From source file:se.streamsource.streamflow.web.application.pdf.Underlay.java

License:Apache License

private COSStream makeUniqObjectNames(Map objectNameMap, COSStream stream) throws IOException {
    ByteArrayOutputStream baos = new ByteArrayOutputStream(10240);

    byte[] buf = new byte[10240];
    int read;//from  w  ww. jav  a 2  s.  c o m
    InputStream is = stream.getUnfilteredStream();
    while ((read = is.read(buf)) > -1) {
        baos.write(buf, 0, read);
    }

    buf = baos.toByteArray();
    baos = new ByteArrayOutputStream(buf.length + 100);
    StringBuffer sbObjectName = new StringBuffer(10);
    boolean bInObjectIdent = false;
    boolean bInText = false;
    boolean bInEscape = false;
    for (int i = 0; i < buf.length; i++) {
        byte b = buf[i];

        if (!bInEscape) {
            if (!bInText && b == '(') {
                bInText = true;
            }
            if (bInText && b == ')') {
                bInText = false;
            }
            if (b == '\\') {
                bInEscape = true;
            }

            if (!bInText && !bInEscape) {
                if (b == '/') {
                    bInObjectIdent = true;
                } else if (bInObjectIdent && Character.isWhitespace((char) b)) {
                    bInObjectIdent = false;

                    String objectName = sbObjectName.toString().substring(1);
                    String newObjectName = objectName + "overlay";
                    baos.write('/');
                    baos.write(newObjectName.getBytes());

                    objectNameMap.put(objectName, COSName.getPDFName(newObjectName));

                    sbObjectName.delete(0, sbObjectName.length());
                }
            }

            if (bInObjectIdent) {
                sbObjectName.append((char) b);
                continue;
            }
        } else {
            bInEscape = false;
        }

        baos.write(b);
    }

    COSDictionary streamDict = new COSDictionary();
    streamDict.setInt(COSName.LENGTH, baos.size());
    COSStream output = new COSStream(streamDict, pdfDocument.getDocument().getScratchFile());
    output.setFilters(stream.getFilters());
    OutputStream os = output.createUnfilteredStream();
    baos.writeTo(os);
    os.close();

    return output;
}

From source file:se.streamsource.streamflow.web.application.pdf.Underlay.java

License:Apache License

/**
 * merges two dictionaries.//from  w  ww. ja  va2 s  . c o m
 *
 * @param dest
 * @param source
 */
private void mergeDictionary(COSName name, COSDictionary dest, COSDictionary source, Map objectNameMap) {
    COSDictionary destDict = (COSDictionary) dest.getDictionaryObject(name);
    COSDictionary sourceDict = (COSDictionary) source.getDictionaryObject(name);

    if (destDict == null) {
        destDict = new COSDictionary();
        dest.setItem(name, destDict);
    }
    if (sourceDict != null) {

        for (Map.Entry<COSName, COSBase> entry : sourceDict.entrySet()) {
            COSName mappedKey = (COSName) objectNameMap.get(entry.getKey().getName());
            if (mappedKey != null) {
                destDict.setItem(mappedKey, entry.getValue());
            }
        }
    }
}