以下是关于使用Apache POI将对象嵌入到Excel电子表格的答案:
Workbook wb1 = new XSSFWorkbook();
Sheet sh = wb1.createSheet();
int picIdx = wb1.addPicture(getSamplePng(), Workbook.PICTURE_TYPE_PNG);
byte samplePPTX[] = getSamplePPT(true);
int oleIdx = wb1.addOlePackage(samplePPTX, "dummy.pptx", "dummy.pptx", "dummy.pptx");
Drawing<?> pat = sh.createDrawingPatriarch();
ClientAnchor anchor = pat.createAnchor(0, 0, 0, 0, 1, 1, 3, 6);
pat.createObjectData(anchor, oleIdx, picIdx);
这将使用getSamplePng()
中的图像作为预览图像创建嵌入对象。此图像锚定到行=1、列=1的单元格,并延伸到行=6、列=3。除非图像纵横比完全匹配,否则会导致图像失真。
Picture
接口提供了Resize
方法,但是似乎没有从ObjectData
获取Picture
实例的方法。
ClientAnchor anchor = drawing.createAnchor(0,
0,
imgDim.width * Units.EMU_PER_PIXEL,
imgDim.height * Units.EMU_PER_PIXEL,
columnIndex,
rowIndex,
columnIndex,
rowIndex);
我还尝试了setAnchorType(Anchortype.move_dont_resize)
,这似乎没有任何效果。
使用CreateObjectData
嵌入对象时,如何将预览图像调整到原来的大小?
XSSFClientAnchor
类提供了一个构造函数,允许提供左上角单元格(作为CTPoint2D
对象)和对象大小(以CTPositiveSize2D
的形式)。但是,此构造函数受到保护。
解决办法是将该类扩展为接受左上角单元格坐标以及宽度和高度(以EMU为单位)的类:
class SizedClientAnchor extends XSSFClientAnchor
{
private SizedClientAnchor(XSSFSheet sheet, int columnIndex, int rowIndex, int w, int h)
{
super((XSSFSheet) cell.getSheet(), createCTMarker(columnIndex, rowIndex), getSize2D(w, h));
}
private static CTMarker createCTMarker(int columnIndex, int rowIndex)
{
CTMarker ret = CTMarker.Factory.newInstance();
ret.setCol(columnIndex);
ret.setColOff(0);
ret.setRow(rowIndex);
ret.setRowOff(0);
return ret;
}
private static CTPositiveSize2D getSize2D(int w, int h)
{
CTPositiveSize2D ret = CTPositiveSize2D.Factory.newInstance();
ret.setCx(w);
ret.setCy(h);
return ret;
}
}
原始代码如下所示:
ClientAnchor anchor = new SizedClientAnchor(sh,
columnIndex,
rowIndex,
imgDim.width * Units.EMU_PER_PIXEL,
imgDim.height * Units.EMU_PER_PIXEL);
问题内容: 是否有可靠的,独立于框架的方法来确定客户端调整大小的物理尺寸? 问题答案: 您有2个选项: 选项1: 删除和属性,然后读取和 选项2: 创建一个JavaScript 对象,设置,然后读取和(您甚至不必将其添加到页面中即可执行此操作)。 由Pekka编辑 :按照评论中的约定,我更改了功能以在图像的“ onload”事件上运行。否则,大图像,而不会因为在拍摄时尚未加载任何回报。
问题内容: 在Java中,如何将图像的大小调整为任何类型或大小的默认大小? 问题答案: 网上有很多关于如何执行此操作的文章,类似的内容应该可以帮助您: 最终的Java图像处理(包括 许多 其他图像功能)
问题内容: 即时通讯试图在Java的内存中调整bufferdImage的大小,但要保持图像的长宽比,即时通讯有类似这样的内容,但这不好 问题答案: 您可以查看perils-of-image- getscaledinstance.html ,它解释了为什么应避免在某些答案中使用的原因。 本文还提供了替代代码。
问题内容: 我正在尝试使用来使我的图像在某些flexbox容器内响应,并且在调整图像的大小时,布局似乎保持原始图像的大小,从而导致出现滚动条。 使用Chrome开发工具检查图像的宽度后,该宽度仍然为1024(但是高度已适当减小)。 我是否缺少一些其他CSS属性? 问题答案: 您拥有的是合乎逻辑的,您只需要了解其工作原理即可。让我们从一个简单的例子开始: 如您所见,我使用了在框内拉伸的图像,因此破坏
我已经发布了一个与此相关的问题(电子邮件中的HTML嵌入式图像未显示),并更新了我的脚本以包含cid,但现在我的图像是附加的,而不是内联的。我不确定如何在outlook对象中使用内联图像。 然后创建一个outlook对象并将其与附件一起发送。 它是附加的,没有任何问题,但不嵌入内联。有谁能帮上忙吗。 我没有smtp服务器的详细信息,所以我不能使用smtp客户端。所以我试着像下面这样使用这个类Sys
我找到了这条线索-如何拉伸图像以填充 我有一个具有一定大小的div和其中的图像。无论图像是横向还是纵向,我都想始终用图像填充div。图像是否被切断也没关系(div本身隐藏了溢出)。 因此,如果图像是纵向的,我希望宽度是100%,高度是自动的,所以它保持成比例。如果图像是横向的,我希望高度为100%,宽度为自动。听起来很复杂对吧? 因为我不知道怎么做,我只是简单地创建了一个我的意思的快速图像。我甚至