我想知道你是否可以直接向itext添加java.awt.Image;到目前为止我看到的所有对这个问题的回答建议将图像写入磁盘
ImageIO.write(img, "png", "output.png);
然后使用com.itextpdf.text.Image方法Image.getInstance()
Image iTextImage = Image.getInstance("output.png");
此解决方案有效但不太优雅。有没有办法更好地做到这一点?
答案 0 :(得分:3)
如果您查看iText API documentation for the Image class,那么您会发现使用图片还有许多其他方式而不是文件名:
static Image getInstance(byte[] imgb)
static Image getInstance(byte[] imgb, boolean recoverFromImageError)
获取Image
static Image getInstance(Image image)
获取Image
static Image getInstance(Image image, Color color)
从Image
获取java.awt.Image
的实例。static Image getInstance(Image image, Color color, boolean forceBW)
从Image
获取java.awt.Image
的实例。static Image getInstance(int width, int height, boolean reverseBits, int typeCCITT, int parameters, byte[] data)
使用CCITT G3或G4压缩创建Image
。static Image getInstance(int width, int height, boolean reverseBits, int typeCCITT, int parameters, byte[] data, int[] transparency)
使用CCITT G3或G4压缩创建Image
。static Image getInstance(int width, int height, byte[] data, byte[] globals)
创建JBIG2 Image
。static Image getInstance(int width, int height, int components, int bpc, byte[] data)
以原始模式获取Image
的实例。static Image getInstance(int width, int height, int components, int bpc, byte[] data, int[] transparency)
以原始模式获取Image
的实例。static Image getInstance(PdfContentByte cb, Image awtImage, float quality)
从Image
获取java.awt.Image
的实例。static Image getInstance(PdfTemplate template)
获取Image
static Image getInstance(PdfWriter writer, Image awtImage, float quality)
从Image
获取java.awt.Image
的实例。static Image getInstance(PRIndirectReference ref)
重复使用现有图片。static Image getInstance(String filename)
获取Image
static Image getInstance(String filename, boolean recoverFromImageError)
static Image getInstance(URL url)
static Image getInstance(URL url, boolean recoverFromImageError)
获取Image
的实例。 您可以在官方网站上找到有关如何使用java.awt.Image
的示例。请参阅ImageTypes示例:
// Adding a java.awt.Image
java.awt.Image awtImage =
Toolkit.getDefaultToolkit().createImage(RESOURCE);
img = com.itextpdf.text.Image.getInstance(awtImage, null);
document.add(new Paragraph(
String.format("%s is an image of type %s",
"java.awt.Image", img.getClass().getName())));
document.add(img);