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
doc:appunti:prog:pdf [2016/09/07 17:09] – [Creazione dei bookmark (indice)] niccolodoc:appunti:prog:pdf [2022/12/07 09:25] (current) – [Dividere le pagine in due o più pagine] niccolo
Line 53: Line 53:
 convert -density 150 -quality 100 input.pdf output.jpg convert -density 150 -quality 100 input.pdf output.jpg
 </code> </code>
 +
 +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>
 +convert -density 300 -background white -alpha remove -define png:color-type=6 input.pdf output.png
 +</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 60: 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 69: 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 85: 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 91: Line 174:
  
 <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 106: Line 189:
  
 <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.1473260962.txt.gz · Last modified: 2016/09/07 17:09 by niccolo