# PDF'lerde Sayfa Yönlendirmesi ve Dönüşü
PDF'lerle çalışmak, genellikle bir sayfayla ilgili iki şeyi bilmeyi gerektirir: yönlendirmesi (dikey veya yatay) ve içeriğin döndürülüp döndürülmediği. Bunu öğrenmenin iki yolu vardır ve hafifçe farklı sorulara cevap verir.
- `PdfDocument.Pages[i].PageRotation`, döndürme bilgisini PDF metasından okur.
- `OcrInput.DetectPageOrientation()`, OCR ile görsel olarak durumu algılar.
## Yönlendirme ile Dönüş
Bunlar aynı özellik değiller:
- **Sayfa yönlendirmesi:** sayfa düzeni. **Dikey** yükseklik genişlikten büyük demektir; **Yatay** genişlik yükseklikten büyük demektir.
- **Döndürme açısı:** içeriğin doğal okuma yönüne göre durumu, örneğin `90`, `180`, vb.
## Seçenek 1: Metadata'dan Dönüşü Okuyun
`PageRotation`, PDF dosyasına gömülü döndürme değerini döndürür, bu sayede içeriğin programatik olarak nasıl döndürüldüğünü belirtir. İyi biçimlenmiş PDF'ler için bu güvenilir ve tutarlıdır.
```csharp
var pdf = PdfDocument.FromFile("sample.pdf");
for (int i = 0; i < pdf.PageCount; i++)
{
var page = pdf.Pages[i];
var orientation = page.Width > page.Height ? "Landscape" : "Portrait";
var rotation = page.PageRotation;
Console.WriteLine($"Page {i + 1}: {orientation}, Rotation: {rotation} degrees");
}
```
Tek seferde iki bilgi elde edersiniz: yükseklik-genişlik karşılaştırmasından yönlendirme ve metadata'dan doğrudan dönüş açısı.
**En iyi kullanım:** tutarlı, geçerli metadatalı yapılandırılmış PDF'ler.
## Seçenek 2: OCR ile Yönlendirmeyi Algılayın
Metadata eksik veya güvenilmez olduğunda, sayfayı görsel olarak analiz edin. `DetectPageOrientation()`, her sayfanın düzenini inceler ve olası okuma yönünü, metadatalara bağlı kalmadan tahmin eder.
```csharp
using var input = new OcrInput();
input.LoadPdf("sample.pdf");
var results = input.DetectPageOrientation();
foreach (var result in results)
{
Console.WriteLine($"Page {result.PageNumber + 1}: Rotation: {result.RotationAngle} degrees");
}
```
Bu, taranmış belgeler, görüntü tabanlı PDF'ler ve uygun metadata'dan yoksun herhangi bir dosya için doğru seçimdir.
Buradaki doğruluk, metin yoğunluğu ve netlikle izler. Seyrek veya hizasız metin yanlış sonuç üretebilir, bu yüzden OCR'yi daha yoğun bir metin bölgesi üzerinde bir `Rectangle` ile sınırlandırarak algılamayı stabilize edin.
## Tavsiye
- **Dijital PDF'ler:** metadata doğru olduğunda `PdfDocument.PageRotation` tercih edilir.
- **Tarama veya görüntü tabanlı PDF'ler:** metadata eksik veya güvenilmez olduğunda `OcrInput.DetectPageOrientation()` kullanılır.
Kritik iş akışları için her iki yöntemi de çalıştırın ve herhangi bir tutarsızlığı gidermek için kendi mantığınızı uygulayın. Tutarsız dönüş sonuçları görüyorsanız, belirli sayfa düzenini kontrol edin ve bir yöntemi diğerine karşı doğrulayın.
PDF'lerle çalışmak, genellikle bir sayfayla ilgili iki şeyi bilmeyi gerektirir: yönlendirmesi (dikey veya yatay) ve içeriğin döndürülüp döndürülmediği. Bunu öğrenmenin iki yolu vardır ve hafifçe farklı sorulara cevap verir.
PdfDocument.Pages[i].PageRotation, döndürme bilgisini PDF metasından okur.
OcrInput.DetectPageOrientation(), OCR ile görsel olarak durumu algılar.
Yönlendirme ile Dönüş
Bunlar aynı özellik değiller:
Sayfa yönlendirmesi: sayfa düzeni. Dikey yükseklik genişlikten büyük demektir; Yatay genişlik yükseklikten büyük demektir.
Döndürme açısı: içeriğin doğal okuma yönüne göre durumu, örneğin 90, 180, vb.
Seçenek 1: Metadata'dan Dönüşü Okuyun
PageRotation, PDF dosyasına gömülü döndürme değerini döndürür, bu sayede içeriğin programatik olarak nasıl döndürüldüğünü belirtir. İyi biçimlenmiş PDF'ler için bu güvenilir ve tutarlıdır.
var pdf = PdfDocument.FromFile("sample.pdf");for (int i = 0; i < pdf.PageCount; i++){ var page = pdf.Pages[i]; var orientation = page.Width > page.Height ? "Landscape" : "Portrait"; var rotation = page.PageRotation;Console.WriteLine($"Page {i + 1}: {orientation}, Rotation: {rotation} degrees");}
var pdf = PdfDocument.FromFile("sample.pdf");
for (int i = 0; i < pdf.PageCount; i++)
{
var page = pdf.Pages[i];
var orientation = page.Width > page.Height ? "Landscape" : "Portrait";
var rotation = page.PageRotation;
Console.WriteLine($"Page {i + 1}: {orientation}, Rotation: {rotation} degrees");
}
C#
Tek seferde iki bilgi elde edersiniz: yükseklik-genişlik karşılaştırmasından yönlendirme ve metadata'dan doğrudan dönüş açısı.
En iyi kullanım: tutarlı, geçerli metadatalı yapılandırılmış PDF'ler.
Seçenek 2: OCR ile Yönlendirmeyi Algılayın
Metadata eksik veya güvenilmez olduğunda, sayfayı görsel olarak analiz edin. DetectPageOrientation(), her sayfanın düzenini inceler ve olası okuma yönünü, metadatalara bağlı kalmadan tahmin eder.
using var input = new OcrInput();input.LoadPdf("sample.pdf");var results = input.DetectPageOrientation();foreach (var result in results){Console.WriteLine($"Page {result.PageNumber + 1}: Rotation: {result.RotationAngle} degrees");}
using var input = new OcrInput();
input.LoadPdf("sample.pdf");
var results = input.DetectPageOrientation();
foreach (var result in results)
{
Console.WriteLine($"Page {result.PageNumber + 1}: Rotation: {result.RotationAngle} degrees");
}
C#
Bu, taranmış belgeler, görüntü tabanlı PDF'ler ve uygun metadata'dan yoksun herhangi bir dosya için doğru seçimdir.
Buradaki doğruluk, metin yoğunluğu ve netlikle izler. Seyrek veya hizasız metin yanlış sonuç üretebilir, bu yüzden OCR'yi daha yoğun bir metin bölgesi üzerinde bir Rectangle ile sınırlandırarak algılamayı stabilize edin.
Tavsiye
Dijital PDF'ler: metadata doğru olduğunda PdfDocument.PageRotation tercih edilir.
Tarama veya görüntü tabanlı PDF'ler: metadata eksik veya güvenilmez olduğunda OcrInput.DetectPageOrientation() kullanılır.
Kritik iş akışları için her iki yöntemi de çalıştırın ve herhangi bir tutarsızlığı gidermek için kendi mantığınızı uygulayın. Tutarsız dönüş sonuçları görüyorsanız, belirli sayfa düzenini kontrol edin ve bir yöntemi diğerine karşı doğrulayın.
Curtis Chau, Bilgisayar Bilimleri alanında Lisans Derecesine (Carleton Üniversitesi) sahip ve Node.js, TypeScript, JavaScript ve React konularında uzmanlaşmış ön uç geliştirmeyle ilgileniyor. Sezgisel ve estetik açıdan hoş kullanıcı arayüzleri oluşturma tutkunu, Curtis modern çerçevelerle çalışmayı ve iyi yapılandırılmış, görsel olarak çekici kılavuzlar oluşturmayı seviyor.