Files
comic-img-compress/ImageExtractor7.cs
T

90 lines
3.1 KiB
C#
Raw Normal View History

2024-03-01 16:05:06 +01:00
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 */);
}
}
}
}
}
}