首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > PowerDesigner >

itext生成PDF时生成图片的有关问题

2012-11-08 
itext生成PDF时生成图片的问题最近需要做一个报告生成,需要生成PDF格式,就采用了itext。在网上也学习了许多

itext生成PDF时生成图片的问题
最近需要做一个报告生成,需要生成PDF格式,就采用了itext。
在网上也学习了许多itext的使用,报告生成的程序也能跑起来了,却发现了一个问题:
在报告生成的过程中,生成的图片与段落文章并不是按照所调用的顺序生成的。
例如,我期望生成的格式:
标题一
图片一
标题二
图片二
标题三
图片三

由于图片二比较大,无法与上面的内容共用一个页面,那么图片二就自动被切割到下一页了。而上一页剩余的空白,由于标题三可以被容纳下,就把标题三放入了上一页。
生成结果如下:

标题一
图片一
标题二
标题三
图片二
图片三

在网上寻找了很久,可能用这的人也不多,也很多没有用到存储图片,没有找到这方面的问题。IT人,就要执着。凭着这份执着,我先是在itext的API中寻找有没有设置顺序的方法,找了Image类,Document类,PdfWriter类,没有寻找到结果。
我也想试试能不能把图片放入到Paragraph中,这样按照段落的形式,就不会出现逆序了。没有这样的方法。
只能到itext官方网站上,下载所有关于Image的例子看,终于发现了这个方法:
利用PdfWriter类的setStrictImageSequence(boolean ) 方法,便能解决问题。  苦难啊,一个小方法,找了那么久!
例子:摘自itext官方

public static void main(String[] args) {                System.out.println("ImageSequence");                // step 1: creation of a document-object        Document document = new Document();                try {            // step 2:            // we create a writer that listens to the document            // and directs a PDF-stream to a file            PdfWriter.getInstance(document, new FileOutputStream("notInSequence.pdf"));            PdfWriter writer = PdfWriter.getInstance(document, new FileOutputStream("inSequence.pdf"));            writer.setStrictImageSequence(true);                        // step 3: we open the document            document.open();                        // step 4:            document.add(new Paragraph("1st image"));            Image jpg = Image.getInstance("otsoe.jpg");            document.add(jpg);            document.add(new Paragraph("2nd image"));            Image gif= Image.getInstance("getacro.gif");            document.add(gif);            document.add(new Paragraph("3rd image"));            document.add(jpg);            document.add(new Paragraph("4th image"));            document.add(gif);            document.add(new Paragraph("5th image"));            document.add(jpg);            document.add(new Paragraph("6th image"));            document.add(gif);            document.add(new Paragraph("7th image"));            document.add(jpg);        }        catch(DocumentException de) {            System.err.println(de.getMessage());        }        catch(IOException ioe) {            System.err.println(ioe.getMessage());        }                // step 5: we close the document        document.close();    }

1 楼 sfh 2009-05-27   我觉得这个应该默认就为true,不然真叫人郁闷! 2 楼 wnzz95391511 2009-05-27   sfh 写道
我觉得这个应该默认就为true,不然真叫人郁闷!

我也同意~
按照普通的思维应该也是顺序排列 3 楼 java_base 2010-11-10   谢谢了 郁闷了两天,顿悟了~

热点排行