使用iTextPDF API创建PDF时遇到问题:无法维护指定元素的顺序
我正在我的项目中使用itextPDF API。场景是添加几个段落,然后是一个图像,然后是一系列文本 说:n次 1.文本内容 2.形象 3.文本内容 我将#1文本内容#2图像和#3添加到段落中,然后添加到文档中。 我尝试了两幅图像,一幅小,一幅大(需要一页才能在pdf上呈现) 小的效果很好,但当试图添加一个更大的图像时,上面的序列不符合顺序 在图像开始出现后添加的文本,在图像滑到下一页之前。这是因为图像需要一个文本 整个页面继续到下一页,但图片下方的文本在当前页面上爬行,这是不可预料的 我尝试在章节中添加段落,这很有效,但始终会显示章节号。当我设置Chapter.setTriggerNewPage(false)时,设置相同 如上所述的行为已被观察到 我已经附上了这两个来源,我可以请求你帮助我解决这个问题 1.使用段落 2.使用章节使用iTextPDF API创建PDF时遇到问题:无法维护指定元素的顺序,itext,Itext,我正在我的项目中使用itextPDF API。场景是添加几个段落,然后是一个图像,然后是一系列文本 说:n次 1.文本内容 2.形象 3.文本内容 我将#1文本内容#2图像和#3添加到段落中,然后添加到文档中。 我尝试了两幅图像,一幅小,一幅大(需要一页才能在pdf上呈现) 小的效果很好,但当试图添加一个更大的图像时,上面的序列不符合顺序 在图像开始出现后添加的文本,在图像滑到下一页之前。这是因为图像需要一个文本 整个页面继续到下一页,但图片下方的文本在当前页面上爬行,这是不可预料的 我尝试在章
publictest3(){
//TODO自动生成的构造函数存根
}
公共静态图像getImageFromResource(字符串URI){
图像=空;
试一试{
image=image.getInstance(URI);
}捕获(Badelement异常e){
//TODO自动生成的捕捉块
e、 printStackTrace();
}捕获(格式错误){
//TODO自动生成的捕捉块
e、 printStackTrace();
}捕获(IOE异常){
//TODO自动生成的捕捉块
e、 printStackTrace();
}
返回图像;
}
公共静态void main(字符串[]args){
文件=新文件(PageSize.A4、50、50、50、50);
试一试{
getInstance(文档,新文件输出流(“D:\\test\\TestPage.pdf”);
document.open();
第p段=新的第()段;
p、 添加(“图像前预期的文本”);
第p1段=新的第()段;
Image=getImageFromResource(“D:\\test\\test.jpg”);
p1.添加(图像);
第p2段=新的第()段;
p2.添加(“图像后预期文本”);
对于(int i=0;i是否希望在页面上呈现图像?一种解决方案是使用document.next()在图像之前和/或之后插入分页符。您还可以尝试将所有3个元素包装到另一个对象中,例如IText中的短语和块。在编写器声明之前添加此行:
writer.setStrictImageSequence(true);
我以前也有同样的问题。我用这条线解决了它们
我在这里找到了解决方案:
文档:您可以使用任何其他第三方dll创建pdf吗?如果可以,请告诉我,我将为您提供另一个用于创建pdf的第三方dll的参考。
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();
}
writer.setStrictImageSequence(true);