Large Image examples
These examples were written in the context of the Help, I only see blank pages in my PDF tutorial.
largeimage1
JAVA
JAVA
/*
This file is part of the iText (R) project.
Copyright (c) 1998-2023 Apryse Group NV
Authors: Apryse Software.
For more information, please contact iText Software at this address:
sales@itextpdf.com
*/
package com.itextpdf.samples.sandbox.images;
import com.itextpdf.kernel.geom.PageSize;
import com.itextpdf.kernel.pdf.PdfDocument;
import com.itextpdf.kernel.pdf.PdfWriter;
import com.itextpdf.kernel.pdf.PdfReader;
import com.itextpdf.kernel.pdf.PdfDictionary;
import com.itextpdf.kernel.pdf.PdfName;
import com.itextpdf.kernel.pdf.PdfStream;
import com.itextpdf.kernel.pdf.xobject.PdfImageXObject;
import com.itextpdf.layout.Document;
import com.itextpdf.layout.element.Image;
import java.io.File;
public class LargeImage1 {
public static final String DEST = "./target/sandbox/images/large_image1.pdf";
public static final String SRC = "./src/main/resources/pdfs/large_image.pdf";
public static void main(String[] args) throws Exception {
File file = new File(DEST);
file.getParentFile().mkdirs();
new LargeImage1().manipulatePdf(DEST);
}
protected void manipulatePdf(String dest) throws Exception {
PdfDocument resultDoc = new PdfDocument(new PdfWriter(dest));
PdfDocument srcDoc = new PdfDocument(new PdfReader(SRC));
// Assume that there is a single XObject in the source document
// and this single object is an image.
PdfDictionary pageDict = srcDoc.getFirstPage().getPdfObject();
PdfDictionary pageResources = pageDict.getAsDictionary(PdfName.Resources);
PdfDictionary pageXObjects = pageResources.getAsDictionary(PdfName.XObject);
PdfName imgRef = pageXObjects.keySet().iterator().next();
PdfStream imgStream = pageXObjects.getAsStream(imgRef);
PdfImageXObject imgObject = new PdfImageXObject((PdfStream) imgStream.copyTo(resultDoc));
Image image = new Image(imgObject);
image.scaleToFit(14400, 14400);
image.setFixedPosition(0, 0);
srcDoc.close();
PageSize pageSize = new PageSize(image.getImageScaledWidth(), image.getImageScaledHeight());
Document doc = new Document(resultDoc, pageSize);
doc.add(image);
doc.close();
}
}
C#
C#
using System;
using System.IO;
using System.Linq;
using iText.Kernel.Geom;
using iText.Kernel.Pdf;
using iText.Kernel.Pdf.Xobject;
using iText.Layout;
using iText.Layout.Element;
namespace iText.Samples.Sandbox.Images
{
public class LargeImage1
{
public static readonly String DEST = "results/sandbox/images/large_image1.pdf";
public static readonly String SRC = "../../../resources/pdfs/large_image.pdf";
public static void Main(String[] args)
{
FileInfo file = new FileInfo(DEST);
file.Directory.Create();
new LargeImage1().ManipulatePdf(DEST);
}
protected void ManipulatePdf(String dest)
{
PdfDocument resultDoc = new PdfDocument(new PdfWriter(dest));
PdfDocument srcDoc = new PdfDocument(new PdfReader(SRC));
// Assume that there is a single XObject in the source document
// and this single object is an image.
PdfDictionary pageDict = srcDoc.GetFirstPage().GetPdfObject();
PdfDictionary pageResources = pageDict.GetAsDictionary(PdfName.Resources);
PdfDictionary pageXObjects = pageResources.GetAsDictionary(PdfName.XObject);
PdfName imgRef = pageXObjects.KeySet().First();
PdfStream imgStream = pageXObjects.GetAsStream(imgRef);
PdfImageXObject imgObject = new PdfImageXObject((PdfStream) imgStream.CopyTo(resultDoc));
Image image = new Image(imgObject);
image.ScaleToFit(14400, 14400);
image.SetFixedPosition(0, 0);
srcDoc.Close();
PageSize pageSize = new PageSize(image.GetImageScaledWidth(), image.GetImageScaledHeight());
Document doc = new Document(resultDoc, pageSize);
doc.Add(image);
doc.Close();
}
}
}
largeimage2
JAVA
JAVA
/*
This file is part of the iText (R) project.
Copyright (c) 1998-2023 Apryse Group NV
Authors: Apryse Software.
For more information, please contact iText Software at this address:
sales@itextpdf.com
*/
package com.itextpdf.samples.sandbox.images;
import com.itextpdf.kernel.geom.PageSize;
import com.itextpdf.kernel.pdf.PdfDictionary;
import com.itextpdf.kernel.pdf.PdfDocument;
import com.itextpdf.kernel.pdf.PdfName;
import com.itextpdf.kernel.pdf.PdfPage;
import com.itextpdf.kernel.pdf.PdfReader;
import com.itextpdf.kernel.pdf.PdfStream;
import com.itextpdf.kernel.pdf.PdfWriter;
import com.itextpdf.kernel.pdf.xobject.PdfImageXObject;
import com.itextpdf.layout.Canvas;
import com.itextpdf.layout.element.Image;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.File;
public class LargeImage2 {
public static final String DEST = "./target/sandbox/images/large_image2.pdf";
public static final String SRC = "./src/main/resources/pdfs/large_image.pdf";
public static void main(String[] args) throws Exception {
File file = new File(DEST);
file.getParentFile().mkdirs();
new LargeImage2().manipulatePdf(DEST);
}
protected void manipulatePdf(String dest) throws Exception {
PdfDocument resultDoc = new PdfDocument(new PdfWriter(dest));
ByteArrayOutputStream tempFile = new ByteArrayOutputStream();
// The source pdf document's page size is expected to be huge: more than 14400 in width in height
PdfDocument tempDoc = new PdfDocument(new PdfReader(SRC), new PdfWriter(tempFile));
// Assume that there is a single XObject in the source document
// and this single object is an image.
PdfDictionary pageDict = tempDoc.getFirstPage().getPdfObject();
PdfDictionary pageResources = pageDict.getAsDictionary(PdfName.Resources);
PdfDictionary pageXObjects = pageResources.getAsDictionary(PdfName.XObject);
PdfName imgRef = pageXObjects.keySet().iterator().next();
PdfStream imgStream = pageXObjects.getAsStream(imgRef);
PdfImageXObject imgObject = new PdfImageXObject(imgStream);
Image img = new Image(imgObject);
img.scaleToFit(14400, 14400);
img.setFixedPosition(0, 0);
tempDoc.addNewPage(1, new PageSize(img.getImageScaledWidth(), img.getImageScaledHeight()));
PdfPage page = tempDoc.getFirstPage();
new Canvas(page, page.getPageSize())
.add(img)
.close();
tempDoc.close();
PdfDocument docToCopy = new PdfDocument(new PdfReader(new ByteArrayInputStream(tempFile.toByteArray())));
docToCopy.copyPagesTo(1, 1, resultDoc);
docToCopy.close();
resultDoc.close();
}
}
C#
C#
using System;
using System.IO;
using System.Linq;
using iText.IO.Source;
using iText.Kernel.Geom;
using iText.Kernel.Pdf;
using iText.Kernel.Pdf.Xobject;
using iText.Layout;
using iText.Layout.Element;
namespace iText.Samples.Sandbox.Images
{
public class LargeImage2
{
public static readonly String DEST = "results/sandbox/images/large_image2.pdf";
public static readonly String SRC = "../../../resources/pdfs/large_image.pdf";
public static void Main(String[] args)
{
FileInfo file = new FileInfo(DEST);
file.Directory.Create();
new LargeImage2().ManipulatePdf(DEST);
}
protected void ManipulatePdf(String dest)
{
PdfDocument resultDoc = new PdfDocument(new PdfWriter(dest));
MemoryStream tempFile = new ByteArrayOutputStream();
// The source pdf document's page size is expected to be huge: more than 14400 in width in height
PdfDocument tempDoc = new PdfDocument(new PdfReader(SRC), new PdfWriter(tempFile));
// Assume that there is a single XObject in the source document
// and this single object is an image.
PdfDictionary pageDict = tempDoc.GetFirstPage().GetPdfObject();
PdfDictionary pageResources = pageDict.GetAsDictionary(PdfName.Resources);
PdfDictionary pageXObjects = pageResources.GetAsDictionary(PdfName.XObject);
PdfName imgRef = pageXObjects.KeySet().First();
PdfStream imgStream = pageXObjects.GetAsStream(imgRef);
PdfImageXObject imgObject = new PdfImageXObject(imgStream);
Image img = new Image(imgObject);
img.ScaleToFit(14400, 14400);
img.SetFixedPosition(0, 0);
tempDoc.AddNewPage(1, new PageSize(img.GetImageScaledWidth(), img.GetImageScaledHeight()));
PdfPage page = tempDoc.GetFirstPage();
new Canvas(page, page.GetPageSize())
.Add(img)
.Close();
tempDoc.Close();
PdfDocument docToCopy = new PdfDocument(new PdfReader(new MemoryStream(tempFile.ToArray())));
docToCopy.CopyPagesTo(1, 1, resultDoc);
docToCopy.Close();
resultDoc.Close();
}
}
}