我最近发现我写的徽章打印程序在

Windows上运行良好多年没有在MAC OS X上正确打印.我使用的是Arial truetype字体.该程序似乎显示基本字体,没有适当的缩放.我正在使用intellij和jdk1.7.0_15.字体在屏幕上正确显示,但在打印到打印机或pdf时则不会.当我使用GraphicsEnvironment.getAvailableFontFamilyNames列出控制台上程序可用的字体时,Arial被列为其中之一.当我直接从字体文件加载字体时,它可以正常工作.我一直在追逐我的尾巴超过一天,任何建议将不胜感激.这是演示我的问题的代码……

/**

* DisplayPage.java

*/

import java.awt.*;

import java.awt.print.*;

public class DisplayPage extends ApplicationFrame {

public static void main(String[] args) {

// Create app and display draw page

DisplayPage f = new DisplayPage();

f.setTitle("PaintingAndStroking v1.0");

f.setSize(850, 1100);

f.center();

f.setVisible(true);

// Generate print job to print page

PrinterJob pj = PrinterJob.getPrinterJob();

pj.setPrintable(new PrintPage());

boolean doPrint = pj.printDialog();

if (doPrint) {

try {

pj.print();

} catch (PrinterException e) {

System.out.println(e);

}

}

}

/**

* This is called by the windows event processor

* @param g java.awt.Graphics context for display

*/

public void paint(Graphics g) {

super.paint(g);

Graphics2D g2d = (Graphics2D)g;

DrawPage.draw(g2d);

}

}

/**

* ApplicationFrame.java

*/

import java.awt.*;

import java.awt.event.*;

public class ApplicationFrame extends Frame {

public ApplicationFrame() { this("ApplicationFrame v1.0"); }

public ApplicationFrame(String title) {

super(title);

setSize(850, 1100);

center();

addWindowListener(new WindowAdapter() {

public void windowClosing(WindowEvent e) {

dispose();

System.exit(0);

}

});

}

public void center() {

Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();

Dimension frameSize = getSize();

int x = (screenSize.width - frameSize.width) / 2;

int y = (screenSize.height - frameSize.height) / 2;

setLocation(x, y);

}

}

/**

* PrintPage.java

*/

import java.awt.*;

import java.awt.print.*;

public class PrintPage

implements Printable {

public int print(Graphics g, PageFormat pf, int page)

throws PrinterException {

// We have only one page

if (page > 0) {

return NO_SUCH_PAGE;

}

// Create Graphics2D context

Graphics2D g2d = (Graphics2D)g;

// Draw page

DrawPage.draw(g2d);

// Verify page exists

return PAGE_EXISTS;

}

}

/**

* DrawPage.java

*/

import java.awt.*;

public class DrawPage {

static public void draw(Graphics2D g2d) {

GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();

Font[] fonts = ge.getAllFonts();

String[] fontFamilies = ge.getAvailableFontFamilyNames();

for (int i=0; i

System.out.println(fontFamilies[i]);

}

double x = 15, y = 50, w = 70, h = 70;

GradientPaint gp = new GradientPaint(75, 75, Color.white,

95, 95, Color.gray, true);

// Fill with a gradient

g2d.setPaint(gp);

// Stroke with a solid color.

g2d.setPaint(Color.black);

g2d.setStroke(new BasicStroke(8));

// Stroke with a gradient.

g2d.setPaint(gp);

// Draw text string

String text = new String("This is a test...");

g2d.setPaint(Color.black);

g2d.setStroke(new BasicStroke(8));

Font font = new Font("Arial", Font.PLAIN, 36);

g2d.setFont(font);

g2d.drawString("This is a test of Arial 36", 50, 100);

font = new Font("Arial", Font.PLAIN, 72);

g2d.setFont(font);

g2d.drawString("This is a test of Arial 72", 50, 200);

}

}

最佳答案 我写了一篇关于这篇文章的博文,名为

Printing is Broken on Mac OS X with Java 7,其中包括我发现的所有内容,包括原因,错误报告,以及我们现在的解决方法.简短的版本是它看起来像苹果的Mac OS或Java 7中的一个错误,并且在撰写本文时它仍然没有修复.

java 获取mac字体_Mac OS X上的Java App无法正确打印字体相关推荐

  1. java获取mac和机器码,注册码的实现、CPU序列号

    CPU序列号: package test; import java.io.IOException; import java.util.Scanner; public class CPUTest { / ...

  2. Java: 获取MAC网络地址

    Java: 获取MAC网络地址 0. 背景 最近由于课程设计,需要使用MAC物理地址作为软件注册码的唯一标识,故成此博客! 从各个网络适配器的作用 →\rightarrow→ 确定哪一个MAC地址作为 ...

  3. Java获取项目当前请求的全部URL,Java获取Referer,Java获取完整链接地址URL

    Java获取项目当前请求的全部URL,Java获取Referer,Java获取完整链接地址URL >>>>>>>>>>>>> ...

  4. mac memcached_Mac OS X上的Java Memcached

    mac memcached 介绍 在本文中,我将解释如何: 在Mac OS X上安装和配置Memcached 在Java应用程序中使用Memcached 我不会过多地介绍在您的应用程序中使用分布式缓存 ...

  5. Mac OS X上的Java Memcached

    介绍 在本文中,我将解释如何: 在Mac OS X上安装和配置Memcached 在Java应用程序中使用Memcached 我不会过多地介绍在您的应用程序中使用分布式缓存的好处,但是至少让我们提供一 ...

  6. Mac OS X上的Java安装位置在哪里?

    本文翻译自:Where is Java Installed on Mac OS X? I just downloaded Java 7u17 on Mac OS 10.7.5 from here an ...

  7. java获取远程图片并在图片上写文字

    本编文章主要是分享一下,从远程获取图片文件,用java在图片上写文字并合成图片的示例.一下代码完全拷贝后是可以正常运行的. 主要有三个类: DrawPicFromUrlToOSS:核心类,获取图片并在 ...

  8. java获取mac地址-屏蔽ip封mac地址

    首先要说的是:可以支持外网机器的mac地址获取.  以前弄了一个只能访问局域网. 有防火墙就访问不了, 但是这个不用担心了. 测试了百度的ip,已经可以获得mac地址 测试效果图: java通过ip获 ...

  9. hadoop启动_Mac OS X 上搭建 Hadoop 开发环境指南

    Hadoop 的配置有些麻烦,目前没有一键配置的功能,虽然当时我在安装过程中也参考了有关教程,但还是遇到了很多坑,一些老版本的安装过程已不适用于 hadoop2.x,下面就介绍一下具体步骤. 安装 J ...

最新文章

  1. 固态铝电解电容与液态铝电解电容
  2. 《那些年啊,那些事——一个程序员的奋斗史15》
  3. SQL语句 怎么把从一个表中查出来数据插入到另一个表中
  4. hive数据类型转换
  5. SAP Spartacus home 页面的 cx-page-slot selector
  6. matlab实现unix时间戳到标准时间的转换
  7. Spring Aop总结
  8. C++中比较两个浮点数是否相等
  9. 苏宁MOCK测试桩服务建设实践
  10. C#中实现空间的登录加密密码脚本里的方法
  11. python的特性是_python的特性
  12. SAP License:对不起,“下一代ERP”仍旧是现在的ERP
  13. android Activity的Task Affinity lanchMode
  14. CS224N笔记(十):问答系统
  15. mysql dba 试题_MySQLDBA面试题-上海热璞科技
  16. Java_8排序(冒泡排序和选择排序)
  17. 4月3日 今天谈谈支持向量机SVM 与超平面
  18. 软件开发工作量的估算方法
  19. WRF学习笔记二:WRF-chem简单入门运行指南
  20. 电脑组装好了开机完全没反应?

热门文章

  1. 计算机的好处和坏处的英语作文,电脑利与弊英语作文
  2. 【Python】类型转换:float()函数
  3. 告诉你为什么数据要取对数
  4. [CodeChef FEB15]Payton numbers(CUSTPRIM)解题报告
  5. 汉字转拼音之Jpinyin 简单使用
  6. 《代码的未来》读书笔记
  7. 解决车载U盘:USB设备未连接 问题
  8. 精益看板方法从理论到实战 (6)—— 控制在制品数量(中)
  9. 快速上手五大技巧!自媒体新人创作攻略,想要通过拍视频赚钱
  10. 回收站清空数据恢复步骤如何