我正在阅读一个docx模板,做一些mods并输出它。我正在复制文档的所有元素,除了位图之外,一个标记出现在位图应该包含文本的地方,“此图像当前无法显示”。我已经试过几次了。
将位图从一个文档复制到另一个文档的推荐方法是什么?
我可以获得如下图像:
addPictureData(pic,outputDoc.picture_type_gif);
非常感谢您的任何帮助。对Apache-POI印象深刻。
很晚的回答,但谁知道呢…如果要将一个文档的图片复制到另一个文档,请尝试以下操作:
public void copyAllImages( XWPFDocument sourceDocument, XWPFDocument targetDocument ) {
Map<String, Integer> extractedImages = new HashMap<String, Integer>();
XWPFPictureData pictureData = null;
// 1. Writing all found images to the disk (to the same folder as your source document)
for ( XWPFParagraph par : sourceDocument.getParagraphs() ) {
for ( XWPFRun run : par.getRuns() ) {
for ( XWPFPicture picture : run.getEmbeddedPictures() ) {
pictureData = picture.getPictureData();
byte[] img = pictureData.getData();
String fileName = pictureData.getFileName();
int imageFormat = pictureData.getPictureType();
writeByteArrayToFile( img, fileName );
extractedImages.put( fileName, imageFormat );
}
}
}
// 2. Writing images from the disk to the final document,
// creating 1 new paragraph with 1 run for each image.
for ( String imageFileName : extractedImages.keySet() ) {
XWPFParagraph newParagraph = targetDocument.createParagraph();
XWPFRun newRun = newParagraph.createRun();
copyImageToRun( imageFileName, newRun, extractedImages.get( imageFileName ) );
}
}
private static void writeByteArrayToFile( byte[] byteArray, String fileName ) {
FileOutputStream out = null;
try {
out = new FileOutputStream( new File( fileName ) );
out.write( byteArray );
} catch ( Exception e ) {
e.printStackTrace();
} finally {
try {
out.close();
} catch ( Exception e ) {
e.printStackTrace();
}
}
}
private void copyImageToRun( String imageFileName, XWPFRun run, int format ) {
run.setText( imageFileName );
run.addBreak();
try {
run.addPicture( new FileInputStream( imageFileName ), format, imageFileName,
Units.toEMU( 200 ), Units.toEMU( 200 ) ); // 200x200 pixels
} catch ( Exception e ) {
e.printStackTrace();
}
run.addBreak( BreakType.PAGE );
}
因此,只需两个XWPFDocument对象,将它们传递给第一个函数(copyAllImages),然后像往常一样使用document.write(out)
保存这些文档。根据您的需要,您还可以在步骤1中添加将复制段落的所有内容(不仅仅是图像)的代码。也许可以跳过将图像写入磁盘,直接将pictureData插入到新创建的运行中。然而,我没有设法使它工作(图像根本没有出现)。但采用两步法,最终给出了一个结果。
希望有帮助!
问题内容: 从文档中的示例来看,似乎不应该有任何输出 但是,当我在python shell中尝试时,列表会被打印出来。我想知道这是否是默认行为,以及如何抑制的输出。 问题答案: 这是按清洁度递减的顺序 抑制 输出的方法。他们假设您使用的是Python 3。 您可以重定向到特殊目标。 import subprocess subprocess.run([‘ls’, ‘-l’], stdout=subp
问题内容: 我是python的新手,正在编写一些脚本来自动从FTP服务器等下载文件。我想显示下载进度,但是我希望它保持不变,例如: 输出: 正在下载文件FooFile.txt [47%] 我正在尝试避免这样的事情: 我应该怎么做呢? 复制 : 如何在命令行应用程序的当前行上打印? 问题答案: 您还可以使用回车符:
本文向大家介绍如何复制或克隆Java ArrayList?,包括了如何复制或克隆Java ArrayList?的使用技巧和注意事项,需要的朋友参考一下 java.util.ArrayList类的 clone()方法返回此ArrayList实例的浅表副本(即,不复制元素本身)。使用此方法,可以将一个数组列表的内容复制到另一个数组列表。 示例 输出结果
在此处输入图像描述 > HTML CSS #主输入:焦点{大纲:无!重要;边框: 2px固体hsl(0, 93%, 68%);} #箭头图标{宽度:90px;高度:52px;位置:绝对;背景:线性渐变(向右,hsl(0,80%,86%)0%,hsl(0,74%,74%)100%);边距顶部:35px;边距左侧:-91px;边框半径:30px;方框阴影:3px16px 10px 0px#f4dddd
问题内容: 我需要编写一个简单的基于终端的程序, 使用包裹在BufferedReader中的FileReader从文件中读取一些文本。 将文本打印到控制台,用户应该可以对其进行修改。 输入Enter + S后,程序应读取修改后的文本并将其保存回原始文件。 总而言之,这个想法是为没有GUI的类Unix环境编写一个文本编辑器。 但是,我在步骤2和3中遇到问题。 System.out打印的所有文本都是不
问题内容: 使用终端时,如何将命令的输出传递到剪贴板中并粘贴回去?例如: 问题答案: 我一直想做到这一点,并找到了一种很好而简单的方法。我写下了完整的程序,以防万一其他人需要它。 首先安装一个名为16 kB的程序: 然后,您可以通过管道将输出复制到剪贴板: 要粘贴刚复制的文本,应使用: 为了简化生活,您可以像我一样在.bashrc文件中设置别名: 要了解它的用处,想象一下我想在一个新的终端窗口中打