Squeak.ru - шаблоны программирования

Печать изображения с текстом в java

Мне нужно распечатать на принтере изображение и некоторые данные, в java (Swing), но все напрасно. Я просто могу работать с данными, но не с изображением. У меня есть файл abc.png и 6 jTextBox, из которых нужно распечатать значение на принтере. Я использую классы 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.

17.10.2012

  • Можете ли вы опубликовать код, как попытаться отправить изображение и текст на принтер? 17.10.2012
  • Глен Лэмб, я видел это сегодня, я поработаю над этим и дам знать. 20.10.2012

Ответы:


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;
}
17.10.2012
Новые материалы

Угловая структура архитектуры
Обратите внимание, что эта статья устарела, я решил создать новую с лучшей структурой и с учетом автономных компонентов: https://medium.com/@marekpanti/angular-standalone-architecture-b645edd0d54a..

«Данные, которые большинство людей используют для обучения своих моделей искусственного интеллекта, поставляются со встроенным…
Первоначально опубликовано HalkTalks: https://hacktown.com.br/blog/blog/os-dados-que-a-maioria-das-pessoas-usa-para-treinar-seus-modelos-de-inteligencia-artificial- ja-vem-com-um-vies-embutido/..

Сильный ИИ против слабого ИИ: различия парадигм искусственного интеллекта
В последние годы изучению и развитию искусственного интеллекта (ИИ) уделяется большое внимание и прогресс. Сильный ИИ и Слабый ИИ — две основные парадигмы в области искусственного интеллекта...

Правильный способ добавить Firebase в ваш проект React с помощью React Hooks
React + Firebase - это мощная комбинация для быстрого и безопасного создания приложений, от проверки концепции до массового производства. Раньше (знаете, несколько месяцев назад) добавление..

Создайте API с помощью Python FastAPI
Создание API с помощью Python становится очень простым при использовании пакета FastAPI. После установки и импорта вы можете создать приложение FastAPI и указать несколько конечных точек. Каждой..

Веселье с прокси-сервером JavaScript
Прокси-серверы JavaScript — это чистый сахар, если вы хотите создать некоторую общую логику в своих приложениях, чтобы облегчить себе жизнь. Вот один пример: Связь клиент-сервер Мы..

Получить бесплатный хостинг для разработчиков | Разместите свой сайт за несколько шагов 🔥
Статические веб-сайты — это веб-страницы с фиксированным содержанием и его постоянным содержанием. Но теперь статические сайты также обрабатывают динамические данные с помощью API и запросов...