java - jPDFWriter库,将表格写入pdf文件

标签 java pdf datatable

有谁知道如何使用 jPDFWriter 库(java 中)将包含行和列的表格写入 pdf 文件。我不想使用常用的 IText 库,因为它不是免费的。

如果您可以给出此类用法的示例或引用,将会很有帮助。 我在网上找不到任何东西。

最佳答案

   import com.qoppa.pdfWriter.PDFPrinterJob;

import javax.swing.*;
import java.awt.*;
import java.awt.print.PageFormat;
import java.awt.print.Printable;
import java.util.Vector;

public class PrintPanelToPDF implements Printable
{
    public static void main (String [] args)
    {
        try
        {
            // create a PDF Printer Job
            PDFPrinterJob printer = (PDFPrinterJob)PDFPrinterJob.getPrinterJob();
            // set the printable object
            printer.setPrintable (new PrintPanelToPDF());
            // set number of copies to 1
            printer.setCopies (1);
            // print and save the document
            printer.print("out.pdf");
            // output done message
            System.out.println("Done!");
        }
        catch (Throwable t)
        {
            t.printStackTrace();
        }
    }

    public JTable createJTable(){

        Vector<String> rowOne = new Vector<String>();
        rowOne.addElement("Row1-Column1");
        rowOne.addElement("Row1-Column2");
        rowOne.addElement("Row1-Column3");

        Vector<String> rowTwo = new Vector<String>();
        rowTwo.addElement("Row2-Column1");
        rowTwo.addElement("Row2-Column2");
        rowTwo.addElement("Row2-Column3");

        Vector<String> columnNames = new Vector<String>();
        columnNames.addElement("Column One");
        columnNames.addElement("Column Two");
        columnNames.addElement("Column Three");

        Vector<Vector> rowData = new Vector<Vector>();
        rowData.addElement(rowOne);
        rowData.addElement(rowTwo);

        JTable table = new JTable(rowData, columnNames);
        table.setVisible(true);
        table.setSize(600, 500);
        //table.setLocation(0,200);
        table.setBounds(30,40,600,600);

        return table;
    }

    public int print (Graphics g, PageFormat pf, int pageIndex)
    {
        if (pageIndex == 0)
        {

            // translate the graphics for margins
            g.translate(0, 0);

            // create a panel with a label and a textfield
            JPanel myPanel = new javax.swing.JPanel();
            myPanel.setName("myPanel");
            myPanel.setBorder(new javax.swing.border.EtchedBorder());
            myPanel.setBounds(new java.awt.Rectangle(0, 0, 612, 792));
            // create a label
            JLabel myLabel = new JLabel("MyLabel");
            myLabel.setText("Label");
            myLabel.setLocation(10, 10);
            myLabel.setSize(50, 20);
            myLabel.setVisible(true);
            // add label to panel
            myPanel.add(myLabel);
            // create a text field
            JTextField myTextField = new JTextField();
            myTextField.setText("My Text");
            myTextField.setLocation(65, 10);
            myTextField.setSize(50, 20);
            myTextField.setVisible(true);
            // add text field to panel
            myPanel.add(myTextField);
            myPanel.add(createJTable());
            // you can add any swing component here
            // .....
            // revalidate and repaint the panel
            myPanel.revalidate();
            myPanel.repaint();
            // print the panel to the graphics on page 0
            myPanel.print (g);
            return Printable.PAGE_EXISTS;
        }
        else
        {
            return Printable.NO_SUCH_PAGE;
        }
    }

关于java - jPDFWriter库,将表格写入pdf文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59455370/

相关文章:

javascript - 将 sTyle 设置为动态 jquery 数据表中的所有列

c# - 从数据集中的表返回列值

java - PSelectionEventHandler 不触发回调

java - Spring中使用@Query注解的原生查询

java - 通过添加类的两个 BigDecimal 类型属性进行分组

javascript - 从nodejs中的响应生成空白PDF文件

java - 复制 Android Java 类的正确方法 w。所有必需的资源

pdf - 在 netsuite 高级 pdf 模板中,无论如何都可以限制字符串中的字符

python - 下载然后删除许多文件,这些文件加在一起非常大,有问题吗?

twitter-bootstrap - Bootstrap 模式中的数据表固定标题不起作用