gpt4 book ai didi

将表格数据转换为 PNG 图像文件的 Java API 或工具

转载 作者:行者123 更新时间:2023-12-02 08:11:27 27 4
gpt4 key购买 nike

有没有一种方法可以让 Java API 或应用程序将 CSV 表格数据转换为文本,并将其转换为带有线条、网格和标题的 PNG 文件?

现在,我正在考虑使用 xhtmlrenderer 将 HTML 数据转换为图像。

更新:安德鲁给出了很好的回应,我将其设置为答案。另外,我使用 xhtmlrenderer/flying Sauser 将 html 文档转换为图像,结果相同。这和他的例子花费了同样多的努力。

http://code.google.com/p/flying-saucer/

现在,在 github 上:

https://github.com/berlinbrown/XHTMLRendererForHtmlDataToImage

最佳答案

你能读取表格数据并将其放入JTable吗?

如果是这样,则调用 table.paintComponent(Graphics) 是 protected 方法 - 请参阅 table.paint(Graphics),其中Graphics 对象是从表格的首选尺寸的图像中获取的。

<小时/>

Could you provide a more complete example?

Table image

这个示例使用 Nimbus PLAF 进行“交替行着色”,我认为每个表都应该有。

import java.awt.*;
import java.awt.image.BufferedImage;
import javax.swing.*;
import javax.swing.table.JTableHeader;

import javax.imageio.ImageIO;
import java.io.File;

class TableImage {

public static void main(String[] args) throws Exception {
try {
UIManager.setLookAndFeel("com.sun.java.swing.plaf.nimbus.NimbusLookAndFeel");
} catch(Exception useDefault) {
}

Object[][] data = {
{"Hari", new Integer(23), new Double(78.23), new Boolean(true)},
{"James", new Integer(23), new Double(47.64), new Boolean(false)},
{"Sally", new Integer(22), new Double(84.81), new Boolean(true)}
};

String[] columns = {"Name", "Age", "GPA", "Pass"};

JTable table = new JTable(data, columns);
JScrollPane scroll = new JScrollPane(table);

JPanel p = new JPanel(new BorderLayout());
p.add(scroll,BorderLayout.CENTER);

// JTable must have been added to a TLC in order to render
// correctly - go figure.
JFrame f = new JFrame("Never shown");
f.setContentPane(scroll);
f.pack();

JTableHeader h = table.getTableHeader();
Dimension dH = h.getSize();
Dimension dT = table.getSize();
int x = (int)dH.getWidth();
int y = (int)dH.getHeight() + (int)dT.getHeight();

scroll.setDoubleBuffered(false);

BufferedImage bi = new BufferedImage(
(int)x,
(int)y,
BufferedImage.TYPE_INT_RGB
);

Graphics g = bi.createGraphics();
h.paint(g);
g.translate(0,h.getHeight());
table.paint(g);
g.dispose();

JOptionPane.showMessageDialog(null, new JLabel(new ImageIcon(bi)));
ImageIO.write(bi,"png",new File("table.png"));

// our TLC forces us to explicitly exit the VM
System.exit(0);
}
}

关于将表格数据转换为 PNG 图像文件的 Java API 或工具,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7363491/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com