Search in sources :

Example 11 with PdfPage

use of com.itextpdf.kernel.pdf.PdfPage in project i7js-highlevel by itext.

the class C02E01_CanvasExample method createPdf.

public void createPdf(String dest) throws IOException {
    // Initialize PDF document
    PdfDocument pdf = new PdfDocument(new PdfWriter(dest));
    PdfPage page = pdf.addNewPage();
    PdfCanvas pdfCanvas = new PdfCanvas(page);
    Rectangle rectangle = new Rectangle(36, 650, 100, 100);
    pdfCanvas.rectangle(rectangle);
    pdfCanvas.stroke();
    Canvas canvas = new Canvas(pdfCanvas, rectangle);
    PdfFont font = PdfFontFactory.createFont(StandardFonts.TIMES_ROMAN);
    PdfFont bold = PdfFontFactory.createFont(StandardFonts.TIMES_BOLD);
    Text title = new Text("The Strange Case of Dr. Jekyll and Mr. Hyde").setFont(bold);
    Text author = new Text("Robert Louis Stevenson").setFont(font);
    Paragraph p = new Paragraph().add(title).add(" by ").add(author);
    canvas.add(p);
    canvas.close();
    // Close document
    pdf.close();
}
Also used : PdfWriter(com.itextpdf.kernel.pdf.PdfWriter) Canvas(com.itextpdf.layout.Canvas) PdfCanvas(com.itextpdf.kernel.pdf.canvas.PdfCanvas) PdfFont(com.itextpdf.kernel.font.PdfFont) Rectangle(com.itextpdf.kernel.geom.Rectangle) PdfCanvas(com.itextpdf.kernel.pdf.canvas.PdfCanvas) Text(com.itextpdf.layout.element.Text) PdfPage(com.itextpdf.kernel.pdf.PdfPage) PdfDocument(com.itextpdf.kernel.pdf.PdfDocument) Paragraph(com.itextpdf.layout.element.Paragraph)

Example 12 with PdfPage

use of com.itextpdf.kernel.pdf.PdfPage in project i7js-highlevel by itext.

the class C02E03_CanvasRepeat method createPdf.

public void createPdf(String dest) throws IOException {
    // Initialize PDF document
    PdfDocument pdf = new PdfDocument(new PdfWriter(dest));
    PdfPage page = pdf.addNewPage();
    PdfCanvas pdfCanvas = new PdfCanvas(page);
    Rectangle rectangle = new Rectangle(36, 500, 100, 250);
    pdfCanvas.rectangle(rectangle);
    pdfCanvas.stroke();
    Canvas canvas = new Canvas(pdfCanvas, rectangle);
    MyCanvasRenderer renderer = new MyCanvasRenderer(canvas);
    canvas.setRenderer(renderer);
    PdfFont font = PdfFontFactory.createFont(StandardFonts.TIMES_ROMAN);
    PdfFont bold = PdfFontFactory.createFont(StandardFonts.TIMES_BOLD);
    Text title = new Text("The Strange Case of Dr. Jekyll and Mr. Hyde").setFont(bold);
    Text author = new Text("Robert Louis Stevenson").setFont(font);
    Paragraph p = new Paragraph().add(title).add(" by ").add(author);
    while (!renderer.isFull()) canvas.add(p);
    canvas.close();
    // Close document
    pdf.close();
}
Also used : PdfWriter(com.itextpdf.kernel.pdf.PdfWriter) Canvas(com.itextpdf.layout.Canvas) PdfCanvas(com.itextpdf.kernel.pdf.canvas.PdfCanvas) PdfFont(com.itextpdf.kernel.font.PdfFont) Rectangle(com.itextpdf.kernel.geom.Rectangle) PdfCanvas(com.itextpdf.kernel.pdf.canvas.PdfCanvas) Text(com.itextpdf.layout.element.Text) PdfPage(com.itextpdf.kernel.pdf.PdfPage) PdfDocument(com.itextpdf.kernel.pdf.PdfDocument) Paragraph(com.itextpdf.layout.element.Paragraph)

Example 13 with PdfPage

use of com.itextpdf.kernel.pdf.PdfPage in project i7js-highlevel by itext.

the class C07E11_Actions method createPdf.

public void createPdf(String dest) throws IOException {
    // Initialize PDF document
    PdfDocument pdf = new PdfDocument(new PdfWriter(dest));
    pdf.getCatalog().setOpenAction(PdfDestination.makeDestination(new PdfString("toc")));
    pdf.getCatalog().setAdditionalAction(PdfName.WC, PdfAction.createJavaScript("app.alert('Thank you for reading');"));
    pdf.addNewPage().setAdditionalAction(PdfName.O, PdfAction.createJavaScript("app.alert('This is where it starts!');"));
    // Initialize document
    Document document = new Document(pdf);
    PdfFont font = PdfFontFactory.createFont(StandardFonts.TIMES_ROMAN);
    PdfFont bold = PdfFontFactory.createFont(StandardFonts.HELVETICA_BOLD);
    document.setTextAlignment(TextAlignment.JUSTIFIED).setHyphenation(new HyphenationConfig("en", "uk", 3, 3)).setFont(font).setFontSize(11);
    BufferedReader br = new BufferedReader(new FileReader(SRC));
    String name, line;
    Paragraph p;
    boolean title = true;
    int counter = 0;
    List<SimpleEntry<String, SimpleEntry<String, Integer>>> toc = new ArrayList<>();
    while ((line = br.readLine()) != null) {
        p = new Paragraph(line);
        p.setKeepTogether(true);
        if (title) {
            name = String.format("title%02d", counter++);
            p.setFont(bold).setFontSize(12).setKeepWithNext(true).setDestination(name);
            title = false;
            document.add(p);
            toc.add(new SimpleEntry(name, new SimpleEntry(line, pdf.getNumberOfPages())));
        } else {
            p.setFirstLineIndent(36);
            if (line.isEmpty()) {
                p.setMarginBottom(12);
                title = true;
            } else {
                p.setMarginBottom(0);
            }
            document.add(p);
        }
    }
    document.add(new AreaBreak(AreaBreakType.NEXT_PAGE));
    p = new Paragraph().setFont(bold).add("Table of Contents").setDestination("toc");
    document.add(p);
    toc.remove(0);
    List<TabStop> tabstops = new ArrayList();
    tabstops.add(new TabStop(580, TabAlignment.RIGHT, new DottedLine()));
    for (SimpleEntry<String, SimpleEntry<String, Integer>> entry : toc) {
        SimpleEntry<String, Integer> text = entry.getValue();
        p = new Paragraph().addTabStops(tabstops).add(text.getKey()).add(new Tab()).add(String.valueOf(text.getValue())).setAction(PdfAction.createGoTo(entry.getKey()));
        document.add(p);
    }
    PdfPage page = pdf.getLastPage();
    page.setAdditionalAction(PdfName.C, PdfAction.createJavaScript("app.alert('Goodbye last page!');"));
    // Close document
    document.close();
}
Also used : PdfWriter(com.itextpdf.kernel.pdf.PdfWriter) SimpleEntry(java.util.AbstractMap.SimpleEntry) ArrayList(java.util.ArrayList) HyphenationConfig(com.itextpdf.layout.hyphenation.HyphenationConfig) TabStop(com.itextpdf.layout.element.TabStop) PdfString(com.itextpdf.kernel.pdf.PdfString) AreaBreak(com.itextpdf.layout.element.AreaBreak) Document(com.itextpdf.layout.Document) PdfDocument(com.itextpdf.kernel.pdf.PdfDocument) PdfString(com.itextpdf.kernel.pdf.PdfString) PdfDocument(com.itextpdf.kernel.pdf.PdfDocument) Paragraph(com.itextpdf.layout.element.Paragraph) Tab(com.itextpdf.layout.element.Tab) DottedLine(com.itextpdf.kernel.pdf.canvas.draw.DottedLine) PdfFont(com.itextpdf.kernel.font.PdfFont) BufferedReader(java.io.BufferedReader) FileReader(java.io.FileReader) PdfPage(com.itextpdf.kernel.pdf.PdfPage)

Example 14 with PdfPage

use of com.itextpdf.kernel.pdf.PdfPage in project i7js-highlevel by itext.

the class CanvasLayoutMethods method createPdf.

public void createPdf(String dest) throws IOException {
    // Initialize PDF document
    PdfDocument pdf = new PdfDocument(new PdfWriter(dest));
    PdfPage page = pdf.addNewPage();
    PdfCanvas pdfCanvas = new PdfCanvas(page);
    Rectangle rectangle = new Rectangle(36, 36, 523, 770);
    Canvas canvas = new Canvas(pdfCanvas, rectangle);
    Paragraph p;
    p = new Paragraph("Testing layout methods");
    canvas.add(p);
    canvas.setTextAlignment(TextAlignment.CENTER);
    p = new Paragraph("Testing layout methods");
    canvas.add(p);
    p = new Paragraph();
    for (int i = 0; i < 6; i++) p.add("singing supercalifragilisticexpialidocious ");
    canvas.add(p);
    canvas.setHyphenation(new HyphenationConfig("en", "uk", 3, 3));
    canvas.add(p);
    canvas.setTextAlignment(TextAlignment.JUSTIFIED);
    canvas.add(p);
    canvas.setHyphenation(null);
    canvas.setSplitCharacters(new ISplitCharacters() {

        public boolean isSplitCharacter(GlyphLine text, int glyphPos) {
            if (!text.get(glyphPos).hasValidUnicode()) {
                return false;
            }
            int charCode = text.get(glyphPos).getUnicode();
            return (charCode < ' ' || charCode == 'i');
        }
    });
    canvas.add(p);
    canvas.setSplitCharacters(new DefaultSplitCharacters());
    canvas.setTextAlignment(TextAlignment.LEFT);
    canvas.add(p);
    canvas.setWordSpacing(10);
    canvas.add(p);
    canvas.setCharacterSpacing(5);
    canvas.add(p);
    // Close document
    pdf.close();
}
Also used : PdfWriter(com.itextpdf.kernel.pdf.PdfWriter) DefaultSplitCharacters(com.itextpdf.layout.splitting.DefaultSplitCharacters) Canvas(com.itextpdf.layout.Canvas) PdfCanvas(com.itextpdf.kernel.pdf.canvas.PdfCanvas) Rectangle(com.itextpdf.kernel.geom.Rectangle) GlyphLine(com.itextpdf.io.font.otf.GlyphLine) PdfCanvas(com.itextpdf.kernel.pdf.canvas.PdfCanvas) HyphenationConfig(com.itextpdf.layout.hyphenation.HyphenationConfig) PdfPage(com.itextpdf.kernel.pdf.PdfPage) ISplitCharacters(com.itextpdf.layout.splitting.ISplitCharacters) PdfDocument(com.itextpdf.kernel.pdf.PdfDocument) Paragraph(com.itextpdf.layout.element.Paragraph)

Example 15 with PdfPage

use of com.itextpdf.kernel.pdf.PdfPage in project i7j-pdfsweep by itext.

the class CleanUpImagesCompareTool method extractImagesFromPdf.

private Map<Integer, PageImageObjectsPaths> extractImagesFromPdf(String pdf, String outputPath) throws IOException, InterruptedException {
    try (PdfReader readerPdf = new PdfReader(pdf);
        PdfDocument pdfDoc = new PdfDocument(readerPdf)) {
        Map<Integer, PageImageObjectsPaths> imageObjectDatas = new HashMap<>();
        for (int i = 1; i <= pdfDoc.getNumberOfPages(); i++) {
            PdfPage page = pdfDoc.getPage(i);
            PageImageObjectsPaths imageObjectData = new PageImageObjectsPaths(page.getPdfObject().getIndirectReference());
            Stack<LocalPathItem> baseLocalPath = new Stack<LocalPathItem>();
            PdfResources pdfResources = page.getResources();
            if (pdfResources.getPdfObject().isIndirect()) {
                imageObjectData.addIndirectReference(pdfResources.getPdfObject().getIndirectReference());
            } else {
                baseLocalPath.push(new DictPathItem(PdfName.Resources));
            }
            PdfDictionary xObjects = pdfResources.getResource(PdfName.XObject);
            if (xObjects == null) {
                continue;
            }
            if (xObjects.isIndirect()) {
                imageObjectData.addIndirectReference(xObjects.getIndirectReference());
                baseLocalPath.clear();
            } else {
                baseLocalPath.push(new DictPathItem(PdfName.XObject));
            }
            boolean isPageToGsExtract = false;
            for (PdfName objectName : xObjects.keySet()) {
                if (!xObjects.get(objectName).isStream() || !PdfName.Image.equals(xObjects.getAsStream(objectName).getAsName(PdfName.Subtype))) {
                    continue;
                }
                PdfImageXObject pdfObject = new PdfImageXObject(xObjects.getAsStream(objectName));
                baseLocalPath.push(new DictPathItem(objectName));
                if (!useGs) {
                    String extension = pdfObject.identifyImageFileExtension();
                    String fileName = outputPath + objectName + "_" + i + "." + extension;
                    createImageFromPdfXObject(fileName, pdfObject);
                } else {
                    isPageToGsExtract = true;
                }
                Stack<LocalPathItem> reversedStack = new Stack<>();
                reversedStack.addAll(baseLocalPath);
                Stack<LocalPathItem> resultStack = new Stack<>();
                resultStack.addAll(reversedStack);
                imageObjectData.addLocalPath(resultStack);
                baseLocalPath.pop();
            }
            if (useGs && isPageToGsExtract) {
                String fileName = "Page_" + i;
                ghostscriptHelper.runGhostScriptImageGeneration(pdf, outputPath, fileName, String.valueOf(i));
            }
            ImageRenderListener listener = new ImageRenderListener();
            PdfCanvasProcessor parser = new PdfCanvasProcessor(listener);
            parser.processPageContent(page);
            ignoredImagesAreas.put(i, listener.getImageRectangles());
            imageObjectDatas.put(i, imageObjectData);
        }
        return imageObjectDatas;
    }
}
Also used : DictPathItem(com.itextpdf.kernel.utils.objectpathitems.DictPathItem) PdfImageXObject(com.itextpdf.kernel.pdf.xobject.PdfImageXObject) PdfCanvasProcessor(com.itextpdf.kernel.pdf.canvas.parser.PdfCanvasProcessor) PdfName(com.itextpdf.kernel.pdf.PdfName) HashMap(java.util.HashMap) PdfDictionary(com.itextpdf.kernel.pdf.PdfDictionary) PdfResources(com.itextpdf.kernel.pdf.PdfResources) PdfReader(com.itextpdf.kernel.pdf.PdfReader) PdfDocument(com.itextpdf.kernel.pdf.PdfDocument) Point(com.itextpdf.kernel.geom.Point) Stack(java.util.Stack) LocalPathItem(com.itextpdf.kernel.utils.objectpathitems.LocalPathItem) PdfPage(com.itextpdf.kernel.pdf.PdfPage)

Aggregations

PdfPage (com.itextpdf.kernel.pdf.PdfPage)16 PdfDocument (com.itextpdf.kernel.pdf.PdfDocument)14 PdfWriter (com.itextpdf.kernel.pdf.PdfWriter)12 PdfCanvas (com.itextpdf.kernel.pdf.canvas.PdfCanvas)11 Rectangle (com.itextpdf.kernel.geom.Rectangle)10 Paragraph (com.itextpdf.layout.element.Paragraph)9 PdfFont (com.itextpdf.kernel.font.PdfFont)8 Canvas (com.itextpdf.layout.Canvas)7 Document (com.itextpdf.layout.Document)5 Text (com.itextpdf.layout.element.Text)4 HyphenationConfig (com.itextpdf.layout.hyphenation.HyphenationConfig)4 ArrayList (java.util.ArrayList)4 PdfReader (com.itextpdf.kernel.pdf.PdfReader)3 DottedLine (com.itextpdf.kernel.pdf.canvas.draw.DottedLine)3 AreaBreak (com.itextpdf.layout.element.AreaBreak)3 Tab (com.itextpdf.layout.element.Tab)3 TabStop (com.itextpdf.layout.element.TabStop)3 BufferedReader (java.io.BufferedReader)3 FileReader (java.io.FileReader)3 PdfString (com.itextpdf.kernel.pdf.PdfString)2