com.lowagie.text.pdf.PdfDestination Java Examples

The following examples show how to use com.lowagie.text.pdf.PdfDestination. 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: LocalDestinationTest.java    From itext2 with GNU Lesser General Public License v3.0 6 votes vote down vote up
/**
 * Creates a document that jumps to a Local Destination upon opening.
 * 
 */
@Test
public void main() throws Exception {

	// step 1: creation of a document-object
	Document document = new Document();
	// step 2:
	PdfWriter writer = PdfWriter.getInstance(document, PdfTestBase.getOutputStream("LocalDestination.pdf"));
	// step 3: we open the document
	document.open();
	// step 4: we add some content
	document.add(new Paragraph("Page 1"));
	document.newPage();
	document.add(new Paragraph("This PDF file jumps directly to page 2 when opened"));
	PdfContentByte cb = writer.getDirectContent();
	cb.localDestination("page2", new PdfDestination(PdfDestination.XYZ, -1, 10000, 0));
	writer.setOpenAction("page2");

	// step 5: we close the document
	document.close();
}
 
Example #2
Source File: PdfLogicalPageDrawable.java    From pentaho-reporting with GNU Lesser General Public License v2.1 6 votes vote down vote up
protected void drawAnchor( final RenderNode content ) {
  if ( content.isNodeVisible( getDrawArea() ) == false ) {
    return;
  }
  final String anchorName = (String) content.getStyleSheet().getStyleProperty( ElementStyleKeys.ANCHOR_NAME );
  if ( anchorName == null ) {
    return;
  }
  final AffineTransform affineTransform = getGraphics().getTransform();
  final float translateX = (float) affineTransform.getTranslateX();

  final float upperY = translateX + (float) ( globalHeight - StrictGeomUtility.toExternalValue( content.getY() ) );
  final float leftX = (float) ( StrictGeomUtility.toExternalValue( content.getX() ) );
  final PdfDestination dest = new PdfDestination( PdfDestination.FIT, leftX, upperY, 0 );
  writer.getDirectContent().localDestination( anchorName, dest );
}
 
Example #3
Source File: PdfLogicalPageDrawable.java    From pentaho-reporting with GNU Lesser General Public License v2.1 6 votes vote down vote up
protected void drawBookmark( final RenderNode box, final String bookmark ) {
  if ( box.isNodeVisible( getDrawArea() ) == false ) {
    return;
  }
  final PdfOutline root = writer.getDirectContent().getRootOutline();

  final AffineTransform affineTransform = getGraphics().getTransform();
  final float translateX = (float) affineTransform.getTranslateX();

  final float upperY = translateX + (float) ( globalHeight - StrictGeomUtility.toExternalValue( box.getY() ) );
  final float leftX = (float) ( StrictGeomUtility.toExternalValue( box.getX() ) );
  final PdfDestination dest = new PdfDestination( PdfDestination.FIT, leftX, upperY, 0 );
  new PdfOutline( root, dest, bookmark );
  // destination will always point to the 'current' page
  // todo: Make this a hierarchy ..
}
 
Example #4
Source File: BookmarksTest.java    From itext2 with GNU Lesser General Public License v3.0 5 votes vote down vote up
/**
 * Adds an outline for every new Paragraph
 * 
 * @param writer
 * @param document
 * @param position
 */
public void onParagraph(PdfWriter writer, Document document, float position) {
	n++;
	PdfContentByte cb = writer.getDirectContent();
	PdfDestination destination = new PdfDestination(PdfDestination.FITH,
			position);
	new PdfOutline(cb.getRootOutline(), destination, "paragraph " + n);
}
 
Example #5
Source File: ActionsTest.java    From itext2 with GNU Lesser General Public License v3.0 5 votes vote down vote up
/**
 * Creates a document with some goto actions.
 * 
 */
@Test
public void main() throws Exception {

	// step 1: creation of a document-object
	Document document = new Document();
	Document remote = new Document();

	// step 2:
	PdfWriter writer = PdfWriter.getInstance(document, PdfTestBase.getOutputStream("Actions.pdf"));
	PdfWriter.getInstance(remote, PdfTestBase.getOutputStream("remote.pdf"));
	// step 3:
	document.open();
	remote.open();
	// step 4: we add some content
	PdfAction action = PdfAction.gotoLocalPage(2, new PdfDestination(PdfDestination.XYZ, -1, 10000, 0), writer);
	writer.setOpenAction(action);
	document.add(new Paragraph("Page 1"));
	document.newPage();
	document.add(new Paragraph("Page 2"));
	document.add(new Chunk("goto page 1").setAction(PdfAction.gotoLocalPage(1, new PdfDestination(
			PdfDestination.FITH, 500), writer)));
	document.add(Chunk.NEWLINE);
	document.add(new Chunk("goto another document").setAction(PdfAction.gotoRemotePage("remote.pdf", "test", false,
			true)));
	remote.add(new Paragraph("Some remote document"));
	remote.newPage();
	Paragraph p = new Paragraph("This paragraph contains a ");
	p.add(new Chunk("local destination").setLocalDestination("test"));
	remote.add(p);

	// step 5: we close the document
	document.close();
	remote.close();
}
 
Example #6
Source File: AnnotationsTest.java    From itext2 with GNU Lesser General Public License v3.0 4 votes vote down vote up
/**
 * Creates a document with some PdfAnnotations.
 * 
 */
@Test
public void main() throws Exception {

	// step 1: creation of a document-object
	Document document = new Document();

	// step 2:
	PdfWriter writer = PdfWriter.getInstance(document, PdfTestBase.getOutputStream("Annotations.pdf"));
	// step 3:
	writer.setPdfVersion(PdfWriter.VERSION_1_5);
	document.open();
	// step 4:
	PdfContentByte cb = writer.getDirectContent();
	// page 1
	PdfFileSpecification fs = PdfFileSpecification.fileExtern(writer, PdfTestBase.RESOURCES_DIR + "cards.mpg");
	writer.addAnnotation(PdfAnnotation.createScreen(writer, new Rectangle(200f, 700f, 300f, 800f), "cards.mpg", fs,
			"video/mpeg", true));
	PdfAnnotation a = new PdfAnnotation(writer, 200f, 550f, 300f, 650f, PdfAction.javaScript(
			"app.alert('Hello');\r", writer));
	document.add(new Chunk("click to trigger javascript").setAnnotation(a).setLocalDestination("top"));
	writer.addAnnotation(a);
	writer.addAnnotation(PdfAnnotation.createFileAttachment(writer, new Rectangle(100f, 650f, 150f, 700f),
			"This is some text", "some text".getBytes(), null, "some.txt"));
	writer.addAnnotation(PdfAnnotation.createText(writer, new Rectangle(200f, 400f, 300f, 500f), "Help",
			"This Help annotation was made with 'createText'", false, "Help"));
	writer.addAnnotation(PdfAnnotation.createText(writer, new Rectangle(200f, 250f, 300f, 350f), "Help",
			"This Comment annotation was made with 'createText'", true, "Comment"));
	cb.rectangle(200, 700, 100, 100);
	cb.rectangle(200, 550, 100, 100);
	cb.rectangle(200, 400, 100, 100);
	cb.rectangle(200, 250, 100, 100);
	cb.stroke();
	document.newPage();
	// page 2
	writer.addAnnotation(PdfAnnotation.createLink(writer, new Rectangle(200f, 700f, 300f, 800f),
			PdfAnnotation.HIGHLIGHT_TOGGLE, PdfAction.javaScript("app.alert('Hello');\r", writer)));
	writer.addAnnotation(PdfAnnotation.createLink(writer, new Rectangle(200f, 550f, 300f, 650f),
			PdfAnnotation.HIGHLIGHT_OUTLINE, "top"));
	writer.addAnnotation(PdfAnnotation.createLink(writer, new Rectangle(200f, 400f, 300f, 500f),
			PdfAnnotation.HIGHLIGHT_PUSH, 1, new PdfDestination(PdfDestination.FIT)));
	writer.addAnnotation(PdfAnnotation.createSquareCircle(writer, new Rectangle(200f, 250f, 300f, 350f),
			"This Comment annotation was made with 'createSquareCircle'", false));
	document.newPage();
	// page 3
	PdfContentByte pcb = new PdfContentByte(writer);
	pcb.setColorFill(new Color(0xFF, 0x00, 0x00));
	writer.addAnnotation(PdfAnnotation.createFreeText(writer, new Rectangle(200f, 700f, 300f, 800f),
			"This is some free text, blah blah blah", pcb));
	writer.addAnnotation(PdfAnnotation.createLine(writer, new Rectangle(200f, 550f, 300f, 650f), "this is a line",
			200, 550, 300, 650));
	writer.addAnnotation(PdfAnnotation.createStamp(writer, new Rectangle(200f, 400f, 300f, 500f),
			"This is a stamp", "Stamp"));
	writer.addAnnotation(PdfAnnotation.createPopup(writer, new Rectangle(200f, 250f, 300f, 350f),
			"Hello, I'm a popup!", true));
	cb.rectangle(200, 700, 100, 100);
	cb.rectangle(200, 550, 100, 100);
	cb.rectangle(200, 250, 100, 100);
	cb.stroke();

	// step 5: we close the document
	document.close();
}
 
Example #7
Source File: OutlineActionsTest.java    From itext2 with GNU Lesser General Public License v3.0 4 votes vote down vote up
/**
 * Demonstrates some PageLabel functionality.
 * 
 */
@Test
public void main() throws Exception {

	// step 1: creation of a document-object
	Document document = new Document();
	Document remote = new Document();
	// step 2:
	PdfWriter writer = PdfWriter.getInstance(document, PdfTestBase.getOutputStream("OutlineActions.pdf"));
	PdfWriter.getInstance(remote, PdfTestBase.getOutputStream("remote.pdf"));
	// step 3:
	writer.setViewerPreferences(PdfWriter.PageModeUseOutlines);
	document.open();
	remote.open();
	// step 4:
	// we add some content
	document.add(new Paragraph("Outline action example"));
	// we add the outline
	PdfContentByte cb = writer.getDirectContent();
	PdfOutline root = cb.getRootOutline();
	PdfOutline links = new PdfOutline(root, new PdfAction("http://www.lowagie.com/iText/links.html"),
			"Useful links");
	links.setColor(new Color(0x00, 0x80, 0x80));
	links.setStyle(Font.BOLD);
	new PdfOutline(links, new PdfAction("http://www.lowagie.com/iText"), "Bruno's iText site");
	new PdfOutline(links, new PdfAction("http://itextpdf.sourceforge.net/"), "Paulo's iText site");
	new PdfOutline(links, new PdfAction("http://sourceforge.net/projects/itext/"), "iText @ SourceForge");
	PdfOutline other = new PdfOutline(root, new PdfDestination(PdfDestination.FIT), "other actions", false);
	other.setStyle(Font.ITALIC);
	new PdfOutline(other, new PdfAction("remote.pdf", 1), "Go to yhe first page of a remote file");
	new PdfOutline(other, new PdfAction("remote.pdf", "test"), "Go to a local destination in a remote file");
	new PdfOutline(other, PdfAction.javaScript("app.alert('Hello');\r", writer), "Say Hello");

	remote.add(new Paragraph("Some remote document"));
	remote.newPage();
	Paragraph p = new Paragraph("This paragraph contains a ");
	p.add(new Chunk("local destination").setLocalDestination("test"));
	remote.add(p);

	// step 5: we close the document
	document.close();
	remote.close();
}
 
Example #8
Source File: DestinationsTest.java    From itext2 with GNU Lesser General Public License v3.0 4 votes vote down vote up
/**
 * Creates a document with some goto actions.
 * 
 */
@Test
public void main() throws Exception {

	// step 1: creation of a document-object
	Document document = new Document();

	// step 2:
	PdfWriter writer = PdfWriter.getInstance(document, PdfTestBase.getOutputStream("Destinations.pdf"));
	// step 3:
	writer.setViewerPreferences(PdfWriter.PageModeUseOutlines);
	document.open();
	// step 4: we grab the ContentByte and do some stuff with it
	PdfContentByte cb = writer.getDirectContent();

	// we create a PdfTemplate
	PdfTemplate template = cb.createTemplate(25, 25);

	// we add some crosses to visualize the destinations
	template.moveTo(13, 0);
	template.lineTo(13, 25);
	template.moveTo(0, 13);
	template.lineTo(50, 13);
	template.stroke();

	// we add the template on different positions
	cb.addTemplate(template, 287, 787);
	cb.addTemplate(template, 187, 487);
	cb.addTemplate(template, 487, 287);
	cb.addTemplate(template, 87, 87);

	// we define the destinations
	PdfDestination d1 = new PdfDestination(PdfDestination.XYZ, 300, 800, 0);
	PdfDestination d2 = new PdfDestination(PdfDestination.FITH, 500);
	PdfDestination d3 = new PdfDestination(PdfDestination.FITR, 200, 300, 400, 500);
	PdfDestination d4 = new PdfDestination(PdfDestination.FITBV, 100);
	PdfDestination d5 = new PdfDestination(PdfDestination.FIT);

	// we define the outlines
	PdfOutline out1 = new PdfOutline(cb.getRootOutline(), d1, "root");
	PdfOutline out2 = new PdfOutline(out1, d2, "sub 1");
	new PdfOutline(out1, d3, "sub 2");
	new PdfOutline(out2, d4, "sub 2.1");
	new PdfOutline(out2, d5, "sub 2.2");

	// step 5: we close the document
	document.close();
}
 
Example #9
Source File: JRPdfExporter.java    From jasperreports with GNU Lesser General Public License v3.0 4 votes vote down vote up
Bookmark(Bookmark parent, int x, int top, String title)
{
	this(parent, new PdfDestination(PdfDestination.XYZ, x, top, 0), title);
}
 
Example #10
Source File: JRPdfExporter.java    From jasperreports with GNU Lesser General Public License v3.0 4 votes vote down vote up
Bookmark(Bookmark parent, PdfDestination destination, String title)
{
	this.pdfOutline = new PdfOutline(parent.pdfOutline, destination, title, false);
	this.level = parent.level + 1;
}
 
Example #11
Source File: EpubToPdfConverter.java    From website with GNU Affero General Public License v3.0 4 votes vote down vote up
public File convert(String epubPath) throws IOException,DocumentException {
	applyProperties(epub2pdfProps);
       File epubFile = new File(epubPath);
       if (!(epubFile.canRead())) {
           throw new IOException("Could not read " + epubPath);
       } else {
       	logger.debug("Converting " + epubFile.getAbsolutePath());
       }
       String epubFilename = epubFile.getName();
       String epubFilenameBase = epubFilename.substring(0, epubFilename.length()-5);
       String pdfFilename = epubFilenameBase + ".pdf";

       File outputFile = new File(outputDir.getAbsolutePath() + File.separator + pdfFilename);

       epubIn = Epub.fromFile(epubPath);
       XhtmlHandler.setSourceEpub(epubIn);

       Opf opf = epubIn.getOpf();
       List<String> contentPaths = opf.spineHrefs();
       List<File> contentFiles = new ArrayList<File>();
       for (String path : contentPaths) {
           contentFiles.add(new File(epubIn.getContentRoot(),path));
       }
       Ncx ncx = epubIn.getNcx();
       
       List<NavPoint> ncxToc = new ArrayList<NavPoint>();
       if(ncx != null) {
       	ncxToc.addAll(ncx.getNavPointsFlat());
       }
       
       Tree<TocTreeNode> tocTree = TocTreeNode.buildTocTree(ncx);
       XhtmlHandler.setTocTree(tocTree);
       
       Document doc = new Document();
       boolean pageSizeOK = doc.setPageSize(pageSize);
       boolean marginsOK = doc.setMargins(marginLeftPt, marginRightPt, marginTopPt, marginBottomPt);

       logger.debug("Writing PDF to " + outputFile.getAbsolutePath());
       PdfWriter writer = PdfWriter.getInstance(doc, new FileOutputStream(outputFile));
       writer.setStrictImageSequence(true);
       PdfOutline bookmarkRoot = null;

       if (!(pageSizeOK && marginsOK)) {
           throw new RuntimeException("Failed to set PDF page size a/o margins");
       }
       
       int fileCount = contentFiles.size();
       logger.debug("Processing " + fileCount + " HTML file(s): ");
       int currentFile = 0;

       for (File file : contentFiles) {
       	currentFile++;
       	
       	String progressChar;
       	
       	int mod10 = currentFile % 10;
       	if(mod10 == 5)
       		progressChar = "5";
       	else if(mod10 == 0) 
       		progressChar = "0";
       	else
       		progressChar = ".";
       	
       	logger.debug(progressChar);
           if (!(doc.isOpen())) {
               doc.open();
               doc.newPage();
               bookmarkRoot = writer.getRootOutline();
               XhtmlHandler.setBookmarkRoot(bookmarkRoot);
           }
           NavPoint fileLevelNP = Ncx.findNavPoint(ncxToc, file.getName());
           TreeNode<TocTreeNode> npNode = TocTreeNode.findInTreeByNavPoint(tocTree, fileLevelNP);
           
           if(fileLevelNP != null) {
           	doc.newPage();
           	PdfOutline pdfOutlineParent = bookmarkRoot;
           	if(npNode != null) {
           		TreeNode<TocTreeNode> parent = npNode.getParent();
           		if(parent != null) {
           			TocTreeNode parentTTN = parent.getValue();
           			if(parentTTN != null && parentTTN.getPdfOutline() != null) {
           				pdfOutlineParent = parentTTN.getPdfOutline();
           			}
           		}
           	}
           	
           	PdfDestination here = new PdfDestination(PdfDestination.FIT);
           	PdfOutline pdfTocEntry = new PdfOutline(pdfOutlineParent, here, fileLevelNP.getNavLabelText());
           	if(npNode != null) {
           		npNode.getValue().setPdfDestination(here);
           		npNode.getValue().setPdfOutline(pdfTocEntry);
           	}
           }
           XhtmlHandler.process(file.getCanonicalPath(), doc);
       }
       doc.close();
       logger.debug("PDF written to " + outputFile.getAbsolutePath());
       epubIn.cleanup();
       return outputFile;
}
 
Example #12
Source File: PDFPage.java    From birt with Eclipse Public License 1.0 4 votes vote down vote up
private void createBookmark( String bookmark, float x, float y,
		float width, float height )
{
	contentByte.localDestination( bookmark, new PdfDestination(
			PdfDestination.XYZ, -1, transformY( y ), 0 ) );
}
 
Example #13
Source File: BookmarksTest.java    From itext2 with GNU Lesser General Public License v3.0 3 votes vote down vote up
/**
 * Adds an outline for every new Paragraph
 * 
 * @param writer
 * @param document
 * @param position
 */
public void onParagraph(PdfWriter writer, Document document, float position) {
	n++;
	PdfContentByte cb = writer.getDirectContent();
	PdfDestination destination = new PdfDestination(PdfDestination.FITH, position);
	new PdfOutline(cb.getRootOutline(), destination, "paragraph " + n);
}