iText problemy z licencja(?)

0

Witam,

To mój pierwszy post, bądźcie wyrozumiali proszę. Próbowałem odnaleźć odpowiedź na forum, ale nigdzie nie znalazłem aktualnej wersji.

Jakiś czas temu, stworzyłem sobie aplikacje WinForms, która korzystała z iText do tworzenia pliku pdf, aplikację wrzuciłem na github jako prywatną. Wszystko pięknie działało, bez problemów.

Około tydzień temu, chcąc podszkolić się w aplikacja internetowych i .net core, zacząłem tworzyć kolejną w tej technologii, doszedłem do momentu, gdy chcę wynik działania aplikacji zapisać do .pdf przy użyciu znanej mi już biblioteki iText. I tu pojawia się problem, wypróbowałem na milion różnych sposobów proces tworzenia najprostszego, nawet "Hello World" pliku pdf, ale nic nie działa. Zawsze wyskakuje wyjątek:

screenshot-20200426123457.png

Ku mojemu zdziwieniu, gdy próbuję korzystać z tej pierwszej aplikacji, w której do tej pory wszystko działało, również pojawia się wyjątek przy próbie utworzenia pliku pdf.
W prostej aplikacji konsolowej, którą również udostępniłem publicznie na githubie jest to samo.

Czy ktoś miał podobnie, zna jakieś rozwiązanie? Wiem, że mogę napisać do supportu itext, co traktuję jako ostateczność, w obawie przed skasowaniem mnie za jakąś licencję.
Żaden z projektów nie jest komercyjny, a jedynie do celów naukowych.

Z góry dziękuję za odpowiedzi i pomoc.

0

Możesz gdzieś udostępnić ten twój projekt, w którym to nie działa? Próbowałem zreplikować twój problem i mnie działa, generuje nowy PDF poprawnie.

using (PdfWriter pdfWriter = new PdfWriter("hello.pdf"))
using (PdfDocument pdfDocument = new PdfDocument(pdfWriter))
using (Document document = new Document(pdfDocument))
{
    document.Add(new Paragraph("Hello, world!"));
}

itext7 wersja 7.1.11, .NET Core 3.1, Windows x64

0

Metoda 'tworząca plik' - aplikacja .net core 3.1, itext 7.1.11 win x64,

public IActionResult OnPostPrintToPDF()
        {
            byte[] pdfBytes;
            MemoryStream stream = new MemoryStream();
            PdfWriter writer = new PdfWriter(stream);
            PdfDocument pdf = new PdfDocument(writer);
            Document document = new Document(pdf);
            stream.Position = 0;
            Paragraph par;
            par = new Paragraph("Hello world");
            document.Add(par);
            document.Close();
            pdfBytes = stream.ToArray();
            return new FileContentResult(pdfBytes, "application/pdf");
        }

Skoro ten sam kod, który u mnie wywala wyjątek, działa u Ciebie, tym bardziej utwierdzam się w przekonaniu, że mogę mieć nałożony jakiś rodzaj ograniczeń, jakkolwiek głupio by to nie zabrzmiało :v

1

W wątku nie ma nic o pozyskiwaniu licencji "opensursowej", czyli pachnie jak limitowany trial

0

Dokładnie tak, dzięki za naprowadzenie.
Już napisałem do nich o licencje.

Alternatywą jest wykorzystanie starszej wersji biblioteki iText do 4.1.6

0

Moment, bo ja chyba nie rozumiem. W życiu nie używałem tej biblioteki, ale po prostu pobrałem wersję z NuGeta (dotnet add package itext7) i mi zadziałał kod przykładowy, który wrzuciłeś w pierwszym poście, a potem zadziałał kod z drugiego posta. Nie ma wyjątku. Ty instalujesz to jakoś inaczej? Masz specjalną licencję komercyjną? Masz dorzucone dodatki komercyjne? Żadnej "opensourceowej" licencji nie trzeba w żaden specjalny sposób pozyskiwać. Dodatkowo, kiedy utracisz licencję komercyjną (np. trial) automatycznie wracasz do wersji AGPL, zgodnie z opisem na stronie projektu.

Nikogo nie obchodzi, czy używasz iText w programie który na GitHubie jest prywatny czy nie - ma być na licencji AGPL, to jedyny wymóg. Możesz go mieć tylko u siebie na komputerze i to też jest zgodne z AGPL, żaden wyjątek nie powinien ci wyskakiwać.

(oczywiście, kiedy opublikujesz swój program, udostępnisz go użytkownikom itp. musisz być zgodny z AGPL, ale to nieco poza dyskusją)

0

Mam rozwiazanie, tak mysle. Wystarczy, ze przy wyrzucaniu wyjatku zaznacze tego comboboxa: Z wyjatkiem sytuacji, gdy zwracany przez itext.io.dll
Ale jeszcze jedno pytanie, czy Wam, ktorym dzialaly powyzsze kody bez problemu, po zakonczeniu programu, w oknie Output tez pojawia sie linia:
Exception thrown: 'System.NullReferenceException' in itext.io.dll ?

0

Ale u Ciebie ta biblioteka wyrzuca ten wyjątek jako niezłapany, czy po prostu gdzieś tam w bebechach sobie rzuca i obsługuje? Odpal to bez debuggera i pokaż, co się dzieje.

0

Dopóki nie zaznaczyłem pomijania sytuacji, gdy wyjątek rzucany przez iText.io.dll, wywalało wyjątek. Teraz po zaznaczeniu i z debuggerem, po zakończeniu programu w Output jest informacja jedynie o wyjątku. Po odpaleniu bez debuggera wszystko działa jak należy, nie wyrzuca wyjątku

1 użytkowników online, w tym zalogowanych: 0, gości: 1