Problemy z konwersją wsadową .png na .pdf przy użyciu konwersji

111
convert /home/bill/TempScan/*.png  myfile.pdf

wyświetla komunikat o błędzie:

convert-im6.q16: not authorized `myfile.pdf' @ error/constitute.c/WriteImage/1037.

Każda pomoc będzie mile widziana!

Bill Lancaster
źródło

Odpowiedzi:

155

convertto potężne narzędzie wiersza polecenia do konwersji grafiki. Podobno zapewnia to zagrożenia dla bezpieczeństwa, zwłaszcza gdy jest używane w połączeniu z serwerem WWW. W najnowszych wersjach Ubuntu zaimplementowano plik zasad, w którym niektóre zastosowania convertsą ograniczone. Najwyraźniej plik ten domyślnie zabrania „konwertowania” wielu plików graficznych do jednego pliku PDF.

Plik zasad to /etc/ImageMagick-6/policy.xml. Możesz edytować ten plik jako użytkownik root, aby zmienić zasady.

Eliminując wszystkie ograniczenia użytkowania

W przypadku użytkowników komputerów stacjonarnych nie korzystających z serwera WWW wystarczy po prostu wyeliminowanie tych ograniczeń. W tym celu można usunąć plik, ale lepiej jest „przenieść plik”, zmieniając jego nazwę. Za pomocą tego polecenia zmieniasz nazwę pliku. W rezultacie wszystkie zasady zostały zniesione, ale nadal możesz cofnąć w razie potrzeby:

sudo mv /etc/ImageMagick-6/policy.xml /etc/ImageMagick-6/policy.xmlout

Aby przywrócić pierwotną sytuację, po prostu zmień nazwę z powrotem na pierwotną nazwę:

sudo mv /etc/ImageMagick-6/policy.xmlout /etc/ImageMagick-6/policy.xml

Eliminując jedynie ograniczenie do łączenia w PDF

W konkretnym przypadku gen_wood w komentarzu wskazał na możliwość selektywnego złagodzenia zasad pracy z plikami PDF, komentując jedną linię:

<policy domain="coder" rights="none" pattern="PDF" />

Edytuj plik i umieść znaki komentarza wokół tego wiersza, aby wyłączyć tę regułę:

<!-- <policy domain="coder" rights="none" pattern="PDF" /> -->

Jeśli nie chcesz wyeliminować wszystkich zasad bezpieczeństwa, to jest to, co należy zrobić.

Oświadczenie: zostałeś ostrzeżony, że usunięcie tego pliku zasad usuwa niektóre zasady bezpieczeństwa.

wanad
źródło
Dzięki wanadowi zmieniłem nazwę pliku zgodnie z sugestią i zadziałało.
Bill-Lancaster
4
Poszedłem do policy.xmlpliku i znalazłem linię, która uniemożliwiała mi łączenie pngplików w pdfsi, i skomentowałem. Ta linia miała miejsce, <policy domain="coder" rights="none" pattern="PDF" />jeśli chcesz pozostawić pozostałe zasady bez zmian, ale zezwalać na pracę z pdfs.
gene_wood,
1
@gene_wood, dziękuję: dodałem do postu, ponieważ zapewnia on więcej informacji i opcji dla użytkowników, którzy chcą bardziej ostrożnie eliminować ograniczenia.
wanad
2
Ok, działa to w Ubuntu 18.04 z imagemagick 8: 6.9.7.4 + dfsg-16ubuntu6.4. Dziękuję Ci.
Geppettvs D'Constanzo
Druga metoda działała dla mnie, ale pierwsza nie.
The Ledge
35

Jak napisano wanadu , musisz zmienić zasady ImageMagick.

sudo vim /etc/ImageMagick-6/policy.xml

i zamień linię

<policy domain="coder" rights="none" pattern="PDF" />

z

<policy domain="coder" rights="read|write" pattern="PDF" />

Jeśli chcesz zezwolić tylko na zapis, a nie na odczyt, możesz również usunąć read|część z powyższego wiersza.


BTW, dla osób zainteresowanych luką w ImageMagick, oto 2 linki informacyjne:

abu_bua
źródło