• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Prosta nakłada z numerem i datą na pdf

0 głosów
358 wizyt
pytanie zadane 20 lipca 2017 w C# przez krystian.k.nowak Użytkownik (500 p.)
Witam, muszę napisać program który będzie nakładał na pierwszej stronie wybranego pdf'a numer, miesiąc, oraz rok, wartości te będzie pobierał z pliku tekstowego, część z plikiem tekstowym nie jest większym problemem, ale jak zrobić żeby program mógł otwierać pdf i nakładać na niego żądane wartości, jakieś rady albo api do użycia?

2 odpowiedzi

0 głosów
odpowiedź 20 lipca 2017 przez CzikaCarry Szeryf (75,340 p.)
wybrane 23 lipca 2017 przez krystian.k.nowak
 
Najlepsza
komentarz 20 lipca 2017 przez krystian.k.nowak Użytkownik (500 p.)

Bardzo dziękuje! 

Mam tylko delikatny problem z zrozumieniem tej biblioteki, kod aktualnie u mnie wygląda tak: 

            PdfDocument doc = new PdfDocument();
            doc.LoadFromFile(@"sciezka");

            foreach (PdfPageBase page in doc.Pages)
            {
            PdfTilingBrush brush = new PdfTilingBrush(new SizeF(page.Canvas.ClientSize.Width / 2, page.Canvas.ClientSize.Height / 3));
                brush.Graphics.Save();
                brush.Graphics.TranslateTransform(brush.Size.Width / 2, brush.Size.Height / 5);
                brush.Graphics.DrawString("NAPIS", new PdfFont(PdfFontFamily.Helvetica, 10), PdfBrushes.Black, 0, 0, new PdfStringFormat(PdfTextAlignment.Left)); 
                page.Canvas.DrawRectangle(brush, new RectangleF(new PointF(0, 0), page.Canvas.ClientSize));
            }

            doc.SaveToFile("plik.pdf");

Program wypisuje na wszystkich stronach regularne napisy "NAPIS" wg wytycznych, chce jednak żeby wypisywał go tylko w lewym górnym rogu raz, na pierwszej stronie.

Kiedy usuwam pętle i tworze obiekt wg klasy PdfPageBase page; pojawia się problem w linii tworzącej zmienną brush, jak to przerobić żeby  działało tak jak napisałem? Kombinuje nad tym ale póki co ciężko, to 3 dzień mojej "przygody" z C#, wiele jeszcze nie rozumiem. 

komentarz 20 lipca 2017 przez CzikaCarry Szeryf (75,340 p.)

No to tak jak mówisz, usuwasz pętle i ciśniesz po pierwszym elemencie dokumentu (doc.page). Co do położenia napisuz wydaje mi się, że chodzi o tą linijkę:

 


PdfTilingBrush brush = new PdfTilingBrush(new SizeF(page.Canvas.ClientSize.Width / 2, page.Canvas.ClientSize.Height / 3));
/Zamień na

PdfTilingBrush brush = new PdfTilingBrush(new SizeF(0, 0));

Wydaje mi się że to to, nie jestem pewien, nawet nie odpalałem kodu (pisane z telefonu :D).

 

komentarz 21 lipca 2017 przez krystian.k.nowak Użytkownik (500 p.)
To nie działa, nie ma niestety właściwości "Page" którą mógłbym użyć na obiekcie "page", "Pages" totalnie nie działa, jest właściwość PageNumber, ale żeby ją ustawić trzeba zmienić klase z PdfPageBase na PdfPageNumber, a wtedy nie działa atrybut Canvas, to co wysłałeś wrzuciłem do działającego kodu i w wyniku nie robiło z plikiem pdf nic, próbowałem też dostosowywać kod pod to ale nic, jeszcze jakieś pomysły co z tym zrobić? :(
0 głosów
odpowiedź 20 lipca 2017 przez Eryk Andrzejewski Mędrzec (164,260 p.)

Podobne pytania

0 głosów
1 odpowiedź 1,536 wizyt
pytanie zadane 19 lipca 2017 w C# przez Krystian Nowak Początkujący (330 p.)
0 głosów
1 odpowiedź 810 wizyt
pytanie zadane 3 sierpnia 2017 w C# przez krystian.k.nowak Użytkownik (500 p.)
0 głosów
0 odpowiedzi 798 wizyt

93,773 zapytań

142,731 odpowiedzi

323,383 komentarzy

63,377 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

Twierdza Linux. Bezpieczeństwo dla dociekliwych

Aby uzyskać rabat -10%, użyjcie kodu pasja-linux, wpisując go w specjalne pole w koszyku.

...