List of usage examples for com.lowagie.text.pdf PdfReader getPdfObject
public PdfObject getPdfObject(int idx)
From source file:questions.images.ResizeImage.java
public static void resizeImagesInPage(PdfReader reader, int page, float factor) throws IOException { PdfDictionary pageDictionary = reader.getPageN(page); PdfDictionary resources = (PdfDictionary) PdfReader.getPdfObject(pageDictionary.get(PdfName.RESOURCES)); PdfDictionary xobjects = (PdfDictionary) PdfReader.getPdfObject(resources.get(PdfName.XOBJECT)); if (xobjects != null) { for (Object xObjectKey : xobjects.getKeys()) { PdfName xobjectName = (PdfName) xObjectKey; PdfObject xobj = xobjects.get(xobjectName); PRStream imageStream = (PRStream) PdfReader.getPdfObject(xobj); PdfName subtype = (PdfName) PdfReader.getPdfObject(imageStream.get(PdfName.SUBTYPE)); PdfName filter = (PdfName) PdfReader.getPdfObject(imageStream.get(PdfName.FILTER)); if (PdfName.IMAGE.equals(subtype) && PdfName.DCTDECODE.equals(filter)) { BufferedImage src = ImageIO .read(new ByteArrayInputStream(PdfReader.getStreamBytesRaw(imageStream))); int width = (int) (src.getWidth() * factor); int height = (int) (src.getHeight() * factor); BufferedImage dest = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB); AffineTransform at = AffineTransform.getScaleInstance(factor, factor); Graphics2D g = dest.createGraphics(); g.drawRenderedImage(src, at); ByteArrayOutputStream newImage = new ByteArrayOutputStream(); ImageIO.write(dest, "JPG", newImage); imageStream.setData(newImage.toByteArray(), false, PRStream.NO_COMPRESSION); imageStream.put(PdfName.WIDTH, new PdfNumber(width)); imageStream.put(PdfName.HEIGHT, new PdfNumber(height)); imageStream.put(PdfName.FILTER, PdfName.DCTDECODE); }//from w w w . ja va2 s . c o m } } }
From source file:questions.javascript.AddJavaScriptToForm.java
public static void addJavaScript(String input, String output) throws IOException, DocumentException { PdfReader reader = new PdfReader(input); PdfStamper stamper = new PdfStamper(reader, new FileOutputStream(output)); stamper.getWriter()//from w w w . ja v a 2 s . c o m .addJavaScript("function setReadOnly(readonly) {" + "var partner = this.getField('partner');" + "if(readonly) {" + "partner.value = '';" + "}" + "partner.readonly = readonly;" + " }" + "function validate() {" + "var married = this.getField('married');" + "var partner = this.getField('partner');" + "if (married.value == 'yes' && partner.value == '') {" + "app.alert('please enter the name of your partner');" + "}" + "else {" + "this.submitForm({" + " cURL:\"http://1t3xt.info/examples/request.php\"," + " cSubmitAs: \"HTML\"" + "});" + "}" + " }"); AcroFields form = stamper.getAcroFields(); Item fd = form.getFieldItem("married"); PdfDictionary dictYes = (PdfDictionary) PdfReader.getPdfObject((PdfObject) fd.getWidgetRef(0)); PdfDictionary yesAction = dictYes.getAsDict(PdfName.AA); if (yesAction == null) yesAction = new PdfDictionary(); yesAction.put(new PdfName("Fo"), PdfAction.javaScript("setReadOnly(false);", stamper.getWriter())); dictYes.put(PdfName.AA, yesAction); PdfDictionary dictNo = (PdfDictionary) PdfReader.getPdfObject((PdfObject) fd.getWidgetRef(1)); PdfDictionary noAction = dictNo.getAsDict(PdfName.AA); if (noAction == null) noAction = new PdfDictionary(); noAction.put(new PdfName("Fo"), PdfAction.javaScript("setReadOnly(true);", stamper.getWriter())); dictNo.put(PdfName.AA, noAction); PdfWriter writer = stamper.getWriter(); PushbuttonField button = new PushbuttonField(writer, new Rectangle(40, 690, 200, 710), "submit"); button.setText("validate and submit"); button.setOptions(PushbuttonField.VISIBLE_BUT_DOES_NOT_PRINT); PdfFormField validateAndSubmit = button.getField(); validateAndSubmit.setAction(PdfAction.javaScript("validate();", stamper.getWriter())); stamper.addAnnotation(validateAndSubmit, 1); stamper.close(); }
From source file:questions.metadata.ReplaceXMP.java
public static void alterXmp1() { try {/*from w w w .j a va 2 s . c o m*/ PdfReader reader = new PdfReader(ORIGINAL); PdfDictionary catalog = reader.getCatalog(); PdfObject obj = catalog.get(PdfName.METADATA); PRStream stream = (PRStream) PdfReader.getPdfObject(obj); String metadata = new String(PdfReader.getStreamBytes(stream)); metadata = metadata.replaceAll("Hello World", "Hello Universe"); stream.setData(metadata.getBytes(), false); PdfStamper stamper = new PdfStamper(reader, new FileOutputStream(RESULT1)); stamper.close(); } catch (IOException e) { e.printStackTrace(); } catch (DocumentException e) { e.printStackTrace(); } }