当前位置: 首页 > 知识库问答 >
问题:

Itext表格定位

公羊奇
2023-03-14

我正在用java开发一个itext项目。基本上,在我的项目中,我在每个页面上动态放置了两个徽标(每个页面顶部放置一个徽标,页面底部放置一个地址图像)。但是,当我想在页面上添加一个表时,如果该表有这么多行,在某一点上,该表的行会出现在addres图像上,但我希望这些行换行到另一个页面,这样表的行和地址图像就不会混在一起。

下面是我想解释的图片:

http://img801.imageshack.us/img801/8074/tablejj.jpg

谢谢你的帮助。

这是我的主要观点:

公共静态void main(String[] args) {

    EventQueue.invokeLater(new Runnable() {

        public void run() {
            try {

                final denem2321 frame = new denem2321();
                frame.setVisible(true);

                // ///////////////

                frame.getMntmNewMenuItem_1().addActionListener(
                        new ActionListener() {

                            @Override
                            public void actionPerformed(ActionEvent e) {
                                final Teklif frame1 = new Teklif(list
                                        .getSelectedItem(), contactName
                                        .get(list.getSelectedItem()),
                                        hashMapReferansNameAndUrl);

                                frame1.setVisible(true);
                                JOptionPane.showMessageDialog(
                                        frame,
                                        list.getSelectedItem()
                                                + " firması için bir teklif hazırlayınız");

                                String imageUrl = "/Users/nofear/workspace/deneme23/pics/a4-ust.png";
                                String imageUrlAlt = "pics/a4-alt.png";


                                try {
                                    imageust = Image
                                            .getInstance(imageUrl);
                                } catch (BadElementException e3) {
                                    // TODO Auto-generated catch block
                                    e3.printStackTrace();
                                } catch (MalformedURLException e3) {
                                    // TODO Auto-generated catch block
                                    e3.printStackTrace();
                                } catch (IOException e3) {
                                    // TODO Auto-generated catch block
                                    e3.printStackTrace();
                                }


                                try {
                                    imageAlt = Image
                                            .getInstance(imageUrlAlt);
                                } catch (BadElementException e3) {
                                    // TODO Auto-generated catch block
                                    e3.printStackTrace();
                                } catch (MalformedURLException e3) {
                                    // TODO Auto-generated catch block
                                    e3.printStackTrace();
                                } catch (IOException e3) {
                                    // TODO Auto-generated catch block
                                    e3.printStackTrace();
                                }


                                imageust.setAbsolutePosition(
                                        0f,
                                        document.getPageSize()
                                                .getHeight()
                                                - imageust
                                                        .getHeight()-15
                                                );
                                imageAlt.setAbsolutePosition(
                                        0f, 0);






                                System.out
                                        .println("HEIGTG"
                                                + (document
                                                        .getPageSize()
                                                        .getHeight() - imageust
                                                        .getHeight()));





                                frame1.getButtonAl().addActionListener(
                                        new ActionListener() {

                                            @Override
                                            public void actionPerformed(
                                                    ActionEvent arg0) {

                                                try {
                                                    final PdfWriter writer = PdfWriter
                                                            .getInstance(
                                                                    document,
                                                                    new FileOutputStream(
                                                                            "output.pdf"));
                                                    document.open();



                                                    final PdfContentByte cb = writer
                                                            .getDirectContent();

                                                    writer.setPageEvent(new PdfPageEvent() {

                                                        @Override
                                                        public void onStartPage(PdfWriter arg0, Document arg1) {



                                                        }

                                                        @Override
                                                        public void onSectionEnd(PdfWriter arg0, Document arg1, float arg2) {
                                                            // TODO Auto-generated method stub

                                                        }

                                                        @Override
                                                        public void onSection(PdfWriter arg0, Document arg1, float arg2, int arg3,
                                                                Paragraph arg4) {
                                                            // TODO Auto-generated method stub

                                                        }

                                                        @Override
                                                        public void onParagraphEnd(PdfWriter arg0, Document arg1, float arg2) {
                                                            // TODO Auto-generated method stub

                                                        }

                                                        @Override
                                                        public void onParagraph(PdfWriter arg0, Document arg1, float arg2) {
                                                            // TODO Auto-generated method stub

                                                        }

                                                        @Override
                                                        public void onOpenDocument(PdfWriter arg0, Document arg1) {
                                                            // TODO Auto-generated method stub

                                                        }

                                                        @Override
                                                        public void onGenericTag(PdfWriter arg0, Document arg1, Rectangle arg2,
                                                                String arg3) {
                                                            // TODO Auto-generated method stub

                                                        }

                                                        @Override
                                                        public void onEndPage(PdfWriter arg0, Document arg1) {

                                                            try {
                                                                cb.addImage(imageust);
                                                                cb.addImage(imageAlt);
                                                            } catch (DocumentException e) {
                                                                // TODO Auto-generated catch block
                                                                e.printStackTrace();
                                                            }

                                                        }

                                                        @Override
                                                        public void onCloseDocument(PdfWriter arg0, Document arg1) {
                                                            // TODO Auto-generated method stub

                                                        }

                                                        @Override
                                                        public void onChapterEnd(PdfWriter arg0, Document arg1, float arg2) {
                                                            // TODO Auto-generated method stub

                                                        }

                                                        @Override
                                                        public void onChapter(PdfWriter arg0, Document arg1, float arg2,
                                                                Paragraph arg3) {
                                                            // TODO Auto-generated method stub

                                                        }
                                                    });




                                                    // now draw a line below
                                                    // the headline
                                                    cb.setLineWidth(1f);


                                                    cb.stroke();

                                                    // ////////////////////////////////////

                                                    try {
                                                        bfArial = BaseFont
                                                                .createFont(
                                                                        "C:/Windows/Fonts/arial.ttf",
                                                                        "Cp1254",
                                                                        BaseFont.NOT_EMBEDDED);
                                                    } catch (DocumentException e1) {
                                                        // TODO
                                                        // Auto-generated
                                                        // catch block
                                                        e1.printStackTrace();
                                                    } catch (IOException e1) {
                                                        // TODO
                                                        // Auto-generated
                                                        // catch block
                                                        e1.printStackTrace();
                                                    }



                                                    Font baslikFont = new Font(
                                                            bfArial, 24,
                                                            Font.BOLD);

                                                    Font pdfBaslikFont = new Font(
                                                            bfArial, 16,
                                                            Font.NORMAL);

                                                    Font pdfTarihFont = new Font(
                                                            bfArial, 12,
                                                            Font.NORMAL);

                                                    Font altBaslik = new Font(
                                                            bfArial, 12,
                                                            Font.BOLD);

                                                    Font normalWritingFont = new Font(
                                                            bfArial, 12,
                                                            Font.NORMAL);



                                                    final ColumnText ct = new ColumnText(
                                                            cb);


                                                    Calendar currentDate = Calendar
                                                            .getInstance();
                                                    SimpleDateFormat formatter = new SimpleDateFormat(
                                                            "yyyy/MMM/dd");
                                                    String dateNow = formatter
                                                            .format(currentDate
                                                                    .getTime());


                                                    Phrase firmaBaslik = new Phrase(frame1.getTextField_teklifHazirlananFirmaAdi().getText(),
                                                            baslikFont);

                                                    Phrase pdfAltBaslik = new Phrase("WEB SİTESİ TASARIM ve PROGRAMLAMA ANLAŞMASI",pdfBaslikFont);

                                                    Phrase tarih = new Phrase(dateNow, pdfTarihFont);

                                                    Phrase alanAdlari = new Phrase("Sitenin Yayınlanacağı Alan Adları: ",altBaslik);
                                                    Phrase alanAdlarIcerik = new Phrase(frame1.getTextArea_alanAdlari().getText(),normalWritingFont);

                                                    Phrase webHosting = new Phrase("\n\nWebhosting & Yayınlama: ",altBaslik);
                                                    Phrase weHostingIcerik = new Phrase(frame1.getTextArea_webHosting().getText(),normalWritingFont);

                                                    Phrase siteDil = new Phrase("\n\nSitenin Dili: ",altBaslik);
                                                    Phrase siteDilIcerik = new Phrase(frame1.getTextArea_dil().getText(),normalWritingFont);

                                                    Phrase amac = new Phrase("\n\nAmaç: ",altBaslik);
                                                    Phrase amacIcerik = new Phrase(frame1.getTextArea_amac().getText(),normalWritingFont);

                                                    Phrase kullilanProgs = new Phrase("\n\nKullanılacak Programlar: ",altBaslik);
                                                    Phrase kullanilanProgsIcerik = new Phrase(frame1.getTextArea_kullanilacakProgramlar().getText(),normalWritingFont);

                                                    ct.setSimpleColumn(
                                                            firmaBaslik,
                                                            60,
                                                            750, /* width */
                                                            document.getPageSize()
                                                                    .getWidth() - 40,
                                                            30,
                                                            25,
                                                            Element.ALIGN_CENTER);
                                                    ct.go();

                                                    ct.setSimpleColumn(
                                                            pdfAltBaslik,
                                                            60,
                                                            650, /* width */
                                                            document.getPageSize()
                                                            .getWidth() - 40,
                                                            30,
                                                            25,
                                                            Element.ALIGN_CENTER);
                                                    ct.go();

                                                    ct.setSimpleColumn(
                                                            tarih,
                                                            60,
                                                            625, /* width */
                                                            document.getPageSize()
                                                            .getWidth() - 40,
                                                            30,
                                                            25,
                                                            Element.ALIGN_CENTER);
                                                    ct.go();



                                                    ct.setSimpleColumn(
                                                            alanAdlari ,
                                                            60,
                                                            550, /* width */
                                                            document.getPageSize()
                                                            .getWidth() - 40,
                                                            30,
                                                            25,
                                                            Element.ALIGN_LEFT);
                                                    ct.setSimpleColumn(
                                                            alanAdlarIcerik ,
                                                            60,
                                                            550, /* width */
                                                            document.getPageSize()
                                                            .getWidth() - 40,
                                                            30,
                                                            13,
                                                            Element.ALIGN_LEFT);

                                                    ct.setSimpleColumn(
                                                            webHosting ,
                                                            60,
                                                            525, /* width */
                                                            document.getPageSize()
                                                            .getWidth() - 40,
                                                            30,
                                                            25,
                                                            Element.ALIGN_LEFT);

                                                    ct.setSimpleColumn(
                                                            weHostingIcerik ,
                                                            60,
                                                            525, /* width */
                                                            document.getPageSize()
                                                            .getWidth() - 40,
                                                            30,
                                                            13,
                                                            Element.ALIGN_LEFT);

                                                    ct.setSimpleColumn(
                                                            siteDil ,
                                                            60,
                                                            525, /* width */
                                                            document.getPageSize()
                                                            .getWidth() - 40,
                                                            30,
                                                            13,
                                                            Element.ALIGN_LEFT);

                                                    ct.setSimpleColumn(
                                                            siteDilIcerik ,
                                                            60,
                                                            525, /* width */
                                                            document.getPageSize()
                                                            .getWidth() - 40,
                                                            30,
                                                            13,
                                                            Element.ALIGN_LEFT);

                                                    ct.setSimpleColumn(
                                                            amac ,
                                                            60,
                                                            525, /* width */
                                                            document.getPageSize()
                                                            .getWidth() - 40,
                                                            30,
                                                            13,
                                                            Element.ALIGN_LEFT);

                                                    ct.setSimpleColumn(
                                                            amacIcerik ,
                                                            60,
                                                            525, /* width */
                                                            document.getPageSize()
                                                            .getWidth() - 40,
                                                            30,
                                                            13,
                                                            Element.ALIGN_LEFT);

                                                    ct.setSimpleColumn(
                                                            kullilanProgs ,
                                                            60,
                                                            525, /* width */
                                                            document.getPageSize()
                                                            .getWidth() - 40,
                                                            30,
                                                            13,
                                                            Element.ALIGN_LEFT);

                                                    ct.setSimpleColumn(
                                                            kullanilanProgsIcerik ,
                                                            60,
                                                            525, /* width */
                                                            document.getPageSize()
                                                            .getWidth() - 40,
                                                            30,
                                                            13,
                                                            Element.ALIGN_LEFT);


                                                    ct.go();


                                                    PdfPTable table = new PdfPTable(
                                                            2)          ;                                           
                                                    table.setTotalWidth(document
                                                            .getPageSize()
                                                            .getWidth() - 5);
                                                    table.getDefaultCell()
                                                            .setPadding(2);
                                                    table.getDefaultCell()
                                                            .setBorderWidth(1);
                                                    table.getDefaultCell()
                                                            .setHorizontalAlignment(
                                                                    Element.ALIGN_CENTER);

                                                    float[] columnWidths = {
                                                            10f, 2f, };

                                                    try {
                                                        table.setWidths(columnWidths);
                                                    } catch (DocumentException e) {
                                                        // TODO Auto-generated
                                                        // catch block
                                                        e.printStackTrace();
                                                    }
                                                    // table.setSpacingBefore(5f);

                                                    // Code 2
                                                    table.getDefaultCell()
                                                            .setGrayFill(0.9f);

                                                    table.addCell("WEB TASARIM VE PROGRAMLAMA");

                                                    table.addCell("TUTAR");
                                                    table.getDefaultCell()
                                                            .setBackgroundColor(
                                                                    new BaseColor(
                                                                            255,
                                                                            255,
                                                                            255));




                                                    document.add(table);
                                                    document.newPage();
                                                    document.add(new Paragraph("Yeni Sayfa"));





                                                } catch (Exception e) {
                                                } finally {
                                                    document.close();

                                                }

                                            }
                                        });


                            }
                        });





            } catch (Exception e) {
                e.printStackTrace();
            }

        }
    });
}

共有1个答案

双子民
2023-03-14

这是毫无疑问的。当表格不适合当前页面时,iText会自动断开表格,并将剩余部分转发到下一页。

您正在使用页面事件添加页眉和页脚,这是可以的,但是:

    < li >您应该定义文档对象的边距,以便它们考虑您作为页眉/页脚添加的图像的高度。 < li >您实际上并没有在< code>table对象中添加太多内容,但是我看到您在使用< code>ColumnText时使用了绝对位置,似乎没有考虑任何边距。

无论如何:你的代码写得不好。你应该把它打扫干净。例如:您定义页面事件的方式是疯狂的。您应该使用PdfPageEventHelper。我敢肯定,除了我之外,没有其他人会更仔细地查看当前状态下的代码。把它打扫干净!

 类似资料:
  • 我想生成一个包含客户订单的表。(简化的)表格如下所示。如果客户有多个订单,我只需将客户信息添加到客户的第一行。因此,订单1至3属于客户1,订单4属于客户 这工作正常,除非我得到一个分页符/新页面。在这种情况下,表格如下所示: 但是我希望客户1在新页面的第一个客户单元格中重复,所以它看起来像这样: 我认为填充单元格可以通过组合页面/单元格事件来完成,但这需要将所有客户单元格的最小高度设置为填充的客户

  • 在使用Itext的Java项目中,我创建了一个pdf文件,在这个文件中,我在另一个表的单元格中插入了一个较大的表。 我面临的问题是,当表格的内容超过一页时,表格将被带入下一页。相反,我想要上一页中的部分数据,只有超出该页的数据才需要转到下一页。 如何实现这一点,下面是我使用的代码。

  • 问题内容: 在itext中,我有一个块/短语/段落(我不介意哪个),我想将页面上的其他位置放置在例如300 x 200的位置。我该怎么做? 问题答案: 最后,我编写了自己的方法。

  • 我确实在google和docs中搜索了很多,但找不到解决这个问题的方法,也许你们能帮我解决这个问题吗? 我有一个来自html导出的pdf,我的表格数据在页面之间分割,请看下图: 这是一个html到pdf的转换导出,我没有在pdf中构建此表,请看: 我怎样才能解决这个问题?

  • 问题内容: 我有一个用于收件箱的简单表,如下所示: 如何设置宽度,以便“起始日期”和“日期”分别为页面宽度的15%和“主题”为70%。我还希望表格占据整个页面的宽度。 问题答案:

  • 问题内容: 许多人仍然使用表格来布局控件,数据等。-流行的jqGrid就是一个例子。但是,发生了一些我似乎无法理解的魔术(它的桌子大声喊叫,可能有多少魔术?) 如何设置表的列宽并使它像jqGrid那样遵守!?如果我尝试复制此内容,即使我设置了every ,只要这些单元格之一的内容大于20px,该单元格就会展开! 有什么想法或见解吗? 问题答案: 您可以尝试对所有行使用标签管理表样式,但是您需要在或