有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java从URL向PDF添加图像?

我正在尝试将URL地址中的图像添加到我的pdf中。代码是:

Image image=Image.getInstance("http://www.google.com/intl/en_ALL/images/logos/images_logo_lg.gif");
image.scaleToFit((float)200.0, (float)49.0);
paragraph.add(image);

但它不起作用。怎么了


共 (3) 个答案

  1. # 1 楼答案

    这是加载时的已知问题。使用iText从远程位置获取gif

    解决方法是下载。gif与Java(不是通过iText的Image类的getInstance方法),并使用Image类的getInstance方法中下载的字节

    编辑: 我继续在iText中修复了远程gif加载,它包含在iText 5.4.1及更高版本中

  2. # 2 楼答案

    向IText PDF添加图像的方式是用于添加本地文件的方式,而不是URL

    对于URL,这种方法将解决这个问题

    String imageUrl = "http://www.google.com/intl/en_ALL/" 
                      + "images/logos/images_logo_lg.gif";
    
    Image image = Image.getInstance(new URL(imageUrl));
    

    然后,您可以继续使用document.add(image)将这个image添加到以前打开的一些document

    如需进一步参考,请访问[Java IText: Image docs]

  3. # 3 楼答案

    无法通过URL将图像添加到Itext PDF中。 在PDF中添加图像的唯一方法是将所有图像下载到本地目录并应用下面的代码

    String photoPath = Environment.getExternalStorageDirectory() + "/abc.png";
                BitmapFactory.Options options = new BitmapFactory.Options();
                options.inSampleSize = 8;
                final Bitmap b = BitmapFactory.decodeFile(photoPath, options);
    
                ByteArrayOutputStream stream = new ByteArrayOutputStream();
                Bitmap.createScaledBitmap(b, 10, 10, false);
                b.compress(Bitmap.CompressFormat.PNG, 30, stream);
                Image img = null;
                byte[] byteArray = stream.toByteArray();
                try {
                    img = Image.getInstance(byteArray);
                } catch (BadElementException e) {
                    e.printStackTrace();
                } catch (IOException e) {
                    e.printStackTrace();
                }