दिलचस्प पोस्ट
रैंडम स्ट्रिंग जनरेटर एक ही स्ट्रिंग रिटर्निंग जावा में दोहरे उद्धरण से बचें 2 डी सरणी में .txt फ़ाइल पढ़ें परमिको में एक ही सत्र में आप कई आदेश कैसे कार्यान्वित करते हैं? (अजगर) जावा में डेटा और पाठ के लिए समन्वय विमान घुमाने के लिए सी #: कस्टम अपवाद बेस्ट प्रैक्टिस फेंकना उद्देश्य-सी ++ कितनी अच्छी तरह समर्थित है? क्या खाली एचटीएमएलएक्स डेटा विशेषताएँ मान्य हैं? कैसे कोणीय का समस्या निवारण करें "10 $ डाइजेस्ट () पुनरावृत्तियों पर पहुंच" त्रुटि घोषित और अघोषित वैरिएबल का प्रभाव मैं जावास्क्रिप्ट का उपयोग कर एंड्रॉइड कीबोर्ड कैसे छुपा सकता हूं? कैसे ज़ूम करें + एक छवि क्रॉप करें और छवि दृश्य पर क्रॉप छवि प्रदर्शित करें सी #: चलाने की प्रक्रिया का पूरा रास्ता कैसे प्राप्त करें? स्ट्रिंग में बाश होता है स्ट्रोक चौड़ाई ट्रांसफ़ॉर्म (SWT) कार्यान्वयन (जावा, सी # …)

pdfbox का उपयोग कर पीडीएफ से छवियां निकालें

मैं pdfbox का उपयोग कर पीडीएफ से छवियों को निकालने की कोशिश कर रहा हूं। उदाहरण पीडीएफ यहाँ

लेकिन मुझे केवल रिक्त छवियां मिल रही हैं I

कोड की कोशिश कर रहा है: –

public static void main(String[] args) { PDFImageExtract obj = new PDFImageExtract(); try { obj.read_pdf(); } catch (IOException ex) { System.out.println("" + ex); } } void read_pdf() throws IOException { PDDocument document = null; try { document = PDDocument.load("C:\\Users\\Pradyut\\Documents\\MCS-034.pdf"); } catch (IOException ex) { System.out.println("" + ex); } List pages = document.getDocumentCatalog().getAllPages(); Iterator iter = pages.iterator(); int i =1; String name = null; 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.write2file("C:\\Users\\Pradyut\\Documents\\image" + i); i ++; } } } } 

धन्यवाद

Solutions Collecting From Web of "pdfbox का उपयोग कर पीडीएफ से छवियां निकालें"

GetImagesFromPDF जावा वर्ग नीचे 04- अनुरोध- Headers.pdf फ़ाइल में सभी छवियों को प्राप्त करें और उन फ़ाइलों को गंतव्य फ़ोल्डर PDFCopy में सहेजें

 import java.io.File; import java.util.Iterator; import java.util.List; import java.util.Map; import org.apache.pdfbox.pdmodel.PDDocument; import org.apache.pdfbox.pdmodel.PDPage; import org.apache.pdfbox.pdmodel.PDResources; import org.apache.pdfbox.pdmodel.graphics.xobject.PDXObjectImage; @SuppressWarnings({ "unchecked", "rawtypes", "deprecation" }) public class GetImagesFromPDF { public static void main(String[] args) { try { String sourceDir = "C:/PDFCopy/04-Request-Headers.pdf";// Paste pdf files in PDFCopy folder to read String destinationDir = "C:/PDFCopy/"; File oldFile = new File(sourceDir); if (oldFile.exists()) { PDDocument document = PDDocument.load(sourceDir); List<PDPage> list = document.getDocumentCatalog().getAllPages(); String fileName = oldFile.getName().replace(".pdf", "_cover"); int totalImages = 1; for (PDPage page : list) { PDResources pdResources = page.getResources(); Map pageImages = pdResources.getImages(); if (pageImages != null) { Iterator imageIter = pageImages.keySet().iterator(); while (imageIter.hasNext()) { String key = (String) imageIter.next(); PDXObjectImage pdxObjectImage = (PDXObjectImage) pageImages.get(key); pdxObjectImage.write2file(destinationDir + fileName+ "_" + totalImages); totalImages++; } } } } else { System.err.println("File not exists"); } } catch (Exception e) { e.printStackTrace(); } } 

}

यहां पीडीएफबॉक्स 2.0.1 का कोड है जो कि पीडीएफ से सभी छवियों की एक सूची प्राप्त करेगा। यह अन्य कोड से अलग है, जिसमें वह शीर्ष स्तर से चित्र प्राप्त करने के बजाय दस्तावेज़ के माध्यम से पुनरीक्षित करेगा।

 public List<RenderedImage> getImagesFromPDF(PDDocument document) throws IOException { List<RenderedImage> images = new ArrayList<>(); for (PDPage page : document.getPages()) { images.addAll(getImagesFromResources(page.getResources())); } return images; } private List<RenderedImage> getImagesFromResources(PDResources resources) throws IOException { List<RenderedImage> images = new ArrayList<>(); for (COSName xObjectName : resources.getXObjectNames()) { PDXObject xObject = resources.getXObject(xObjectName); if (xObject instanceof PDFormXObject) { images.addAll(getImagesFromResources(((PDFormXObject) xObject).getResources())); } else if (xObject instanceof PDImageXObject) { images.add(((PDImageXObject) xObject).getImage()); } } return images; } 

पीडीएफबॉक्स 2.0.1 के लिए, कुछ एपीआई बदल दिए जाने के बाद पुदुकेर्कन के उत्तर में थोड़ा बदलाव किया जाना चाहिए।

 public static void testPDFBoxExtractImages() throws Exception { PDDocument document = PDDocument.load(new File("D:/Temp/Test.pdf")); PDPageTree list = document.getPages(); for (PDPage page : list) { PDResources pdResources = page.getResources(); for (COSName c : pdResources.getXObjectNames()) { PDXObject o = pdResources.getXObject(c); if (o instanceof org.apache.pdfbox.pdmodel.graphics.image.PDImageXObject) { File file = new File("D:/Temp/" + System.nanoTime() + ".png"); ImageIO.write(((org.apache.pdfbox.pdmodel.graphics.image.PDImageXObject)o).getImage(), "png", file); } } } } 

आप PDPage.convertToImage() फ़ंक्शन का उपयोग कर सकते हैं जो पीडीएफ पेज को एक PDPage.convertToImage() परिवर्तित कर सकते हैं। अगला आप एक छवि बनाने के लिए BufferedImage का उपयोग कर सकते हैं।

अधिक विस्तार के लिए निम्नलिखित संदर्भ का प्रयोग करें:

  • पीडीएफबॉक्स में सभी पीडीएफ रीडेटेड कक्षाएं आप अपाचे पीडीएफबॉक्स 1.8.3 एपीआई में प्राप्त कर सकते हैं
  • यहां आप PDPage संबंधित दस्तावेज़ देख सकते हैं।

और PDPage.convertToImage() फ़ंक्शन PDPage कक्षा में देखने के लिए मत भूलना।

बस अपने रास्ते के अंत में। .jpeg जोड़ें:

 image.write2file("C:\\Users\\Pradyut\\Documents\\image" + i + ".jpeg"); 

ये मेरे लिए सही है।

पीडीएफ में जेबीआईजी 2 एन्कोडेड छवियाँ हैं मुझे यकीन नहीं है कि pdfbox इन का समर्थन करता है।

फोन करने के बजाय

 image.write2file("C:\\Users\\Pradyut\\Documents\\image" + i); 

आप ImageIO.write() छवि को जो भी प्रारूप में लिखना चाहते हैं उसे लिखने के लिए ImageIO.write() स्थिर विधि का उपयोग कर सकते हैं। यहां मैंने पीएनजी का उपयोग किया है:

 File outputFile = new File( "C:\\Users\\Pradyut\\Documents\\image" + i + ".png"); ImageIO.write( image.getRGBImage(), "png", outputFile);