//--------------------------------------------------------------------------------------- // Copyright (c) 2001-2012 by PDFTron Systems Inc. All Rights Reserved. // Consult legal.txt regarding legal and license information. //--------------------------------------------------------------------------------------- import pdftron.PDF.*; import pdftron.SDF.SDFDoc; public class EditTextTest { public static void main(String[] args) { PDFNet.initialize(); // Relative path to the folder containing test files. String input_path = "../../TestFiles/"; String output_path = "../../TestFiles/Output/"; try { System.out.println("-------------------------------------------------"); PDFDoc doc=new PDFDoc((input_path + "newsletter.pdf")); doc.initSecurityHandler(); int num_pages = doc.getPageCount(); ElementWriter writer=new ElementWriter(); ElementReader reader=new ElementReader(); Element element; for (int i = 1; i <= num_pages; ++i) { PageIterator itr = doc.getPageIterator(i); Page page=(Page)(itr.next()); reader.begin(page); Page new_page = doc.pageCreate(); PageIterator next_page = itr; doc.pageInsert(next_page, new_page ); writer.begin(new_page); while ((element = reader.next()) != null) // Read page contents { if (element.getType() == Element.e_text) { // Set all text to blue color. GState gs = element.getGState(); gs.setFillColorSpace(ColorSpace.createDeviceRGB()); gs.setFillColor(new ColorPt(0, 0, 1)); byte[] text_arr = element.getTextData(); int size = text_arr.length; byte[] text_arr_new = new byte[size]; boolean bUnicode = false; if (size > 2) { if (text_arr[0] == 254 && text_arr[1] == 255) { bUnicode = true; for (int n = 0; n < size; n++) { //copy Unicode string as is text_arr_new[n] = text_arr[n]; } } } if (!bUnicode) { for (int n = 0; n < size; n++) { //replace 'c' with 'k' and 'k' with 'c' switch (text_arr[n]) { case 99: text_arr_new[n] = 107; break; case 107: text_arr_new[n] = 99; break; default: text_arr_new[n] = text_arr[n]; } } } element.setTextData(text_arr_new); writer.writeElement(element); } else if (element.getType() == Element.e_image) { // remove all images continue; } else { writer.writeElement(element); } } writer.end(); reader.end(); new_page.setMediaBox(page.getCropBox()); doc.pageRemove(doc.getPageIterator(i)); } doc.save((output_path + "newsletter_ed.pdf"), SDFDoc.e_remove_unused , null); // doc.Save(output_path + "newsletter_ed.pdf").c_str(), Doc::e_linearized , NULL); doc.close(); System.out.println("Done. Result saved in newsletter_ed.pdf..."); } catch(Exception e) { e.printStackTrace(); } PDFNet.terminate(); } }