2011-01-18 13 views
10

Sto generando un PDF (utilizzando fpdf) e mi chiedo se esiste un modo per impostare le proprietà del documento su come predefinite da stampare senza ridimensionamento.Imposta PDF da stampare senza ridimensionamento

Quindi, quando si seleziona la stampa dal menu di dialogo di stampa, il ridimensionamento è impostato su Nessuno. Sto cercando di determinare se questa è un'impostazione utente o qualcosa che posso controllare nella creazione del PDF.

Grazie in anticipo.

risposta

2

Il ridimensionamento è controllato dall'applicazione PDF - non è impostato nel file.

+0

Grazie per la risposta. È qualcosa che potrebbe essere raggiunto scrivendo un plugin e chiedendo all'utente di installare il plugin? – JCam

+0

Si potrebbe spedire il proprio visualizzatore o plug-in ma sarebbe molto lavoro e si dovrebbe garantire all'utente di usarlo –

+7

Questa risposta è fuorviante. C'è un modo per incorporare una preferenza nel file per non richiedere il ridimensionamento. La maggior parte delle applicazioni PDF soddisferà le preferenze e non ridimensionerà il documento come risultato. – lukecyca

0

bene io non sono sicuro se si intende somethink in questo modo: http://www.fpdf.org/en/doc/setdisplaymode.htm

o no "scala" per le immagini?

$im2 = pdf_open_image_file($dokument, 'jpeg', 'example.jpg'); 
pdf_place_image($dokument, $im2, 395, 655, 1.0); /* 1.0 = qualiti/scaling - 1.0 is original .../* 
pdf_close_image($dokument, $im2); 
+0

Questo è utile, ma sto cercando qualcosa di diverso. Ho aggiornato il post per essere un po 'più chiaro. Grazie per il suggerimento. – JCam

0

Mi sono imbattuto nello stesso problema.

Ho diversi file PDF in cui il contenuto del PDF, che è il testo e le immagini, vanno molto vicino al confine con i PDF, ma ancora l'anteprima di dialogo di stampa/Acrobat suggerisce la stampa in scala al 100%, tagliando così fuori i contenuti che aren 'stampabile a causa dei margini naturali delle stampanti.

Creazione di qualsiasi PDF in Pages per risultati di esempio in un PDF che viene stampato in scala 100% per impostazione predefinita.

Tuttavia, se creo un PDF utilizzando TCPDF correlato a FPDF, la finestra di dialogo della stampante suggerisce di ridimensionarla per adattarla alla pagina.

Il mio sospetto è che il modo in cui viene creato il PDF è diverso. Sospetto che Pages e altri strumenti creino livelli separati e che vengano gestiti in modo diverso, probabilmente con una bandiera o qualcosa del genere.

Ho confrontato le parti leggibili dei miei due file PDF e ho riscontrato alcune differenze, soprattutto su come i documenti iniziano. La mia conoscenza delle origini PDF è, tuttavia, molto limitata, quindi posso solo immaginare che cosa deve cambiare. Esiste un riferimento PDF in cui viene indicato come controllare gli oggetti/le aree stampabili?

Ecco il contenuto di un file PDF minima che verrà stampato senza ridimensionamento:

%PDF-1.4 
1 0 obj 
<< /Type /Catalog 
/Outlines 2 0 R 
/Pages 3 0 R 
>> 
endobj 
2 0 obj 
<< /Type /Outlines 
/Count 0 
>> 
endobj 
3 0 obj 
<< /Type /Pages 
/Kids [4 0 R] 
/Count 1 
>> 
endobj 
4 0 obj 
<< /Type /Page 
/Parent 3 0 R 
/MediaBox [0 0 595 842] 
/Contents 5 0 R 
/Resources << /ProcSet 6 0 R 
/Font << /F1 7 0 R >> 
>> 
>> 
endobj 
5 0 obj 
<< /Length 73 >> 
stream 
BT 
/F1 24 Tf 
100 100 Td 
(Hello World) Tj 
ET 
endstream 
endobj 
6 0 obj 
[ /PDF /Text ] 
endobj 
7 0 obj 
<< /Type /Font 
/Subtype /Type1 
/Name /F1 
/BaseFont /Helvetica 
/Encoding /MacRomanEncoding 
>> 
endobj 
xref 
0 8 
0000000000 65535 f 
0000000009 00000 n 
0000000074 00000 n 
0000000120 00000 n 
0000000179 00000 n 
0000000364 00000 n 
0000000466 00000 n 
0000000496 00000 n 
trailer 
<< /Size 8 
/Root 1 0 R 
>> 
startxref 
625 
%%EOF 
0

Ok, penso che ho preso. Prova questo: apri il tuo PDF creato da TCPDF e rimuovi tutte le occorrenze di viewerpreferences e qualsiasi istruzione box diversa da MediaBox ... facendo così, alla fine, hai ottenuto un PDF senza ridimensionamento della stampa predefinito :) cuciture come quelle aggiuntive -inteso per la stampa professionale- solo confondere il comune pdf-viewer invece di aiutare con qualsiasi cosa :)

Goto tcpdf.php e cambiare la linea 8529 di metodo _putpages come segue

cambiamento

$boxes = array('MediaBox', 'CropBox', 'BleedBox', 'TrimBox', 'ArtBox'); 

in

$boxes = array('MediaBox'); 

Nel mio PDF-output questo rimosso immediatamente il problema di scala :)

6

Stampa-scaling può essere disattivato per i file PDF individuali utilizzando Adobe Acrobat, andando su File -> Preferenze -> Avanzate -> Ridimensionamento pagina. (. Si può provare questo utilizzando la versione di prova di Acrobat)

Per quanto riguarda il raggiungimento di questo nel codice, ho provato e non è riuscito a farlo funzionare, ma la differenza critica nei file sembra essere:

10 0 obj 
<</Metadata 2 0 R/Outlines 6 0 R/Pages 7 0 R/Type/Catalog/ViewerPreferences<</PrintScaling/None>>>> 
endobj 

per i PDF non-scaling, rispetto al

10 0 obj 
<</Metadata 2 0 R/Outlines 6 0 R/Pages 7 0 R/Type/Catalog>> 
endobj 

per coloro che utilizzano il default shrink-to-fit opzione.

+0

Ciao, questo è un po 'allungato, ma come dovrei usarlo con Exiftool - http://www.sno.phy.queensu.ca/~phil/exiftool/ – BelgoCanadian

8

ho fatto aggiungendo al metodo _putcatalog() il seguente:

$this->_out('/ViewerPreferences [/PrintScaling/None]'); 

Dopo la linea:

$this->_out('/Type /Catalog'); 

L'implementazione di un metodo è solo facile e veloce ...

+1

Una variazione di questo ha funzionato per me. Ho creato una sottoclasse di FPDF e sovrascritto _putcatalog() per produrre "/ ViewerPreferences <>" dopo il suo output esistente. – lukecyca

+0

Quando ho usato "SetViewerPreferences" ("PrintScaling", "Nessuno") di ReportLab "' ha generato la riga ''/ViewerPreferences 12 0 R'' e aggiunto '' 12 0 obj <> '' più in basso nella pagina. L'altro valore possibile sembra essere ''/PrintScaling/AppDefault''. –

2

Per me cambiare il metodo del catalogo FPDF _putcatalog() e aggiungere

$this->_out('/ViewerPreferences [/PrintScaling/None]'); 

non stava raggiungendo l'obiettivo, quindi ho guardato il codice prodotto da un PDF di Acrobate XI e trovato un po 'più di verbage. L'aggiunta del seguente codice

$this->_out('/ViewerPreferences<</Duplex/Simplex/Enforce[/PrintScaling]/PrintScaling/None>>'); 

creato un file PDF che non è più in default per il ridimensionamento e invece ha dato solo la possibilità di stampare il formato reale, che era quello che desiderava.

+0

Dove nella funzione l'hai messo? Alla fine o come suggerito dalla risposta di onosenday, dopo l'uscita "/ Tipo/Catalogo"? –

Problemi correlati