我在我的项目中使用了itextPDF API。场景是添加一些段落,然后是图像,然后是一系列文本。
说:n次 1.TEXT内容 2.IMAGE 3.TEXT内容
我在段落中添加了#1 TEXT CONTENT,#2.IMAGE和#3,然后进行了记录。 我尝试了两个小图像和一个大图像(需要在pdf上呈现一页) 小的工作正常,但是当试图添加更大的图像时,上面的顺序不合适。
在图像开始出现在图像之前添加的文本和图像滑到下一页。这是因为图像需要一个
整页所以继续下一页,但是当前页面上的文字在图片上悄悄上升,这是不可预期的。
我尝试使用Paragraph添加到章节,该章虽然有效,但总是显示章节编号。当我设置chapter.setTriggerNewPage(false)相同时
看到上面详述的行为。我已经附上了这两个来源,我是否可以请求您帮我解决此问题。
public Test3() {
// TODO Auto-generated constructor stub
}
public static Image getImageFromResource(String URI){
Image image = null;
try {
image = Image.getInstance(URI);
} catch (BadElementException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (MalformedURLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return image;
}
public static void main(String[] args) {
Document document = new Document(PageSize.A4, 50, 50, 50, 50);
try {
PdfWriter.getInstance(document , new FileOutputStream("D:\\test\\TestPage.pdf"));
document.open();
Paragraph p = new Paragraph();
p.add("TEXT EXPECTED BEFORE IMAGE ");
Paragraph p1 = new Paragraph();
Image image = getImageFromResource("D:\\test\\Test.jpg");
p1.add(image);
Paragraph p2 = new Paragraph();
p2.add("TEXT EXPECTED AFTER IMAGE ");
document.add(p2);
document.add(p1);
document.add(p);
} catch(DocumentException de) {
System.err.println(de.getMessage());
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
document.close();
}
public Test3() {
// TODO Auto-generated constructor stub
}
public static Image getImageFromResource(String URI){
Image image = null;
try {
image = Image.getInstance(URI);
} catch (BadElementException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (MalformedURLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return image;
}
public static void main(String[] args) {
Document document = new Document(PageSize.A4, 50, 50, 50, 50);
try {
PdfWriter.getInstance(document , new FileOutputStream("D:\\test\\TestPage.pdf"));
document.open();
Paragraph p = new Paragraph();
p.add("TEXT EXPECTED BEFORE IMAGE ");
Paragraph p1 = new Paragraph();
Image image = getImageFromResource("D:\\test\\Test.jpg");
p1.add(image);
Paragraph p2 = new Paragraph();
p2.add("TEXT EXPECTED AFTER IMAGE ");
for(int i=0;i<10;i++){
Chapter chapter1 = new Chapter(p, 1);
Chapter chapter2 = new Chapter(p1, 2);
Chapter chapter3 = new Chapter(p2, 3);
document.add(chapter1);
document.add(chapter2);
document.add(chapter3);
}
} catch(DocumentException de) {
System.err.println(de.getMessage());
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
document.close();
}
提前致谢, 基兰
答案 0 :(得分:1)
您是否希望图像在页面上呈现?一种解决方案是使用document.next()在图像之前和/或之后插入分页符。您还可以尝试将所有3个元素包装到另一个对象中,例如IText中的短语和块。
答案 1 :(得分:1)
在编写声明之前添加此行:
writer.setStrictImageSequence(true);
我曾经遇到过同样的问题。我用这条线解决了他们。
我在这里找到了解决方案:iText - Insert image into PDF
文档:API