Sprawdzanie poprawności plików dokumentów


2

Potrzebuję prostego sposobu, aby sprawdzić, czy moje pliki są prawidłowymi dokumentami (pdf, doc, docx, ppt, pptx, xls, xlsx, odt, ods, odp itp.).

Nie mogę użyć, fileponieważ w magicogóle nie działa dobrze. Na przykład w przypadku plików PDF jest to mój wynik.

sweb@sweb-laptop: /media/files/ebooks/PDF and CHM$ file --mime *. Pdf
PHP 5 for Dummies. Pdf: application/pdf; charset=binary
PHP 6 and MySQL 5 for Dynamic Web Sites. Pdf: application/octet-stream; charset=binary
PHP6 and MySQL Bible. Pdf: application/pdf; charset=binary
PHP6.pdf: application/octet-stream; charset=binary
PHP and MySQL for Dummies SE. Pdf: application/pdf; charset=binary

Na przykład używam abiword- co jest dobrym narzędziem - ale konwertuje dowolny format. Nie sprawdza poprawnych dokumentów:

abiword --to=txt --to-name=output.txt audio.mp3

Czy jest zatem dostępne polecenie, aby sprawdzić poprawność dokumentów?


Doskonałe pytanie. Chciałbym również znać odpowiedź na to pytanie.
— Julian Knight

Niestety, jakoś to formatowanie zostało pomieszane. Mam nadzieję, że to już naprawione!
— slhck

@slhck ty for Improv
— sweb

Odpowiedzi:


2

Zaktualizować /usr/share/file/magicplik?

#------------------------------------------------------------------------------
# pdf:  file(1) magic for Portable Document Format
#

0 string    %PDF-   PDF document
>5  byte    x   \b, version %c
>7  byte    x   \b.%c

Używałbym zrzutu heksadecymalnego, aby sprawdzić kilka pierwszych bajtów plików PDF, które nie zostały poprawnie zidentyfikowane.


Aktualizacja.

Sposób aktualizacji magicznego pliku zależy od systemu operacyjnego i dystrybucji. Zazwyczaj używasz menedżera pakietów. Na przykład w RedHat Linux i późniejszych dystrybucjach możesz użyć, yum provides /usr/share/file/magicaby znaleźć pakiet zawierający ten plik, a następnie użyć sudo yum update <packagename>...

$ yum provides /usr/share/file/magic
...
file-4.17-15.el5_3.1.x86_64 : A utility for determining file types.
Repo        : installed
Matched from:
Other       : Provides-match: /usr/share/file/magic


$ sudo yum update file
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
 * base: centos.mirroring.pulsant.co.uk
 * extras: centos.mirroring.pulsant.co.uk
 * rpmforge: nl.mirror.eurid.eu
 * updates: centos.mirroring.pulsant.co.uk
Setting up Update Process
Resolving Dependencies
--> Running transaction check
---> Package file.x86_64 0:4.17-21 set to be updated
rpmforge/filelists_db                                    | 5.9 MB     00:08
updates/filelists_db                                     | 1.9 MB     00:03
--> Finished Dependency Resolution

Dependencies Resolved

================================================================================
 Package          Arch               Version             Repository        Size
================================================================================
Updating:
 file             x86_64             4.17-21             base             320 k

Transaction Summary
================================================================================
Install       0 Package(s)
Upgrade       1 Package(s)

Total download size: 320 k
Is this ok [y/N]: y
Downloading Packages:
file-4.17-21.x86_64.rpm                                  | 320 kB     00:02
Running rpm_check_debug
Running Transaction Test
Finished Transaction Test
Transaction Test Succeeded
Running Transaction
  Updating       : file                                                     1/2
  Cleanup        : file                                                     2/2

Updated:
  file.x86_64 0:4.17-21

Complete!

Jeśli chcesz, możesz zamiast tego zaktualizować magicplik za pomocą edytora tekstu po przeczytaniu man magici użyciu hexdump _C -n 20przykładowych plików dokumentów do samodzielnego opracowania podpisów.

jeśli masz zamiar to zrobić, rozsądnie może być najpierw utworzyć osobny plik magii i przetestować go za pomocą opcji files -m magicfile.


PS

$ file --mime `locate *.pdf`
/usr/share/doc/bind-9.3.6/arm/Bv9ARM.pdf:                application/pdf
/usr/share/doc/libtheora-1.0alpha7/Theora_I_spec.pdf:    application/pdf
/usr/share/doc/prelink-0.4.0/prelink.pdf:                application/pdf
/usr/share/doc/samba-3.0.33/Samba3-ByExample.pdf:        application/pdf
/usr/share/doc/samba-3.0.33/Samba3-Developers-Guide.pdf: application/pdf
/usr/share/doc/samba-3.0.33/Samba3-HOWTO.pdf:            application/pdf
/usr/share/doc/speex-1.0.5/manual.pdf:                   application/pdf
/usr/share/ghostscript/8.70/examples/annots.pdf:         application/pdf
/usr/share/gimp-print/doc/users-guide.pdf:               application/pdf

Być może możesz przesłać do witryny udostępniania plików niektóre pliki, które filenie są poprawnie zidentyfikowane.


jak mogę to zaktualizować? gdzie jest główny oddział pliku magii?
— sweb

@sweb: patrz zaktualizowana odpowiedź
— RedGrittyBrick
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.