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();
}
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();
}
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();
}
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();
}
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;
}
}
Aggregations