DigitalYours Coder

Icon

Source Code heaven PHP, Java, VB, Delphi, MySQL trick and tips

Split PDF Files in Java Using iText JAR

public static void splitPDF(InputStream inputStream,
		OutputStream outputStream, int fromPage, int toPage) {
	Document document = new Document();
	try {
		PdfReader inputPDF = new PdfReader(inputStream);

		int totalPages = inputPDF.getNumberOfPages();

		//make fromPage equals to toPage if it is greater
		if(fromPage > toPage ) {
			fromPage = toPage;
		}
		if(toPage > totalPages) {
			toPage = totalPages;
		}

		// Create a writer for the outputstream
		PdfWriter writer = PdfWriter.getInstance(document, outputStream);

		document.open();
		PdfContentByte cb = writer.getDirectContent(); // Holds the PDF data
		PdfImportedPage page;

		while(fromPage <= toPage) {
			document.newPage();
			page = writer.getImportedPage(inputPDF, fromPage);
			cb.addTemplate(page, 0, 0);
			fromPage++;
		}
		outputStream.flush();
		document.close();
		outputStream.close();
	} catch (Exception e) {
		e.printStackTrace();
	} finally {
		if (document.isOpen())
			document.close();
		try {
			if (outputStream != null)
				outputStream.close();
		} catch (IOException ioe) {
			ioe.printStackTrace();
		}
	}
}

Merge PDF files in Java using iText JAR

package com.digitalyours.codes.java.itext.pdf;

import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

import com.lowagie.text.Document;
import com.lowagie.text.pdf.BaseFont;
import com.lowagie.text.pdf.PdfContentByte;
import com.lowagie.text.pdf.PdfImportedPage;
import com.lowagie.text.pdf.PdfReader;
import com.lowagie.text.pdf.PdfWriter;

public class MergePDF {

	public static void main(String[] args) {
		try {
			List<InputStream> pdfs = new ArrayList<InputStream>();
			pdfs.add(new FileInputStream("c:\\1.pdf"));
			pdfs.add(new FileInputStream("c:\\2.pdf"));
			OutputStream output = new FileOutputStream("c:\\merge.pdf");
			MergePDF.concatPDFs(pdfs, output, true);
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

	public static void concatPDFs(List<InputStream> streamOfPDFFiles,
			OutputStream outputStream, boolean paginate) {

		Document document = new Document();
		try {
			List<InputStream> pdfs = streamOfPDFFiles;
			List<PdfReader> readers = new ArrayList<PdfReader>();
			int totalPages = 0;
			Iterator<InputStream> iteratorPDFs = pdfs.iterator();

			// Create Readers for the pdfs.
			while (iteratorPDFs.hasNext()) {
				InputStream pdf = iteratorPDFs.next();
				PdfReader pdfReader = new PdfReader(pdf);
				readers.add(pdfReader);
				totalPages += pdfReader.getNumberOfPages();
			}
			// Create a writer for the outputstream
			PdfWriter writer = PdfWriter.getInstance(document, outputStream);

			document.open();
			BaseFont bf = BaseFont.createFont(BaseFont.HELVETICA,
					BaseFont.CP1252, BaseFont.NOT_EMBEDDED);
			PdfContentByte cb = writer.getDirectContent(); // Holds the PDF
			// data

			PdfImportedPage page;
			int currentPageNumber = 0;
			int pageOfCurrentReaderPDF = 0;
			Iterator<PdfReader> iteratorPDFReader = readers.iterator();

			// Loop through the PDF files and add to the output.
			while (iteratorPDFReader.hasNext()) {
				PdfReader pdfReader = iteratorPDFReader.next();

				// Create a new page in the target for each source page.
				while (pageOfCurrentReaderPDF < pdfReader.getNumberOfPages()) {
					document.newPage();
					pageOfCurrentReaderPDF++;
					currentPageNumber++;
					page = writer.getImportedPage(pdfReader,
							pageOfCurrentReaderPDF);
					cb.addTemplate(page, 0, 0);

					// Code for pagination.
					if (paginate) {
						cb.beginText();
						cb.setFontAndSize(bf, 9);
						cb.showTextAligned(PdfContentByte.ALIGN_CENTER, ""
								+ currentPageNumber + " of " + totalPages, 520,
								5, 0);
						cb.endText();
					}
				}
				pageOfCurrentReaderPDF = 0;
			}
			outputStream.flush();
			document.close();
			outputStream.close();
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			if (document.isOpen())
				document.close();
			try {
				if (outputStream != null)
					outputStream.close();
			} catch (IOException ioe) {
				ioe.printStackTrace();
			}
		}
	}
}

GnuPG: Encrypting files from within PHP

Now things get a little tricky. Quite often your PHP scripts are written to run automatically within the web server without any intervention by you. What kind of life can you expect to lead if you have to enter your GnuPG passphrase every time PHP tries to decrypt a file? But we’re getting a little ahead of ourselves. Let’s first look at how we can encrypt a file with GnuPG and PHP.

Read the rest of this entry »

Removing a Row from JTable Component

To remove a row of data from a JTable component, you need to remove it from its table model. A simple implementation of a table model that supports the removal of row data is DefaultTableModel Read the rest of this entry »

Categories

Widgets