Novo

Forum kao aplikacija na telefonu

Dodajte forum na početni ekran i koristite ga kao aplikaciju, sa menijem na dnu ekrana.

  • 8 odgovora
  • 2.520 pregleda

Najnovija ↓

Čitanje slika iz PDF-a 13.07.2022. u 15:28 · pre 52 meseca #1
Imam PDF fajl u kojem se nalaze neke slike koje treba da prebacim u TBitmap recimo. Jedna slika preko cele stranice PDF-a, može biti više takvih stranica, nema teksta.
Mogu da izdvojim deo PDF fajla gde su podaci o slici ali šta onda? Nađem "Subtype/Image" i "Type/XObject", vidim čime da dekodiram, dimenzije itd ali tu sam zapeo. Kako dekodirati npr. DCTDecode ili FlateDecode u Delphi-u i kad se to uradi kako dobiti pixele od toga (TBitmap) ?
Valjalo bi bez 3rd party komponenti ali ako mora može i to.
Re: Čitanje slika iz PDF-a 13.07.2022. u 20:42 · pre 52 meseca #2
Mislis da rucno citas pdf format i vadis slike i dekodujes? Ne bih bas savetavao, mislim da je lakse da iskoristis neki od besplatnih komand line programa za to, npr:
https://www.xpdfreader.com/about.html (upotreba je laka, pdfimages -j Input.pdf img).


Potpis
Do not be a help vampire (http://slash7.com/pages/vampires), use the google.

How to ask questions the smart way:
http://www.catb.org/~esr/faqs/smart-questions.html
http://solair.eunet.rs/~fangor...stions/smart-questions.sr.html
Re: Čitanje slika iz PDF-a 14.07.2022. u 09:03 · pre 52 meseca #4
@savkic
Da, hoću ručno bajtove koje sam izdvojio iz celog PDF-fajla pretvorim u TBitmap. Izdvojiti je baš lako, čak nema ni mnogo dekodera koji su u igri (6 ili 7 čini mi se, ja bih obradio 2 ili najviše 3), ali problem je što ne znam kako da dekodiram i nakon toga napravim bitmap. Jedan od dekodera je ako sam dobro shvati običan gzip (FlateDecode) ali dobijem neku grešku kad taj niz bajtova probam da dekodiram sa gzip. Uspevao sam nekad da provalim kako iz bitova da napravim sliku (kod nekih brojačica novca) ali ovde sam zapeo.
Jeste lakše uvek koristiti tuđe rešenje ali to će da me košta na drugoj strani :) performanse itd... Ako je to neko već negde napravio, mogu i ja. Ne čini mi se kao projekat od mesec ili više dana pa bih da odradim to kako treba.


@Living Light
Ne mislim na print screen jednog lista nego na listanje svih slika koje su ubačene u PDF i učitavanje slike u TBitmap. Pošto su sve slike uvek preko cele stranice i nema teksta, jeste, svodi se na print screen stranice ali to bi bio neki alternativni put. Recimo ghostscript izgleda da može tako nešto ali nisam ga koristio do sada. Njegov DLL mi je prihvatljivije rešenje od pozivanja drugog exe fajla koji mi exportuje slike negde na disk.


Recimo da nemam PDF na disku i da mi ni bitmape ne trebaju na disku, da mi je sve to u memoriji. Nekako mi je višak snimati PDF na disk pa pozivati strani exe i učitavati sa diska BMP i onda čistiti to.
Sve mi se čini da postoji negde neka funkcija (možda u drugim jezicima ako ne u Delphi) koja se zove npr Deflate, primi bajtove, napravi nove i onda da imam nešto tipa TBitmap.LoadFromNekiFormat(pa ti bajtovi). Ako i nema ne verujem da je neka nuklerna fizika.
Re: Čitanje slika iz PDF-a 14.07.2022. u 12:20 · pre 52 meseca #5
> Da, hoću ručno bajtove koje sam izdvojio iz celog PDF-fajla pretvorim u TBitmap. Izdvojiti je baš lako, čak nema ni mnogo dekodera
> koji su u igri (6 ili 7 čini mi se, ja bih obradio 2 ili najviše 3), ali problem je što ne znam kako da dekodiram i nakon toga napravim bitmap.
> Jedan od dekodera je ako sam dobro shvati običan gzip (FlateDecode) ali dobijem neku grešku kad taj niz bajtova probam da dekodiram sa gzip.

To nisam nikad radio, PDF format mi je uvek bio nocna mora (a gledao sam ga zbog nekih drugih stvari), znam da neke strimove encoduju putem zliba (Delphi to podrzava) pa eventualno da to probas.

> Recimo da nemam PDF na disku i da mi ni bitmape ne trebaju na disku, da mi je sve to u memoriji. Nekako mi je višak snimati PDF na disk pa
> pozivati strani exe i učitavati sa diska BMP i onda čistiti to.

To sad vise i nema veze, sistem koristi kes i za takve kratke stvari mislim da nista i ne pise na disk.

> Sve mi se čini da postoji negde neka funkcija (možda u drugim jezicima ako ne u Delphi) koja se zove npr Deflate, primi bajtove, napravi nove i
> onda da imam nešto tipa TBitmap.LoadFromNekiFormat(pa ti bajtovi). Ako i nema ne verujem da je neka nuklerna fizika.

Ima load from Stream, a pogledaj i Graphics32, ako tu nema onda tesko da nesto slicno gotovo postoji za Delphi.
Potpis
Do not be a help vampire (http://slash7.com/pages/vampires), use the google.

How to ask questions the smart way:
http://www.catb.org/~esr/faqs/smart-questions.html
http://solair.eunet.rs/~fangor...stions/smart-questions.sr.html
Re: Čitanje slika iz PDF-a 14.07.2022. u 13:10 · pre 52 meseca #6
Citat:
To nisam nikad radio, PDF format mi je uvek bio nocna mora (a gledao sam ga zbog nekih drugih stvari), znam da neke strimove encoduju putem zliba (Delphi to podrzava) pa eventualno da to probas.

Probaću zlib. Nisam napomenuo da mora u D7 da se reši :(

Citat:
To sad vise i nema veze, sistem koristi kes i za takve kratke stvari mislim da nista i ne pise na disk.

Kad kažeš "sistem" misliš na OS (windows)? Ne znam da li sam te shvatio dobro, ja kažem npr bmp.SaveToDisk(aaaa) i onda par komandi pa delete tog fajla, i on neće ni ići na disk??? Kako će neka strana aplikacija da vidi fajl, iz nekog windows keša ili će da kaže da ne postoji fajl?

Citat:
Ima load from Stream, a pogledaj i Graphics32, ako tu nema onda tesko da nesto slicno gotovo postoji za Delphi.

Znaš li možda kako treba da izgleda taj stream?
Re: Čitanje slika iz PDF-a 14.07.2022. u 15:58 · pre 52 meseca #7
Da, WindowsOS kesira sve sto moze i na disk salje samo ako bas mora, kratki fajlovi i slicno se uglavnom i ne upisuju na disk, dalje sam disk uredjaj sad ima kes pa i on upisuje tek kad mora itd. Ako su fajlovi neki manji (5 do 10mb) svejedno je kako ces raditi.


> Znaš li možda kako treba da izgleda taj stream?

Ne, ne znam detalje formata slika i slicno. TGraphics.LoadFromStream ocekuje pravi graficki format (.bmp, .jpg, cesto TGraphics.LoadFromFile se preusmerava na LoadFromStream).

Potpis
Do not be a help vampire (http://slash7.com/pages/vampires), use the google.

How to ask questions the smart way:
http://www.catb.org/~esr/faqs/smart-questions.html
http://solair.eunet.rs/~fangor...stions/smart-questions.sr.html
Re: Čitanje slika iz PDF-a 15.07.2022. u 12:23 · pre 52 meseca #8
Pogledaj ovaj link, trebao bi da ti bude od pomoci.

Code:
https://github.com/zeltox/Google-Drive-PDF-Downloader


Re: Čitanje slika iz PDF-a 18.07.2022. u 15:29 · pre 52 meseca #9
USPEO!


Ako je PDF "Filter" DCTDecode, onda je stream bukvalno JPG slika od početka do kraja! Kad se snimi u fajl, otvori se najnormalnije :)
Ako je PDF "Filter" FlateDecode, onda se sa ZLIB raspakuje stream (hvala Savkiću) i dobije se niz od širina * visina * 3 bajta. Bajtovi su redom RGB vrednosti, pa kad se nacrtaju na bitmapi to je to! Samo treba od stream-a pre raspakivanja oduzeti prva dva bajta, to je neki header.

Ostale Filtere neću za sada obrađivati, ali ako nekoga interesuje neka piše pa ako u međuvremenu rešim još neke napisaću ovde.
Prijavite se da biste odgovorili u ovoj temi.PrijavaRegistracija

Premeštanje teme