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; using java.util; using org.apache.pdfbox.pdmodel.graphics.xobject; using org.apache.pdfbox.pdmodel; namespace ComicCompressor { public class ImageExtractor7 { public static readonly String DEST = "K:\\_COMIX\\_TOOLS_\\comic-compress-master\\bin\\Debug\\net6.0\\_NEW_PDF_\\Fan SUP 18.cbz"; public static readonly String SRC = "K:\\_COMIX\\_TOOLS_\\comic-compress-master\\bin\\Debug\\net6.0\\_PDF_\\Fan SUP 18.pdf"; public static void Main7() { FileInfo file = new FileInfo(DEST); file.Directory.Create(); new ImageExtractor7().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); var ks = pageXObjects.KeySet(); 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(); } public static void MainBox() { new ImageExtractor7().ManipulatePdf(DEST); } protected void ManipulatePdfBox(String dest) { PDDocument document = null; document = PDDocument.load(SRC); java.util.List pages = document.getDocumentCatalog().getAllPages(); Iterator iter = pages.iterator(); while (iter.hasNext()) { PDPage page = (PDPage)iter.next(); PDResources resources = page.getResources(); Map pageImages = resources.getImages(); if (pageImages != null) { Iterator imageIter = pageImages.keySet().iterator(); while (imageIter.hasNext()) { String key = (String)imageIter.next(); PDXObjectImage image = (PDXObjectImage)pageImages.get(key); //image.write2OutputStream(/* some output stream */); } } } } } }