Wyodrębnianie tekstu z pliku PDF z PdfSharp rzeczywistości może być bardzo proste, w zależności od rodzaju dokumentu i co zamierzasz z tym zrobić. Jeśli tekst jest w dokumencie jako tekst, a nie obraz, a nie zależy Ci na pozycji ani formacie, jest to całkiem proste. Ten kod pobiera cały tekst na pierwszej stronie w formacie PDF pracuję z:
var doc = PdfReader.Open(docPath);
string pageText = doc.Pages[0].Contents.Elements.GetDictionary(0).Stream.ToString();
doc.Pages.Count
daje całkowitą liczbę stron, a masz dostęp do każdego z nich za pośrednictwem tablicy doc.Pages
z indeksu. Nie polecam używania tutaj foreach
i Linq, ponieważ interfejsy nie są dobrze zaimplementowane. Indeks przeszedł do GetDictionary
, dla którego element dokumentu PDF - może się różnić w zależności od sposobu, w jaki dokumenty są tworzone. Jeśli nie otrzymasz tekstu, którego szukasz, spróbuj zapętlić wszystkie elementy.
Tekst, który się pojawi, będzie zawierał różne kody formatowania PDF. Jeśli wszystko, co musisz zrobić, to wyodrębnić łańcuchy, ale możesz znaleźć te, które chcesz, używając Regexa lub innego odpowiedniego kodu wyszukiwania ciągów znaków. Jeśli potrzebujesz czegoś z formatowaniem lub pozycjonowaniem, to powodzenia - z tego co wiem, będziesz tego potrzebować.
Spojrzałem na ten przykład, ale nie jestem pewien, czy ma wszystkie elementy, których potrzebuję. Szuka "obrazów" w dokumencie. Muszę też zachować renderowanie tekstu w formie obrazu, po prostu nie chcę mieć tekstu za obrazem.Innymi słowy, chcę, aby wyjście wyglądało dokładnie tak samo jak wejście, ale chcę wyłączyć możliwość zapisywania tekstu z wyjścia. –
Tak jak teraz rozumiem, chcesz czytać tekst z obrazów i zwykłego tekstu z pdf? I ułóż je razem jako co? – Mariusz
Dane wejściowe PDF mogą być tylko obrazem lub obrazem + tekstem za obrazem. Muszę więc wziąć wkład i zrobić z tego tylko plik PDF z obrazem. Innymi słowy, chcę wyeksportować wszystkie nietekstowe komponenty wejściowego pliku PDF do wyjściowego pliku PDF i nie eksportować komponentów tekstowych. –