Próbuję przekonwertować pliki docx do formatu pdf na moim serwerze Ubuntu przy użyciu wiersza polecenia, ale żaden z konwerterów, których do tej pory próbowałem, nie wydaje się poprawnie konwertować plików Word 2007/2010/2013.
Najwyraźniej konwertery online mogą zarządzać nim bez żadnych problemów, ale usługi sieciowe nie są opcją, ponieważ pliki zawierają poufne dane. Do testów używam tego pliku Word 2007, ponieważ zawiera on kilka ważnych elementów (formuły, grafika wektorowa, obrazy, listy itp.). Testowałem następujące narzędzia (częściowo z tego postu ):
lowriter
(LibreOffice Writer) - niepoprawne wyjście (okrąg powinien znajdować się na ostatniej stronie, a nie pierwszej)
unoconv
- to samo co LibreOffice, ponieważ nie używa własnego konwertera. Konwersja najpierw do pliku odt, a następnie do pliku pdf powoduje całkowite przeskoczenie pliku.
abiword --to=pdf filename.doc
- niepoprawny i niekompletny (brakuje wielu elementów):
OpenOffice Writer - taki sam wynik jak dla abiword
wvPDF
- awaria z następującym komunikatem o błędzie:
~ $ wvPDF 2007_Office_DocEncryption.docx test.pdf
Aktualny katalog: / home / webmt / dev / test /
Niektóre problemy z uruchomieniem lateksu.
Sprawdź błędy w test.log
Kontynuacja ...
Konwersja do dvi nie powiodła się
Czy istnieje jakiś sposób prawidłowej konwersji plików docx do formatu PDF w systemie Linux? Pomogłoby mi to również, gdybym wiedział, że działa dla kogoś z którymkolwiek z programów, o których już wspomniałem. Rozpocznę nagrodę, gdy tylko SE mi na to pozwoli.
ps Używam serwera Ubuntu 12.04
Wniosek :
Musiałem dojść do wniosku, że jak dla mnie, jak na razie, nie ma niezawodnego narzędzia, które działałoby z nowymi formatami MS Word i wszelkiego rodzaju jego elementami na Ubuntu i tworzyłoby kopię plików docx jeden do jednego. Żadne z testowanych przeze mnie narzędzi nie mogło poprawnie przekonwertować pliku przykładowego. Ponieważ stanę w obliczu bardzo różnych rodzajów wersji / treści dokumentów, a jakość wydruku ma jeden z najwyższych priorytetów, w końcu wykonam konwersje za pomocą makr VB w programie Word na serwerze Windows podłączonym do mojego systemu Linux.
Ustawię post, aby uzyskać najlepsze wyniki jako zaakceptowaną odpowiedź. Jednak nagroda została przeznaczona na rozwiązanie z absolutnie poprawną konwersją. Jeszcze raz dziękuję wszystkim.
źródło
Odpowiedzi:
Ta odpowiedź przechodzi wszystkie testy, ale jeden schemat blokowy w dokumencie testowym.
Dlaczego jest to lepsze niż sugerują dotychczas inne metody?
Testowałem inne sugerowane dotąd metody (szczególnie
oowriter
iebook-convert
), ale zdają mniej testów niż ta metoda.ebook-convert
Metoda paski marginesy i część tekstów spośród dokumentu.Ta metoda daje nawet lepsze wyniki niż profesjonalny konwerter jak rainbowpdf .
Próbowałem także przekonwertować go na HTML, ale rysunek z kwadratem w okręgu i schemat blokowy są nieprawidłowe.
Dlaczego test schematu blokowego kończy się niepowodzeniem?
Wygląda na to, że libreoffice i unoconv mają pewne problemy z poprawnym renderowaniem schematu blokowego w pliku .docx. Wynika to prawdopodobnie z tego, że został stworzony przy użyciu inteligentnej sztuki w pakiecie Microsoft Office. To jest problem. Jest to błąd również omawiany w tym wątku . Informacje tekstowe i wizualne są obecne w pliku PDF wynikające z powyższej metody, jak widać (musiałem jednak zaznaczyć tekst).
Na przykład kolor czcionki nie został poprawnie odczytany, a niektóre wiersze są za długie. Nie znam żadnego rozwiązania linuksowego, które mogłoby poprawnie wyświetlać sztukę inteligentną. :(
Jest to również powód, dla którego wszystkie
print
rozwiązania zamieszczone na tej stronie nie będą cię zadowolić.W skrócie
Krótko mówiąc, to, co robisz, jest naprawdę trudne i obecnie nie ma rozwiązań, które by Cię w pełni satysfakcjonowały. Piętą achillesową konwersji docx2pdf jest sztuka inteligentna. Jeśli możesz żyć bez tego lub możesz znaleźć sposób na dostrzeżenie inteligentnej sztuki i przekształcenie jej w jakiś sposób w obraz, możesz osiągnąć swój cel.
Opcja 1. Zmuś użytkowników do rozwiązania problemu
To bardzo nieeleganckie rozwiązanie. Twórcy treści mogą zapisać swoją inteligentną grafikę jako jpg zgodnie z opisem na stronach pomocy pakietu Office, a zatem konwersja będzie możliwa na serwerze.
Opcja 2. Włam się do rozwiązania problemu
Jeśli schematy blokowe są często bardzo podobne i zależnie od tego, jak dobry jesteś programista, możesz spróbować przekonwertować sztukę inteligentną osobno. Możesz wyodrębnić plik drawing1.xml z klastra dokumentów docx, a następnie użyć przetwarzania języka naturalnego i kilku szalonych hacków, aby odbudować inteligentną grafikę. Na przykład musiałbyś zadzierać z tego typu xml:
Lub jako minimalne rozwiązanie przynajmniej wyodrębnij tekst (
<a:t>
?) Z pliku i zapisz go w łatwiejszy sposób. Lub jeśli schematy blokowe twoich plików pdf są takie same, możesz napisać skrypt, aby zmienić kolor tekstu i długość linii w samym pliku xml. Następnie możesz uruchomićdoc2pdf
i mieć plik, który zasadniczo zawiera wszystkie właściwe informacje, ale może nie ma formatowania. W przypadku schematów blokowych prawdopodobnie chciałbyś również uwzględnić niektóre formatowanie, ponieważ formatowanie jest częścią informacji.Opcja 3. Skorzystaj z usługi strony trzeciej
W ciągu ostatnich kilku dni przeprowadziłem więcej badań i znalazłem usługę, która idealnie wykonuje konwersję: zamzar . Zamzar umożliwia przesłanie pliku docx, a następnie wysłanie linku w wiadomości e-mail. Mają także usługę (płacącą?), W której możesz wysłać dowolny plik na adres [email protected], a następnie pobrać przekonwertowany plik z powrotem do skrzynki odbiorczej. Możesz łatwo zbudować system wokół tego, w którym automatycznie wysyłasz plik i analizujesz go z wiadomości e-mail. To nie jest tak dużo pracy, a wynik końcowy jest najlepszy.
Notatki
Właściwie poświęciłem czas na przetestowanie różnych metod zaproponowanych na tej stronie. Prosimy o uzupełnienie wszelkich komentarzy aktualnymi testami.
źródło
lowriter
jest terazlowriter --convert-to pdf input_file.docx
. Korzystanie--pt pdf
zakończy się niepowodzeniem po cichu.Jest to rozwiązanie wiersza polecenia, które działa przyzwoicie --- ale korzysta z zastrzeżonego oprogramowania.
Myślę, że podstawowym problemem jest to, że formaty Microsoft Word są w pełni zrozumiałe tylko dla Microsoft Word (nawet tam istnieją różnice między wersjami --- istnieją pliki Word z przeszłości, które otwierają się niepoprawnie sformatowane w nowszych wersjach). Wszystkie pozostałe rozwiązania są przybliżeniami i hackami, więc będą działać lub nie w zależności od pliku.
Tak więc, aby upewnić się, że musisz przetworzyć pliki docx za pomocą instalacji programu Microsoft Word (i tak, myślę, że jest to ich opcja i jest sprawiedliwa. Jeśli nie chcesz używać programu Word, nie używaj go --- Idę z LaTeX do mojej pracy, ale trudno jest przekonać resztę świata dookoła ...).
Używam Crossover od wieków do uruchamiania pakietu Microsoft Office na moim pulpicie Linux (1), co jest dość przydatne. Może to też działa z winem --- nigdy nie próbowałem.
Konwersję wykonuję przy użyciu tej konfiguracji:
1) Mam zainstalowany Crossover
2) Mam swoją wersję pakietu Microsoft Office zainstalowaną pod Crossover
3) W programie Microsoft Word wyłącz „drukowanie w tle”
4) Mam
cups-pdf
zainstalowaną drukarkę i wybrano ją jako drukarkę domyślną.5) Aby wykonać konwersję, uruchom (podpowiedzi tutaj ):
6) Twój przekonwertowany plik pojawi się w
~/PDF/
katalogu.Dokument wychodzi prawie idealnie (w odpowiedzi na pytanie nr 2 są pewne niedopasowania, które są wyświetlane w moim programie Office Word 2007 podczas pracy pod Crossover --- nie wiem, czy jest to związane z moją wersją systemu Windows).
Problem polega na tym, że wyskakuje graficzny interfejs słowa --- nie wiem, jak zrobić go „bezgłowym”. Opcje wiersza polecenia dla programu Word nie pomogły ...
(1) Nie jestem w żaden sposób związany z Codeveawers - po prostu szczęśliwy użytkownik.
źródło
Miałem również ten problem w przeszłości, nie musiałem go ostatnio używać, więc nie wiem, czy nadal mnie to dotyczy.
Jeśli chodzi o odpowiedź na pytanie:
To pytanie: Jak wykonać konwersję wsadową .doc lub .docx do .pdf, podaje w komentarzach przyczynę
lowriter
niepowodzenia konwersji :Odpowiedź na to pytanie może również pomóc:
Jak przekonwertować plik ODT na plik PDF?
Uciekłbyś
libreoffice --headless --convert-to pdf *.odt
. Możesz uzyskać więcej informacji na temat libreoffice za pomocą komendy,man libreoffice
jeśli potrzebujesz pomocy w zrozumieniu lub dostosowaniu komendy do działania.Nie możesz jednak mieć otwartego pakietu LibreOffice, jak na ten błąd: https://bugs.freedesktop.org/show_bug.cgi?id=37531
To pytanie jest również związane z Ubuntu, nawet jeśli jest na SuperUser: https://superuser.com/questions/156189/how-to-convert-word-doc-to-pdf-in-linux
Pierwsza odpowiedź ma dwie opcje, jedna używa CUPS i tworzy drukarkę PDF, druga używa LaTex, chociaż mówiłeś, że LaTex zawodzi.
Jeśli chodzi o konwersję do formatu PDF za pomocą CUPS PDF, należy uruchomić,
sudo apt-get install cups-pdf
a następnieoowriter -pt pdf your_word_file.doc(x)
. Może to pomóc w rozwiązaniu problemu z pisarzem.Jest to prawdopodobnie problem z faktem, że próbujesz przekonwertować na format PDF z DOC / DOCX, gdy większość narzędzi używa ODT, ponieważ są one powiązane z LibreOffice / OpenOffice / AbiWord. Dlatego albo nie próbują przekonwertować go z formatu DOCX firmy Microsofts, ani przy konwersji na format ODT.
Istnieje kilka błędów związanych z konwersją z .docx w. Word Art (wersja jest dołączona):
https://bugs.freedesktop.org/show_bug.cgi?id=33072 - 3.3.0 rc 2 (uważam, że jest nieaktualny)
https://bugs.freedesktop.org/show_bug.cgi?id=63289 - 4.0.2.2
https://bugs.freedesktop.org/show_bug.cgi?id=62251 - 4.0.0.3
https://bugs.freedesktop.org/show_bug.cgi?id=65260 - Nieokreślony
To jest z forum LibreOffice na temat konwersji z .doc i nieco .docx: http://en.libreofficeforum.org/node/5096 . Jest od stycznia 2013 r., Więc powinno to nieco obowiązywać.
Poza tym naprawdę nie wiem. Mam nadzieję, że rozwiążesz swój problem!
źródło
Jeśli masz zainstalowany Libreoffice, możesz spróbować dokonać konwersji za pomocą tego. Wystarczy nacisnąć Ctrl+ Alt+ Tna klawiaturze, aby otworzyć Terminal. Kiedy się otworzy, uruchom poniższe polecenia:
Inną opcją jest instalacja plików PDF z filiżankami .
Aby to zrobić, naciśnij Ctrl+ Alt+ Tna klawiaturze, aby otworzyć Terminal. Kiedy się otworzy, uruchom poniższe polecenia:
Następnie utwórz nową drukarkę, ustaw ją jako drukarkę plików PDF i nadaj jej dowolną nazwę, o ile znasz nazwę, a następnie uruchom:
I twój plik PDF będzie w
~/PDF
.źródło
Oto gorzka prawda: rozwiązania pakietu Office dla Linuksa to totalna awaria! Od wielu lat jestem pełnoetatowym użytkownikiem GNU / Linuksa i ciągle szukałem i wypróbowywałem różne rozwiązania biurowe, od starego Open-Office, do późniejszego Libre-Office, Abi-Word itp. wszyscy nie pomogli mi w pracy biurowej. Nawet gorzej, jeśli chodzi o języki inne niż łacińskie (języki od prawej do lewej, takie jak perski, arabski itp.). Użytkownik musi walczyć z tym oprogramowaniem, aby wykonać swoją pracę! Kompatybilności z Microsoft Office po prostu nie ma. Mogę mówić godzinami o tym, ile próbowałem i wszystkie one mnie zawiodły, ale nie o to chodzi w tym pytaniu.
Próbowałem również zainstalować i uruchomić pakiet Microsoft Office przy użyciu WINE, i to jakoś się udało, ale nie wyszło mi to dobrze i przede wszystkim zawiesiło się, gdy próbowałem otworzyć moje pliki biurowe.
LaTeX jest w porządku, ale nie jest to rozwiązanie biurowe. LaTeX służy do ustawiania typu i bardziej przypomina narzędzie profesjonalisty, nie ma też arkuszy kalkulacyjnych ani prezentacji.
Więc jakie jest rozwiązanie?
To nie jest rozwiązanie wiersza polecenia. Jedynym rozwiązaniem, które wymyśliłem przez te wszystkie lata, aby utrzymać mnie w systemie operacyjnym GNU / Linux i wykonywać prace biurowe, jest użycie minimalnej instalacji systemu Microsoft Windows na maszynie wirtualnej (takiej jak VirtualBox) i instalacja garnitur Microsoft Office.
Może nie brzmi to ładnie, ale jest to jedyne rozwiązanie, które działa bezbłędnie i oszczędza mi walki z rozwiązaniami biurowymi w moim cennym czasie. Na początku sam myślałem, że to nie jest dobre rozwiązanie, ale po tym, jak zawiodłem ze wszystkimi innymi i robiłem te rzeczy VM przez ponad 2 lata, jestem z tego bardzo zadowolony
:)
================================================== ==============================
UWAGA-1: Nie reklamuję produktów Microsoft! Po prostu próbuję pomóc rozwiązać problem i przejść do życia.
UWAGA-2: Jak podkreślono powyżej, NIE jest to rozwiązanie wiersza polecenia. Po co więc zamieszczać odpowiedź? Ponieważ jest to TESTOWANA i DOBRA PRACA! Jeśli nie jest dostępne żadne rozwiązanie wiersza polecenia WORKING (co wydaje mi się wysoce prawdopodobne), to posiadanie opcji ALTERNATYWNEJ jest lepsze niż BRAK opcji.
źródło
wine
zamiast maszyny wirtualnej?WINE
nie poszło dobrze. Program nie działał tak jak w systemie Windows (wykazywał nieprawidłowe zachowanie), a także bardzo się zawieszał!Oto kilka aplikacji, które możesz wypróbować i sprawdzić, czy działają FF Multi Converter lub możesz wypróbować Kingsoft Office .
źródło
Zainstaluj Calibre z Software Center lub Synaptic i ustaw domyślną wartość wyjściową na PDF.
Z poziomu wiersza poleceń wykonaj
źródło
ValueError: No plugin to handle input format: docx
. Google nie pomógł w tym, więc zgłoszę błąd.