X noktayı işaretler - bir yazdırma işi


10

İki sayı verildiğinde, belirtilen konumda "±" olan bir sayfa yazdırın (±% 10).

Sayılar ya yüzdeler veya sayfanın baskı alanı boyutları fraksiyonlar, örneğin olmalıdır [25,75]ya ["15%","0%"]ya [0.33,1]. Kenar boşluklarını dikkate almak zorunda değilsiniz. Sadece hangi sayının genişlik, hangi yüksekliğin ve hangi köşenin başlangıç ​​noktası olduğunu belirtmeyi unutmayın.

Elbette bir yazıcının bağlı olduğunu ve sanal yazıcının da sayıldığını varsayabilirsiniz . Aslında, bu soruna başlamadan önce bir PDF yazıcısını varsayılan yazıcınız olarak ayarlamak isteyebilirsiniz.

Yazdırılabilir bir dosya (örn. PDF) oluşturabilir ve bunu sanal bir yazıcıya gönderebilirsiniz, bu da sonuç PDF'nizi oluşturur, ancak doğrudan nihai PDF'yi oluşturamayabilirsiniz. Bu düzgün bir yazdırma işi olmalıdır.

Mümkünse, lütfen sonucun bir fotoğrafını, taramasını veya ekran görüntüsünü ekleyin veya çevrimiçi bir belgeye bağlantı verin. İmgur'un PDF'leri kabul ettiğini unutmayın.

Varsayılan bir yazı tipi ve kağıt boyutu ile yeni satırlar ve boşluklar çıkarmak yerine gerçekte bir X yerleştirirseniz, elbette daha fazla oy alırsınız.

Misal

Giriş yüksekliği% 75 ve genişlik% 25 için, sol üst köşeden aşağıdaki belgeyi yazdırın:


[25,75]



Görüntü dosyasını herhangi bir yerden okuyabilir miyiz?
Beta Çürümesi

@BetaDecay Hangi görüntü dosyası?
Adám


@BetaDecay Görüntüyü okumak yerine bir belge oluşturmanız gerekiyor.
Adam

Hangi kağıt boyutunu kullanmalıyız / varsaymalıyız, yoksa önemli mi?
Stephen

Yanıtlar:


6

MacOS Bash + OfficeJet Pro 8600, 46

(yes ''|sed $[$2*3/5]q;printf %$[$1*4/5]sX)|lp

Kökeni sol üst köşedir.

Tarafından yazdırılanların karakter boyutlarını kontrol etmek için bir test baskısı yaptım lpYazıcım tarafından basılanların - 82w x 64h gibi görünüyor, bu nedenle (tamsayı) yüzdeleri 3/5 ve 4/5 ile çarpmak sırasıyla% 10 toleransı içeriyor.

Sonuç, komut satırı girişi ile 25 75:

resim açıklamasını buraya girin


6
Vay, PPCG'de ilk fiziksel nesne sunumu olmalı.
Adám

@ Adám nope - Yazıcı sorumla ilgili de bazı sorularım oldu :)
Digital Trauma

1
Adam @ ne hakkında bu ?
NoOneIsHere

1

Windows'ta APL (Dyalog) , 36 35 bayt

Anonim işlev (Y, X) değerini üst soldan yüzde olarak bağımsız değişken olarak alıyor

{'X.'WC'Text'(2'X'WC'Printer')⍵}

Üç öğeden oluşan bir listeyle başlıyoruz:

{ anonim bir işlev (tüm değişkenler yereldir)

 argüman, ör. 75 25

( Hakları için

  'X'⎕WC'Printer'W indows C adlı REATE bir Yazıcı nesne X , dönen'#.X'

  2↓ sadece almak için iki karakter bırak 'X'

) Hakları için

'Text' ne ekleyeceğiz

'X.'⎕WCW indows REATE bir (tip, içerik, konum) nesnesi, nesne X , dönen'#.X'

} işlev sonu ( X yerel olduğundan, işlev sona erdiğinde Windows'a yazdırma işi ile yapıldığımızı bildiren yok olur ve bu da Windows'un yazdırmasına neden olur)


X @ 75 25


0

Java 8, 210 209 bayt

-1 bayt: curried sözdizimine dönüştürüldü

import java.awt.print.*;
x->y->{PrinterJob j=PrinterJob.getPrinterJob();j.setPrintable((g,p,i)->{g.drawString("X",(int)(p.getWidth()*x),(int)(p.getHeight()*y));return i;});try{j.print();}catch(Exception e){}};

Yüzde kayan nokta versiyonu olarak girdi Alır: 0.25, 0.75.

Kağıt boyutu 8,5x11 inç (72 dpi) olarak kabul edilebilirse, 184 bayt

import java.awt.print.*;
x->y->{PrinterJob j=PrinterJob.getPrinterJob();j.setPrintable((g,p,i)->{g.drawString("X",x*612/100,y*792/100);return i;});try{j.print();}catch(Exception e){}};

PDF'ye yazdırmak için varsayılan değerleri kullanır. Şimdi girdiyi yüzde: ifadesinin tamsayı sürümü olarak alır 25, 75.

Bir Windows işletim sistemi de varsayılabilirse, 177 bayt

import sun.awt.windows.*;
x->y->{WPrinterJob j=new WPrinterJob();j.setPrintable((g,p,i)->{g.drawString("X",x*612/100,y*792/100);return i;});try{j.print();}catch(Exception e){}};

Yukarıdaki ile aynı girişler: 25, 75.

kullanım

import java.awt.print.*;
...
Function<Double, Consumer<Double>> f =
x->y->{PrinterJob j=PrinterJob.getPrinterJob();j.setPrintable((g,p,i)->{g.drawString("X",(int)(p.getWidth()*x),(int)(p.getHeight()*y));return i;});try{j.print();}catch(Exception e){}};
...
f.apply(.25).accept(.75);

Test durumu

Girmek için 0.25, 0.75:

Java Printing Test Case

(Ben fiziksel bir yazıcınız yoksa, ancak bu olmalı hala sorun olmadan çalışır)


Çok etkileyici. Neden ihtiyacın var catch(Exception e){}?
Adám

@ Adám Çünkü a PrinterJob.print()atar PrinterExceptionve onu aşmanın bir yolunu görmedim.
Justin Mariner

0

C #, 259 202 201 bayt

namespace System.Drawing.Printing{w=>h=>{var p=new PrintDocument();p.PrintPage+=(s,e)=>e.Graphics.DrawString("X",new Font("Onyx",9),Brushes.Red,e.PageBounds.Width*w,e.PageBounds.Height*h);p.Print();};}

Onyx, varsayılan olarak Windows 10 makineme yüklenmiş bir yazı tipidir ve burada 4 en kısa yazı tipi adıdır. Bunu aşağıdakileri C # ile çalıştırarak ve sonra blahhata ayıklayıcıda inceleyerek test ettim .

var blah = FontFamily.Families.GroupBy(o => o.Name.Length)
                              .OrderBy(g => g.Key);

Tam / biçimlendirilmiş sürüm:

namespace System.Drawing.Printing
{
    class P
    {
        static void Main(string[] args)
        {
            Func<float, Action<float>> f = w => h =>
            {
                var p = new PrintDocument();
                p.PrintPage += (s, e) =>
                    e.Graphics.DrawString("X", new Font("Onyx", 9), Brushes.Red,
                                          e.PageBounds.Width * w, e.PageBounds.Height * h);
                p.Print();
            };

            f(0.25f)(0.75f);
        }
    }
}

Test durumu (0.25, 0.75):


Örnek belge

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.