【问题标题】:Printing an image with some text in java在java中打印带有一些文本的图像
【发布时间】:2012-10-17 12:15:09
【问题描述】:

我需要在打印机上使用 java (Swing) 打印图像和一些数据,但都是徒劳的。我只能处理数据,但不能处理图像。我有一个 abc.png 文件和 6 个 jTextBoxes,必须在打印机上打印其中的值。我正在使用 FileWriter 和 PrinterJob 类来实现该作业。数据和图像可以分开打印,但不能一起打印。谁能给我一些建议。

谢谢。

图片打印代码:

try {
PrintRequestAttributeSet pras = new HashPrintRequestAttributeSet();
pras.add(new Copies(1));

PrintService pss[] = PrintServiceLookup.lookupPrintServices(DocFlavor.INPUT_STREAM.GIF,     pras);

if (pss.length == 0)
throw new RuntimeException("No printer services available.");

PrintService ps = pss[0];
System.out.println("Printing to " + ps);

DocPrintJob job = ps.createPrintJob();

FileInputStream fin = new FileInputStream("C://a.gif");


Doc doc = new SimpleDoc(fin, DocFlavor.INPUT_STREAM.GIF, null);

//Doc doc1=new SimpleDoc();



job.print(doc, pras);

//fin.close();
} catch (IOException ie) {
ie.printStackTrace();
} catch (PrintException pe) {
pe.printStackTrace();
}

打印文本的代码:

只需在 FileInputStream 中传递文件在硬盘上的位置。

【问题讨论】:

  • 你能发布代码如何尝试将图像和文本发送到打印机吗?
  • Glen Lamb 我今天看到了,我会努力让它知道的。

标签: java image text printing


【解决方案1】:

一种解决方案可能是创建包含原始图像和文本的第二张图像。

这样的方法可能有用吗? (未经测试):

public Image addTextToImage(BufferedImage i, String[] text) {

    final int VERTICLE_PADDING_PIXELS = 5;
    final int LEFT_MARGIN_PIXELS = 5;

    FontMetrics fm = i.createGraphics().getFontMetrics();

    int width = i.getWidth();
    int height = i.getHeight()
            + (text.length * (fm.getHeight() + VERTICLE_PADDING_PIXELS));

    for (String s : text) {
        width = Math.max(width, fm.stringWidth(s) + LEFT_MARGIN_PIXELS);
    }

    BufferedImage result = new BufferedImage(i.getHeight(), width, height);

    Graphics2D g = result.createGraphics();

    g.drawImage(i, 0, 0, null);

    for (int x = 0; x < text.length; x++) {
        g.drawString(text[x], LEFT_MARGIN_PIXELS, i.getHeight() + (x + 1) *VERTICLE_PADDING_PIXELS + x*fm.getHeight());
    }

    return result;
}

【讨论】:

    猜你喜欢
    • 2012-05-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多