Web sayfası HTML ve CSS oluşturmak için CSSBox kullanıyorum ve sonra yazdırın. Uygulama belirli sitelerle ilgilenmelidir. Buradaki fikir, yazdırılabilir olacak şekilde tasarlanmamış bazı sitelerin aslında yazdırılması ve okunabilir görünmesidir. Bu, bazı stilleri geçersiz kılan, içeriği ortalayan menüleri, başlıkları vb. Kaldırarak yapılır.Java - Yazdırırken oluşturma nasıl iyileştirilir?
Geçerli yaklaşımım, siteyi BrowserCanvas adlı CSSBox API'sinin bir parçası olan bir bileşene dönüştürmektir. Her bir durumda paragrafların iyi görünmesini sağlamak için desteklenen her site için tuval genişliğini ayarlıyorum. Bu BrowserCanvas, JPanel'den çıkıyor ve onu, onu Printer Graphics nesnesine dönüştürmek için kullandığım boya yöntemlerine sahip.
Sorun, yazıcı tuvalinin genellikle büyük olması, 300 ppp, 600 ppp, vs. düşünmesidir. Şimdi yaptığım şey, Bicubic enterpolasyonu yazdırılan tüm alanı doldurmak için belgeyi ölçeklendirmek üzere zorlamak için bir RenderingHints ayarıdır. sayfa.
Sorun, belgelerin yukarı ölçeklenmiş bir ekran görüntüsü olduğunu ve yazdırılan sayfada çok iyi görünmediğini görebilmenizdir.
Daha iyi bir yaklaşım var mı?
Baskı Yöntemi
yazıcıya erişim PrinterJob sınıfı tarafından elde edilir.
Sonra bir sayfa numarası kabul eden BrowserCanvas yazdırma yöntemini geçersiz kılıyorum. Bu sayıya göre, grafik nesnesinde ölçek ve çeviri yaptım, metnin son satırı tamamen sayfaya sığmazsa, bir sonraki sayfaya taşınır. Sonra super.print() parametresini, tüm ölçekleme ve çevirme uygulanan grafik nesnesini parametre olarak çağırıyorum.
Ölçeklendirmenin yumuşak olacağını düşündüm, her şey daha yüksek çözünürlükte, yazı tipi boyutları gibi gerçekleşiyor, ancak her şeyi temel çözünürlükte çizmek ve ardından sonucu istenen bir boyuta yükseltmek gibi görünüyor. değiştirilmiş sayfanın
Örnek (test için CSSBox dokümantasyon sitesini kullanarak):
sayfa 1
sayfa 2
Nasıl bu tüm yazdırmak alıyorsanız OS herhangi bir tarayıcıdan yazdırma iletişim kutusu kullanabilir? Sorunun o kısmını anlamadım. –
Evet, üzgünüm, soruyu güncelleyeceğim. BrowserCanvas'ı yazdırılabilir, daha sonra baskı yapan bir baskı uygulamak, sonra da bazı ölçeklendirme ve ipuçlarını uygulamak ve BrowserCanvas.print'i çağırmak için genişletiyorum. Sonuçlar hiç tatmin edici değil, basılı sayfa çok pikselli. Test platformu Linux. –
Üzerinde çalıştığım yazdırma yöntemi, ipuçlarını, ölçeklemeyi ve çevirmeyi uyguladıktan sonra, sayfa numarasını kabul eden numaradır. Yalnızca bir grafik nesnesini kabul eden süper sınıf yazdırma yöntemini arıyorum, tüm bu özellikleri yerleştirdiğim birini iletiyorum. –