26 puan yazan GN⁺ 2024-03-04 | 2 yorum | WhatsApp'ta paylaş
  • Şirkette, HTML kullanarak kağıt/Excel üzerinde elle doldurulan formları web tabanlı bir araçla yeniden oluşturup değiştirme işi yapıldığı için bunun bir özeti hazırlanmış.
  • Bir web sayfası yazdırıldığında nasıl görüneceğini kontrol etmeye yönelik temel CSS bilgileri ile bazı ipuçları ve püf noktaları anlatılıyor.

@page

  • @page, web sitesinin yazdırma ayarlarını tarayıcıya bildiren bir CSS kuralıdır.
  • @page, DOM'u kapsar; web'de <html> öğesi ekran kenarlarıyla sınırlıyken, yazdırmada @page tarafından sınırlandırılır.
  • @page ayarları, Ctrl+P'ye basıldığında tarayıcının yazdırma iletişim kutusunda görülen ayarlarla kabaca örtüşür.

@media print

  • Yalnızca yazdırma sırasında uygulanan stiller yazmak için print medya sorgusu vardır.
  • Baskıda görünmemesi gereken başlık, seçenekler, kullanıcı yardım metinleri gibi öğelere display:none eklenir.

Genişlik, yükseklik, kenar boşluğu, iç boşluk

  • Kutu modelini anlamak gerekir; @page için margin: 0 ayarlanmasının nedeni, kenar boşluklarını DOM öğelerinde yönetmeyi tercih etmektir.
  • <html> öğesinin tüm fiziksel kağıdı kapladığını ve kenar boşluklarının DOM içinde bulunduğunu hatırlamak daha kolaydır.

Öğe konumlandırma

  • Belge tasarlanırken öğeler uygun HTML/CSS kullanılarak yerleştirilir.
  • Belirli boyuttaki etiket kağıdına uyacak dikdörtgenler oluşturmak ya da özel etiketli kağıda veri yazdırmak gerektiğinde mutlak konumlandırma da kullanılabilir.

Çok sayfalı belgeler ve yinelenen öğeler

  • Fatura gibi tablo verileri içeren bir yazdırma üreticisi yazarken, <table> ikinci sayfaya taştığında tarayıcı otomatik olarak <thead> öğesini her sayfanın üst kısmına kopyalar.
  • JavaScript kullanılarak tablo birkaç küçük tabloya bölünür ve böylece sayfalar oluşturulur.

Dikey/yatay mod

  • Kullanıcı isterse @page kuralını geçersiz kılabilir.
  • Dikey ve yatay modlar için ayrı <style> öğeleri oluşturulup JavaScript ile aralarında geçiş yapılabilir.

Veri kaynağı

  • Veriyi sayfaya getirmek için birkaç yöntem vardır; tüm veriler URL parametrelerine paketlenebilir ya da JavaScript kullanılarak API üzerinden veritabanı kayıtları alınabilir.
  • Kullanıcının yazdırmadan önce küçük değişiklikler yapabilmesi için contenteditable ayarlanabilir.

GN⁺ görüşü

  • Bu yazı, web geliştiricilere yazdırma amaçlı CSS yazma konusunda faydalı bir rehber sunuyor. Özellikle web sayfalarını fiziksel belgelere dönüştürme işiyle uğraşan geliştiriciler için yararlı olacaktır.
  • Yazdırma için CSS çoğu zaman göz ardı edilen bir konu olsa da, birçok şirkette hâlâ önemli belgelerin yazdırılması gerekiyor; bu yüzden bu bilgi değerlidir.
  • Yazıda sunulan teknik yaklaşımın gerçek iş ortamlarında test edilip doğrulanmış olduğu anlaşılıyor ve gerçek sorunları çözmek için pratik çözümler sunuyor.
  • CSS @page kuralı ve @media print sorgusunun kullanımı, web sayfaları yazdırılırken kağıt boyutunu ve kenar boşluklarını kontrol etmek açısından önemlidir; bu, web geliştiricilerin mutlaka bilmesi gereken bir konudur.
  • Yazı, yazdırma için CSS'e dair temel anlayışın ötesine geçip bunun pratikte nasıl uygulandığına ilişkin somut örnekler ve ipuçları vererek teori ile pratik arasındaki boşluğu kapatmaya yardımcı oluyor.

2 yorum

 
cosine20 2024-03-11

Bir dahaki sefere bununla bir oyuncak proje yapmak istiyorum.

 
GN⁺ 2024-03-04
Hacker News görüşleri
  • Kişisel bir web sitesinde tercih edilen baskı stillerine dair açıklama:

    • Bölüm başlıklarının sayfanın altında basılıp içeriğin bir sonraki sayfanın üstünde başlıksız kalmamasını sağlama.
    • Grafik ve diyagramların sayfa dışına taşmadan tam sayfa olarak basılmasını sağlama.
    • Bağlantıların yalnızca altı çizili metin olarak kalmaması için hiperlink URL'lerini yazdırma.
  • Pagedjs.org kullanarak kitap dizme deneyimi:

    • Önizlemede birkaç hata vardı ama nihai çıktı kusursuzdu ve InDesign kullanmaya kıyasla sürenin dörtte birini tasarruf ettirdi.
    • Hem HTML/CSS'e hem de InDesign'a hakimseniz, Pagedjs uzun metin yerleşimi için daha iyi bir seçimdir.
  • Baskı amaçlı CSS için tarayıcı desteğinin sorunları:

    • CSS'te sayfa başına dipnot eklemek gibi bazı özellikler için eşdeğer işlevsellik yok.
    • Özel CSS özelliklerini denemek ve bu boşlukları kapatabilecek kolay bir HTML yerleşim motoru olup olmadığını sorma.
  • CSS ile baskı almanın kolaylığı:

    • Herhangi bir uygulamada HTML+CSS çıktısı vererek temiz ve hoş görünümlü basılı belgeleri kolayca hazırlayabilme.
    • PostScript veya TeX öğrenmektense CSS tipografisini birkaç dakikada yazmanın daha kolay olması.
  • Baskı için tarayıcı desteğinin o kadar kötü olması ki yerel uygulama yapmak gerekmesi:

    • Şu anda PDF indirip yazdırmak gerekiyor.
    • Chrome/Blink, Safari/Webkit ve Firefox/Mozilla geliştiricilerinden en azından hack'lerin çalışmasına izin vermelerini isteme.
  • CSS'in tarihi ve mevcut durumuna dair düşünceler:

    • CSS başlangıçta baskı medyası düşünülerek ortaya çıktı, ancak tarayıcı desteği geride kaldı.
  • HTML & CSS kullanarak fatura ve bazı e-kitaplar hazırlama yöntemi:

    • print-css.rocks ve Weasyprint'ten yararlanma yöntemini tanıtma.
  • Tarayıcı üzerinden PDF üretmek için kullanılan paper-css'e değinme.

  • HTML/CSS kullanarak basılı materyal üretmenin avantajları:

    • Basılı materyal üretmek için gereken her şeyi HTML/CSS ile yapma.
  • CSS becerilerini kullanarak bir sosyal ağın profillerini basılı formatta sunma deneyimi:

    • Fabrika işçilerine yönelik bir sosyal ağda profillerin yazdırılabilmesini sağlama.
    • Atölye ve kurs sertifikaları oluşturan bir çevrimiçi editör yapma deneyimini de paylaşma.