User Tools

Site Tools


doc:appunti:prog:pdf

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
Last revisionBoth sides next revision
doc:appunti:prog:pdf [2018/03/14 21:25] – [Rasterizzazione di un PDF] niccolodoc:appunti:prog:pdf [2022/12/07 09:24] – [Raggruppare pagine pari e dispari] niccolo
Line 54: Line 54:
 </code> </code>
  
-per rimuovere eventuali trasparenze e sostituirle con uno sfondo bianco:+per rimuovere eventuali trasparenze e sostituirle con uno sfondo bianco e per forzare l'output in RGB (altrimenti si potrebbe avere l'errore "//RGB color space not permitted on grayscale PNG//"):
  
 <code> <code>
-convert -density 300 -background white -alpha remove input.pdf output.png+convert -density 300 -background white -alpha remove -define png:color-type=6 input.pdf output.png
 </code> </code>
 +
 +Potrebbe capitare l'errore durante la conversione:
 +
 +<code>
 +convert: attempt to perform an operation not allowed by the security
 +policy `PDF' @ error/constitute.c/IsCoderAuthorized/408.
 +</code>
 +
 +In tal caso è necessario rimuovere queste righe dal file **/etc/ImageMagick-6/policy.xml**:
 +
 +<file>
 +  <!-- disable ghostscript format types -->
 +  <policy domain="coder" rights="none" pattern="PS" />
 +  <policy domain="coder" rights="none" pattern="PS2" />
 +  <policy domain="coder" rights="none" pattern="PS3" />
 +  <policy domain="coder" rights="none" pattern="EPS" />
 +  <policy domain="coder" rights="none" pattern="PDF" />
 +  <policy domain="coder" rights="none" pattern="XPS" />
 +</file>
  
 ===== Estrazione di alcune pagine ===== ===== Estrazione di alcune pagine =====
Line 67: Line 86:
 pdftk A=document.pdf cat A6-14 output document_p6-14.pdf pdftk A=document.pdf cat A6-14 output document_p6-14.pdf
 </code> </code>
 +
 +È possibile estrarre intervalli diversi con una sola riga di comando indicandoli in successione, ad esempio: **%%cat A1-104 A107-118%%**.
 +
  
 ===== Unione di più documenti ===== ===== Unione di più documenti =====
  
-Il comando **''pdfunite''** è contenuto nel pacchetto Debian **poppler-utils**:+Si utilizza il **''pdftk''** contenuto nel pacchetto Debian **pdftk-java**: 
 + 
 +<code> 
 +pdftk "part1.pdf" "part2.pdf" cat output "document.pdf" 
 +</code> 
 + 
 +Un sistema più lento, ma più efficiente (impiega più tempo, ma può produrre documenti PDF più piccoli) è utilizzare direttamente **gs**: 
 + 
 +<code> 
 +gs -dBATCH -dNOPAUSE -q -sDEVICE=pdfwrite -sOutputFile=output.pdf doc1.pdf doc2.pdf ... 
 +</code> 
 + 
 +In alternativa esiste il comando **''pdfunite''** è contenuto nel pacchetto Debian **poppler-utils**:
  
 <code> <code>
Line 76: Line 110:
 </code> </code>
  
-oppure si utilizza il **''pdftk''**:+ATTENZIONE: Il comando pdfunite (almeno con Debian 11 Bullseye) produce un PDF con problemi, per cui risulta impossibile **manipolare i metadati**. Ad esempio utilizzando il comando **pdftk** con l'opzione **update_info** (vedi esempio in questa pagina) si ottiene l'errore:
  
 <code> <code>
-pdftk "part1.pdf" "part2.pdf" cat output "document.pdf"+pdftk Error in UpdateInfo(): no Info dictionary found; 
 +Warning: no Info added to output PDF.
 </code> </code>
 +
 +Anche il tool **exiftool** ha problemi a modificare i metadati su un file prodotto da **pdfunite**:
 +
 +<code>
 +exiftool -Title="Book Title" -Author="John Doe" pdfunite_doc.pdf
 +Error: Objects in xref table (367) exceed trailer dictionary Size (358) - united-pdfunite.pdf
 +    0 image files updated
 +    1 files weren't updated due to errors
 +</code>
 +
 ===== Conversione di raster in PDF ===== ===== Conversione di raster in PDF =====
  
Line 92: Line 137:
 pdfjam --outfile document-a4.pdf --paper a4paper document.pdf pdfjam --outfile document-a4.pdf --paper a4paper document.pdf
 </code> </code>
 +
 +È possibile specificare le dimensioni esatte della pagina, ad esempio in punti tipografici:
 +
 +<code>
 +pdfjam --papersize '{728.39pt,560.519pt}' --outfile output.pdf document.pdf
 +</code>
 +
 +===== Raggruppare pagine pari e dispari =====
 +
 +È possibile reimpaginare un documento in modo che una singola pagina contenga due o più pagine dell'originale. Ad esempio per affiancare pagine pari e dispari si usa la geometria 2x1:
 +
 +<code>
 +pdfjam --nup 2x1 --landscape --outfile facing-pages.pdf document.pdf
 +</code>
 +
 +===== Dividere le pagine in due o più pagine =====
 +
 +Esempio: un documento contiene le pagine pari e dispari affiancate in una singola pagina e si desidera separarle. Si utilizza il comando **mutool** contenuto nel pacchetto Debian **mupdf-tools**:
 +
 +<code>
 +mutool poster -x 2 doc-facing-pages.pdf output.pdf
 +</code>
 +
 +**ATTENZIONE**: Eventuali immagini contenute in una pagina vengono raddoppiate nel documento finale, probabilmente ogni sottopagina creata contiene un riferimento alla stessa. È possibile utilizzare **gs** per una elaborazione finale che rimuove i doppioni:
 +
 +<code>
 +gs -dBATCH -dNOPAUSE -q -sDEVICE=pdfwrite -sOutputFile=output.pdf -dDetectDuplicateImages=true document.pdf
 +</code>
 +
 +**ATTENZIONE**: In realtà il parametro **DetectDuplicateImages** rimuove gli oggetti duplicati, ma i riferimenti "doppioni" nel documento restano, semplicemente punteranno allo stesso ID oggetto.
  
 ===== Creazione dei bookmark (indice) ===== ===== Creazione dei bookmark (indice) =====
Line 98: Line 173:
  
 <code> <code>
-pdftk document.pdf dump_data output pdf_data.txt+pdftk document.pdf dump_data output metadata.txt
 </code> </code>
  
-nel file **pdf_data.txt** che viene generato è possibile aggiungere sezioni del tipo:+nel file **metadata.txt** che viene generato è possibile aggiungere sezioni del tipo:
  
 <file> <file>
Line 113: Line 188:
  
 <code> <code>
-pdftk document.pdf update_info pdf_data.txt output new_document.pdf+pdftk document.pdf update_info metadata.txt output new_document.pdf
 </code> </code>
 +
 +===== Conversione da epub a PDF per smartphone =====
 +
 +Il formato epub è sicuramente più flessibile perché si adatta automaticamente alle dimensioni dello schermo del viewer, ecc., ma non tutti hanno un visualizzatore epub sul telefonino, mentre un visualizzatore PDF è molto più comune.
 +
 +Ecco quindi come convertire nel formato PDF ingrandendo il testo in modo che sia leggibile in modalità pagina intera senza dover effettuare zoom. Inoltre la dimensione della pagina è stata impostata con un rapporto larghezza:altezza pari a 9:15, in modo che sfrutti quasi tutto lo schermo di uno smartphone 9:16:
 +
 +<code>
 +ebook-convert input_file.epub output_file.pdf --unit point --custom-size 594x992 --base-font-size 19
 +</code>
 +
 +Il comando **ebook-convert** viene installato con il pacchetto Debian **calibre**.
 +
 +===== Creazione PDF da pagine SVG =====
 +
 +Se si dispone di diverse pagine in formato SVG è possibile creare un unico PDF utilizzando il tool rsvg-convert (dal pacchetto Debian **librsvg2-bin**). Questa la riga di comando:
 +
 +<code>
 +rsvg-convert --format pdf --keep-aspect-ratio --output output.pdf page*.svgz
 +</code>
 +
doc/appunti/prog/pdf.txt · Last modified: 2022/12/07 09:25 by niccolo