开发手册 欢迎您!
软件开发者资料库

Java 使用URLConnection下载抓取多个图片合成单个pdf文件

本文主要介绍Java中,使用URLConnection下载网页上图片文档,通过itext 将多个pdf合成到单个pdf文件中。

1、引用Maven的pom.xml中引用配置


com.itextpdf
itextpdf
5.5.9


com.google.guava
guava
28.2-jre

2、使用URLConnection下载多个图片到本地

import java.io.ByteArrayOutputStream;import java.io.DataInputStream;import java.io.File;import java.io.FileOutputStream;import java.io.IOException;import java.net.MalformedURLException;import java.net.URL;import java.net.URLConnection;public class Utils {public static String getParam(String url, String name) {    String params = url.substring(url.indexOf("?") + 1, url.length());    Map split = Splitter.on("&").withKeyValueSeparator("=").split(params);    return split.get(name);}    /**    * @Description: 下载多个图片    * @param   picurls 多个图片地址    path 图片下载存放目录  fileNames 多个文件名称 ,不传fileNames=null则取url中参数值,此时ParamName必须传    * @return void    * @throws    */    public static void downloadPicture(String[] picurls,String path,String[] fileNames,String ParamName) throws IOException {        try {            //多个图片下载地址              for(int i=0;i 0) {                    output.write(buffer, 0, length);                }                fileOutputStream.write(output.toByteArray());                dataInputStream.close();                fileOutputStream.close();            }        } catch (MalformedURLException e) {            e.printStackTrace();        } catch (IOException e) {            e.printStackTrace();        }    }}

3、使用IText合成多个图片到单个pdf

1) 使用IText将多个图片转成多个pdf文件

public static void imageToPDF(String path,String imagePath) {File file = new File(path);Document document = new Document();        try {PdfWriter.getInstance(document, new FileOutputStream(file));} catch (FileNotFoundException e1) {// TODO Auto-generated catch blocke1.printStackTrace();} catch (DocumentException e1) {// TODO Auto-generated catch blocke1.printStackTrace();}        document.open();            document.newPage();            Image image = null;try {try {image = Image.getInstance(imagePath);} catch (BadElementException e) {// TODO Auto-generated catch blocke.printStackTrace();}} catch (MalformedURLException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}            image.setAbsolutePosition(0, 0);            image.setBorderWidth(0);            image.scaleAbsolute(PageSize.A4);            try {document.add(image);} catch (DocumentException e) {// TODO Auto-generated catch blocke.printStackTrace();}        document.close();}

2) 使用IText将多个pdf合成到一个pdf文件

import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.IOException;import java.io.InputStream;import java.io.OutputStream;import java.util.ArrayList;import java.util.Iterator;import java.util.List;import com.lowagie.text.Document;import com.lowagie.text.pdf.BaseFont;import com.lowagie.text.pdf.PdfContentByte;import com.lowagie.text.pdf.PdfImportedPage;import com.lowagie.text.pdf.PdfReader;import com.lowagie.text.pdf.PdfWriter;public class MergePDF {    public static void main(String[] args) {        try {            List pdfs = new ArrayList();            pdfs.add(new FileInputStream("c:\\1.pdf"));            pdfs.add(new FileInputStream("c:\\2.pdf"));            OutputStream output = new FileOutputStream("c:\\merge.pdf");            MergePDF.concatPDFs(pdfs, output, true);        } catch (Exception e) {            e.printStackTrace();        }    }    public static void concatPDFs(List streamOfPDFFiles,            OutputStream outputStream, boolean paginate) {        Document document = new Document();        try {            List pdfs = streamOfPDFFiles;            List readers = new ArrayList();            int totalPages = 0;            Iterator iteratorPDFs = pdfs.iterator();            // Create Readers for the pdfs.            while (iteratorPDFs.hasNext()) {                InputStream pdf = iteratorPDFs.next();                PdfReader pdfReader = new PdfReader(pdf);                readers.add(pdfReader);                totalPages += pdfReader.getNumberOfPages();            }            // Create a writer for the outputstream            PdfWriter writer = PdfWriter.getInstance(document, outputStream);            document.open();            BaseFont bf = BaseFont.createFont(BaseFont.HELVETICA,                    BaseFont.CP1252, BaseFont.NOT_EMBEDDED);            PdfContentByte cb = writer.getDirectContent(); // Holds the PDF            // data            PdfImportedPage page;            int currentPageNumber = 0;            int pageOfCurrentReaderPDF = 0;            Iterator iteratorPDFReader = readers.iterator();            // Loop through the PDF files and add to the output.            while (iteratorPDFReader.hasNext()) {                PdfReader pdfReader = iteratorPDFReader.next();                // Create a new page in the target for each source page.                while (pageOfCurrentReaderPDF < pdfReader.getNumberOfPages()) {                    document.newPage();                    pageOfCurrentReaderPDF++;                    currentPageNumber++;                    page = writer.getImportedPage(pdfReader,                            pageOfCurrentReaderPDF);                    cb.addTemplate(page, 0, 0);                    // Code for pagination.                    if (paginate) {                        cb.beginText();                        cb.setFontAndSize(bf, 9);                        cb.showTextAligned(PdfContentByte.ALIGN_CENTER, ""                                + currentPageNumber + " of " + totalPages, 520,                                5, 0);                        cb.endText();                    }                }                pageOfCurrentReaderPDF = 0;            }            outputStream.flush();            document.close();            outputStream.close();        } catch (Exception e) {            e.printStackTrace();        } finally {            if (document.isOpen())                document.close();            try {                if (outputStream != null)                    outputStream.close();            } catch (IOException ioe) {                ioe.printStackTrace();            }        }    }}

相关文档:iText PDF Java API 入门介绍教程