Java Android中的Docx4j抛出验证错误
在我的android应用程序中,我想创建一个带有图像文件的word文档。为此,我已下载并复制到libs文件夹中。当我试图从路径中获取图像(也从ImageView中获取位图)并保存到文档中时,应用程序因下面附加的错误而崩溃 下面给出了我尝试过的代码片段Java Android中的Docx4j抛出验证错误,java,android,docx4j,Java,Android,Docx4j,在我的android应用程序中,我想创建一个带有图像文件的word文档。为此,我已下载并复制到libs文件夹中。当我试图从路径中获取图像(也从ImageView中获取位图)并保存到文档中时,应用程序因下面附加的错误而崩溃 下面给出了我尝试过的代码片段 import java.io.ByteArrayOutputStream; import org.docx4j.dml.wordprocessingDrawing.Inline; import org.docx4j.openpackaging.
import java.io.ByteArrayOutputStream;
import org.docx4j.dml.wordprocessingDrawing.Inline;
import org.docx4j.openpackaging.exceptions.InvalidFormatException;
import org.docx4j.openpackaging.packages.WordprocessingMLPackage;
import org.docx4j.openpackaging.parts.WordprocessingML.BinaryPartAbstractImage;
import org.docx4j.wml.Drawing;
import org.docx4j.wml.ObjectFactory;
import org.docx4j.wml.P;
import org.docx4j.wml.R;
import android.graphics.Bitmap;
import android.graphics.Canvas;
import android.view.View;
public class SaveWordDocument {
public SaveWordDocument(View v) {
// TODO Auto-generated constructor stub
try {
WordprocessingMLPackage wordMLPackage = WordprocessingMLPackage
.createPackage();
Bitmap bmp = loadBitmapFromView(v);
ByteArrayOutputStream stream = new ByteArrayOutputStream();
bmp.compress(Bitmap.CompressFormat.PNG, 100, stream);
byte[] bytes = stream.toByteArray();
try {
addImageToPackage(wordMLPackage, bytes);
wordMLPackage.save(new java.io.File(
"/sdcard0/OrderPlace/Order.docx"));
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} catch (InvalidFormatException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
private static void addImageToPackage(
WordprocessingMLPackage wordMLPackage, byte[] bytes)
{
BinaryPartAbstractImage imagePart;
try {
imagePart = BinaryPartAbstractImage
.createImagePart(wordMLPackage, bytes);
int docPrId = 1;
int cNvPrId = 2;
Inline inline = imagePart.createImageInline("Filename hint",
"Alternative text", docPrId, cNvPrId, false);
P paragraph = addInlineImageToParagraph(inline);
wordMLPackage.getMainDocumentPart().addObject(paragraph);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
private static P addInlineImageToParagraph(Inline inline) {
// Now add the in-line image to a paragraph
ObjectFactory factory = new ObjectFactory();
P paragraph = factory.createP();
R run = factory.createR();
paragraph.getContent().add(run);
Drawing drawing = factory.createDrawing();
run.getContent().add(drawing);
drawing.getAnchorOrInline().add(inline);
return paragraph;
}
public static Bitmap loadBitmapFromView(View v) {
Bitmap b = Bitmap.createBitmap(v.getLayoutParams().width,
v.getLayoutParams().height, Bitmap.Config.ARGB_8888);
Canvas c = new Canvas(b);
v.layout(v.getLeft(), v.getTop(), v.getRight(), v.getBottom());
v.draw(c);
return b;
}
}
当我调试代码时,错误会在下面一行抛出
WordprocessingMLPackage wordMLPackage = WordprocessingMLPackage
.createPackage();
即使我试了几个小时也找不到解决方案。请帮我找到解决方案。google.com说这个库与android不兼容……你能提到它的链接吗。如果是这样,你能告诉我用android创建word文档的替代方法吗@塞尔文:你提到上面说的链接了吗?在第一个简单的谷歌查询链接(这是一个链接到苏的问题)。。。你能告诉我用android创建word文档的另一种方法吗?不,因为要求我们推荐或查找书籍、工具、软件库、教程或其他非现场资源的问题与堆栈溢出无关。。。。换句话说:请学习如何使用谷歌搜索(或其他网络搜索引擎),这样就不是人工搜索引擎了。谢谢你帮我找到解决方案。但是,我找不到任何地方提到它不是android的。@SelvinCan你能告诉我这些链接吗,。特别是你能告诉我第一个链接是什么吗@塞尔文