Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Convertire molti file markdown in PDF #93

Closed
pigreco opened this issue Oct 20, 2019 · 10 comments
Closed

Convertire molti file markdown in PDF #93

pigreco opened this issue Oct 20, 2019 · 10 comments

Comments

@pigreco
Copy link
Contributor

pigreco commented Oct 20, 2019

Ho una cartella con molti file markdown e dovrei convertirli in PDF, usando VScode ho trovato una estensione (Markdown PDF) che permette la conversione ma un file per volta.

Come potrei ovviare??

@pigreco
Copy link
Contributor Author

pigreco commented Oct 20, 2019

Dopo qualche ricerca nel web ho trovato questa risposta in stackoverflow.com dove consigliano di usare Pandoc:

pandoc *.md -o result.pdf

ma ottengo un errore:

pdflatex not found. Please select a different --pdf-engine or install pdflatex

anche installando pdflatex : sudo apt install texlive-latex-base

non riesco a fare la conversione.

@pigreco
Copy link
Contributor Author

pigreco commented Oct 20, 2019

Ho provato anche un'altra soluzione:
convertire da *.md in *.odt: pandoc *.md -o output.odf , funziona ma le immagini (contenute nel md) vengono deformate e il file pdf risulta inutilizzabile:

image

EDIT:
allego un file .md con immagini
da_md_a_odt.zip

@aborruso
Copy link
Member

aborruso commented Oct 20, 2019

convertire da *.md in *.odt: pandoc *.md -o output.odf , funziona ma le immagini (contenute nel md) vengono deformate e il file pdf risulta inutilizzabile:

Che comando pandoc hai usato? Senza sapere questo, è difficile dare un contributo.

Se usi pandoc *.md -o output.odf , si ripete quanto abbiamo già visto insieme con le immagini: non si adattano, perché non è definita larghezza, dpi, ecc..

Quando l'abbiamo risolta insieme (creare un ODT a partire dal PDF) abbiamo applicato questa logica https://gist.github.com/aborruso/d446de664b2dbef4a8c9aa6f315539b5

Non è probabilmente una modalità valida per tutti i casi, ma penso che studiando i tuoi file di input, si possa adattare.

@pigreco
Copy link
Contributor Author

pigreco commented Oct 21, 2019

Buongiorno @aborruso ,

Che comando pandoc hai usato?

ho usato semplicemente questo comando:

pandoc *.md -o output.odf

@aborruso
Copy link
Member

ho usato semplicemente questo comando:

pandoc *.md -o output.odf

ok, purtroppo (come abbiamo visto), non è un comando completo, perché non contiene info sulle immagini.

@aborruso
Copy link
Member

aborruso commented Oct 21, 2019

Caro @pigreco ho visto il tuo file di esempio:

  • ci sono errori nei path HTML;
  • mancano delle " nella definizione del src delle immagini.

Il metodo che ho ducumentato qui nell'opzione 2

pandoc -o output.odt --lua-filter=imgWidth.lua --reference-doc=myPandocTemplate.odt  02_installazione.md

prevede che le immagini siano inserite in sintassi markdown. Ti allego uno zip per replicare la cosa.
Contiene pure un output di esempio.

Se la cosa va bene, non ti resta che fare un loop in bash e creare gli odt. Con quelli poi c'è da trovare come generare dei PDF, ma immagino non sia complesso (con libreoffice stesso in batch è fattibile).

Saluti

da_md_a_odt.zip

@gbvitrano
Copy link
Member

gbvitrano commented Oct 21, 2019

Ho provato a sostituire il --pdf-engine di pandoc ma al momento non funziona!
ho installato lualatex ma non riesco a settarlo di default.
Provo a dare questo comando

pandoc *.md -o result.pdf --pdf-engine=lualatex

ma dice che lualatex non è installato.

Per il momento mi arrendo con pandoc :-)

Ho trovato un plugin di vscode che potrebbe fare al caso tuo.
immagine
è il plugin Markdown Converter

una volta installato, premendo F1 e digitando Markdown: Converter all Document troverai il comando, come in figura.
immagine
Il plugin automaticamente converte tutti i file .md che si trovano nella cartella radice e sottocartelle varie.
Per convertire un gruppo di cartelle specifiche ho aperto nuova un'area di lavoro sulla cartella di mio interesse.
Esempio voglio convertire in pdf solo i file della cartella ricette su tansignari
2019-10-21_18h50_25

Apro la cartella in una nuova area di lavoro, schiaccio F1 e seleziono Markdown: Converter all Document
e dopo qualche minuto (il mio pc è lento) tutti i file .md all'inertno di ricette sono stati convertiti in pdf :-)
2019-10-21_18h53_42

@gbvitrano
Copy link
Member

gbvitrano commented Oct 22, 2019

Dopo aver provato diversi --pdf-engine con pandoc xelatex sembra funzionare ma a condizioni che i file .md siano formattati come suggerisce @aborruso

per installare
sudo apt-get install texlive-xetex

questo comando converte tutti i file .md presenti in una cartella in un unico file pdf
pandoc *.md --pdf-engine=xelatex -o result.pdf

per convertire un singolo file
pandoc test.md --pdf-engine=xelatex -o test_pdf.pdf

Occore approfondire la formattazione del pdf in uscita, formato, caratteri, margini, ect

@gbvitrano
Copy link
Member

gbvitrano commented Oct 22, 2019

@pigreco ho trovato questa procedura per ubuntu, per installare pdflatex stranamente non mi dato problemi nell'installazione e il comando
pandoc *.md -o result.pdf --pdf-engine=pdflatex funziona

funziona anche pandoc *.md -o result.pdf
forse pdflatex con questa procedura è tornato ad essere il pdf-engine predefinito

@gbvitrano
Copy link
Member

gbvitrano commented Oct 22, 2019

Qui un test usando lo stesso file semicoln_googlesheets.md

result_pandoc.pdf
result_vscode.pdf

La formatazzione del pdf in output da vscode è migliore

pigreco added a commit that referenced this issue Feb 10, 2020
pigreco added a commit that referenced this issue Feb 10, 2020
@pigreco pigreco closed this as completed in 6aba155 Mar 4, 2020
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants