90 lines
3.1 KiB
C#
90 lines
3.1 KiB
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;
|
||
|
|
|
||
|
|
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 */);
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|