我试图将 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);
但它不起作用。有什么问题?
这是使用 iText 从远程位置加载 .gif 时的一个已知问题。
解决此问题的方法是使用 Java 下载 .gif(而不是通过 iText 的 Image 类的 getInstance 方法)并在 Image 类的 getInstance 方法中使用下载的字节。
编辑:我继续并修复了 iText 中的远程 gif 加载,它包含在 iText 5.4.1 及更高版本中。
无法通过 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();
}
您用于将图像添加到 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));
然后,您可以继续将其添加image
到以前打开的一些文件document
中,使用document.add(image)
.
如需进一步参考,请访问 [ Java IText: Image docs ]。