0000
作家
作家
  • 铜币143枚
  • 威望34点
  • 贡献值1点
阅读:1460回复:9

打印程序打出一个黑乎乎的东西!!

楼主#
更多 发布于:2006-03-14 11:24
实际上,没那么吓人,不知道为什么,它打出了一个黑的边框
在打印的内容里没有任何东西可以产生这个边框的

而且有个现象是:
用a3的纸,打没有那么大的东西也会出一个a3那么大的黑边框
这是啥原因?。。

同一个打印机,用excel打印的时候又没有那个边框

程序 Java 1.5
打印机: hp 1180c
纸张:a3
.--. |o_o | |:_/ | // \ \ (| | ) /'\_ _/`\ \___)=(___/
猪八戒
写手
写手
  • 铜币1枚
  • 威望0点
  • 贡献值0点
1C#
发布于:2006-03-17 17:11
Re:打印程序打出一个黑乎乎的东西!!
俺的第6666帖。。。希望能给偶解决问题帖代码鸟这是打印预览,点一下打印就能出打印的那个东西,有什么打印机选择的,不是重点import java.awt.BorderLayout;import java.awt.Dimension;import java.awt.Toolkit;im..


 g2.draw(new Rectangle2D.Double(0, 0, pf.getImageableWidth(), pf
                .getImageableHeight()));

这一行是不是画一个方框的函数?我瞎猜的
我回帖还是有质量的
松柏
论坛版主
论坛版主
  • 铜币371枚
  • 威望39点
  • 贡献值0点
  • 社区居民
2C#
发布于:2006-03-14 20:21
Re:打印程序打出一个黑乎乎的东西!!
调试时用的吧
[color=#0000FF]馋嘴蜗牛[/color] 我的博客:[url]http://osnaile.osdn.cn/[/url]
0000
作家
作家
  • 铜币143枚
  • 威望34点
  • 贡献值1点
3C#
发布于:2006-03-14 14:20
Re:打印程序打出一个黑乎乎的东西!!

g2.draw(new Rectangle2D.Double(0, 0, pf.getImageableWidth(), pf
                .getImageableHeight()));

我晕。。。啥时候写的这一行!!!

去掉就没事了
.--. |o_o | |:_/ | // \ \ (| | ) /'\_ _/`\ \___)=(___/
0000
作家
作家
  • 铜币143枚
  • 威望34点
  • 贡献值1点
4C#
发布于:2006-03-14 13:33
Re:打印程序打出一个黑乎乎的东西!!
俺的第6666帖。。。希望能给偶解决问题

帖代码鸟

这是打印预览,点一下打印就能出打印的那个东西,有什么打印机选择的,不是重点
import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.print.PrinterException;
import java.awt.print.PrinterJob;

import javax.print.attribute.HashPrintRequestAttributeSet;
import javax.print.attribute.PrintRequestAttributeSet;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JPanel;

import cn.osdn.mr0.print.controller.GUIController;
import cn.osdn.mr0.print.model.Certificate;
/**
 * 打印预览窗口
 * @author m(_O_)m
 *
 */
public class PreviewFrame extends JFrame {
	private PrintPreview preview;
	private PrintRequestAttributeSet attributes;

	public PreviewFrame(Certificate certificate) {
		super("打印预览");
		preview = new PrintPreview(certificate);
		add(preview, BorderLayout.CENTER);
		Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
		
		/*
		 * 窗口居中
		 */
		int width = 800;
		int height = 610;

		this.setLocation(screenSize.width / 2 - width / 2, screenSize.height
				/ 2 - height / 2);
		this.setSize(width, height);

		attributes = new HashPrintRequestAttributeSet();

		JPanel buttonPanel = new JPanel();
		JButton printButton = new JButton("打印");
		printButton.setName("button.print");
		buttonPanel.add(printButton);
		printButton.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent event) {
				try {
					GUIController.setLookAndFeel(GUIController.systemLAF);
					PrinterJob job = PrinterJob.getPrinterJob();
					job.setPrintable(preview);
					if (job.printDialog(attributes))
						job.print(attributes);
				} catch (PrinterException e) {
					JOptionPane.showMessageDialog(PreviewFrame.this, e);
				}
			}
		});

		JButton pageSetupButton = new JButton("页面设置");
		pageSetupButton.setName("button.pageSetup");
		buttonPanel.add(pageSetupButton);
		pageSetupButton.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent event) {
				GUIController.setLookAndFeel(GUIController.systemLAF);
				PrinterJob job = PrinterJob.getPrinterJob();
				job.pageDialog(attributes);
			}
		});
		add(buttonPanel, BorderLayout.NORTH);
	}
}


这里就是要打印的内容了
/**
按下打印控件的时候应该就调用这里,执行打印功能
*/
public int print(Graphics g, PageFormat pf, int page)
			throws PrinterException {
		if (page >= 1)
			return Printable.NO_SUCH_PAGE;

		Graphics2D g2 = (Graphics2D) g;
		g2.translate(pf.getImageableX(), pf.getImageableY());
		g2.draw(new Rectangle2D.Double(0, 0, pf.getImageableWidth(), pf
				.getImageableHeight()));

		drawPrintItems(g2);

		return Printable.PAGE_EXISTS;
	}
	/**
	 * Draw Print items to page
	 * @param g2
	 */
	public void drawPrintItems(Graphics2D g2) {
		g2.setPaint(Color.BLACK);
		g2.setFont(new Font("Serif", Font.PLAIN, 20));
		PrintConfig printConf = null;
		if (certificate.isMainCard()) {
			printConf = new PrintConfig(PrintConfig.MAIN);
		} else if (certificate.isSubCard()) {
			printConf = new PrintConfig(PrintConfig.SUB);
		}
		g2.drawString(certificate.getCertificateNumber(), printConf.getNumber()
				.getX(), printConf.getNumber().getY());
		/* ....... 打印的内容,都是些其它的数据,和上面一样~~*/
	}
.--. |o_o | |:_/ | // \ \ (| | ) /'\_ _/`\ \___)=(___/
0000
作家
作家
  • 铜币143枚
  • 威望34点
  • 贡献值1点
5C#
发布于:2006-03-14 13:12
Re:打印程序打出一个黑乎乎的东西!!



这个不模糊了吧,打印出来就这效果。
 调调面边距,那个边框就变了

奇怪的是,那个打印控件里页边距不能随便调,不能调到0
.--. |o_o | |:_/ | // \ \ (| | ) /'\_ _/`\ \___)=(___/
幽幽
作家
作家
  • 铜币1811枚
  • 威望42点
  • 贡献值2点
  • 社区居民
6C#
发布于:2006-03-14 12:58
Re:打印程序打出一个黑乎乎的东西!!
1、人品问题
2、机品问题



≮谁又曾真的体会☆谁又曾真的了解☆谁又曾没有为爱流过一滴泪≯ ペ谁不想追求完美☆谁不愿永恒是绝对☆谁不盼付出的一切能够换回一些安慰ペ *""*.*"''*. *;幽★幽;* *.☆.*
猪八戒
写手
写手
  • 铜币1枚
  • 威望0点
  • 贡献值0点
7C#
发布于:2006-03-14 12:58
Re:打印程序打出一个黑乎乎的东西!!
模糊……

只能告诉你和打印驱动无关,找打印控件的问题吧,也许就是打印设置参数的问题
我回帖还是有质量的
0000
作家
作家
  • 铜币143枚
  • 威望34点
  • 贡献值1点
8C#
发布于:2006-03-14 12:23
Re:打印程序打出一个黑乎乎的东西!!
选a4的纸就打a4的框框。。
.--. |o_o | |:_/ | // \ \ (| | ) /'\_ _/`\ \___)=(___/
0000
作家
作家
  • 铜币143枚
  • 威望34点
  • 贡献值1点
9C#
发布于:2006-03-14 12:23
Re:打印程序打出一个黑乎乎的东西!!
测试发现打印的东西好像是“页面范围”一样的,调整页边距,那个框就变了
.--. |o_o | |:_/ | // \ \ (| | ) /'\_ _/`\ \___)=(___/
游客

返回顶部