Domanda

Vorrei chiedere se è possibile modificare i file PDF utilizzando il xpdf biblioteca e se sì come? Credo che questo è possibile, ma non ho potuto trovare qualche tutorial né la documentazione per xpdf così ho davvero idea :(. Sono aperto anche per l'utilizzo di un'altra libreria, se ogni altro ha il supporto per pdf modifica. Il mio unico requisito per tale libreria è che deve essere un C ++ biblioteca o almeno un C uno e deve essere cross-platform (Windows e Linux)

Ho bisogno solo l'editing di base di un file pdf, ad esempio:

  

"Questo è un testo in un documento pdf" sarebbe stato cambiato in "questa è una testo in pdf" con un diverso colore di testo.

Grazie per tutte le vostre risposte!

È stato utile?

Soluzione

Solo così si capisce la portata di ciò che si sta entrando, "editing di base" del PDF contenuto è quasi sempre non è banale.

Contenuto della pagina in PDF è rappresentato da brevi programmi RPN che dipingono sulla pagina. E 'un piccolo linguaggio simile a PostScript nella semantica, ma senza looping strutture o definizioni di funzioni (quindi non c'è nessun problema della terminazione). In un mondo sano, il testo sulla pagina sta per essere rappresentato da qualcosa di simile a questo:

BT /F1 12 Tf 72 720 Td (this is a text in a pdf document) Tj ET

che tradotto in qualcosa di più familiare, è questo:

BeginText();
SetFont(F1, 12.0);  // Font 1, 12.0 pt
TextMoveTo(72, 720);
ShowText("this is a text in a pdf document");
EndText();

Quindi, in questo caso, è necessario trasformare questo in qualcosa di simile a questo:

BeginText();
SetFont(F1, 12.0);  // Font 1, 12.0 pt
TextMoveTo(72, 720);
ShowText("this is a ");
SetFont(F2, 12);
ShowText("text");
SetFont(F1, 12);
ShowText(" in a pdf document");
EndText();

che sarebbe diventato:

BT /F1 12 Tf 72 720 Td (this is a ) Tj /F2 12 Tf (text) Tj /F1 12 Tf
( in a pdf document) Tj ET

nel PDF equivalente. Il problema è che molti duplice:

  1. È necessario estrarre la pagina e tutte le sue risorse (non banale)
  2. È necessario generare una nuova pagina, l'inserimento di nuove risorse (si sta aggiungendo un nuovo font), incorporare il tipo di carattere, se ammissibile
  3. Modificare il flusso di contenuto della pagina per includere il contenuto modificato.

E 3 è dove si sta andando ad ottenere appeso, perché ci sono un numero infinito di modi per generare una pagina che ha il contenuto che si descrive e anche con una libreria decente, si sta andando ad avere un tempo difficile ottenendo forse il 70% di loro. Lasciatemi descrivere brevemente perché questo è così male come sembra. Ci sono programmi PDF generazione (io sto guardando a voi, troff) che giacevano tutto il testo normale in una pagina, poi gettare tutto il testo in corsivo, poi tutto il testo in grassetto. Lo giuro, non sto inventando. Alcuni programmi vogliono porre il testo verso il basso in modo molto preciso, quindi, se siete fortunati, useranno l'operatore TJ, che delinea il testo con particolare crenatura. Se non siete fortunati (che è la maggior parte del tempo), sono invece lay out il testo con una serie di mosse prima di ogni singolo glifo sulla pagina. E se il testo è prevista la nostra su una curva o un orientamento insolito (mappe, annunci)? Che dire dei casi in cui qualcuno cambia in modo sottile la dimensione del carattere per una maggiore distinzione tra maiuscole e minuscole o simula small cap?

Questo è il motivo per cui, quando ho scritto lo strumento di testo scoperta per Acrobat 1.0, mi ci sono voluti due mesi di sudore per gestire il maggior numero di casi limite. Questo non sta modificando il testo -. È solo cercando di trovare una sola parola o una frase

non ho intenzione di raccomandare una libreria per te - mi dispiace - xpdf ho dato un breve sguardo più e non è chiaro se sia o non ha capacità di generazione di PDF o se si tratta semplicemente di un consumatore di PDF. PDFlib, che è un prodotto commerciale, sembra essere quello di generare PDF, anche se non è chiaro se si può consumare, ma si potrebbe certamente ottenere entrambi i lati incollando insieme.

Se si trattasse di me, vorrei utilizzare gli strumenti che ho sviluppato e sarei ancora un po 'timido di questo compito. La mia biblioteca è utilizzato da Atalasoft , l'azienda per cui lavoro, per generare file PDF da sana pianta e di fare l'editing all'interno un dominio molto limitato (le annotazioni, i metadati dei documenti). La parte più difficile è che noi facciamo del nostro meglio per nascondere la complessità del PDF da parte dei nostri clienti. In generale, i nostri clienti vogliono ci per capire le specifiche invece di loro e fare il resto facile - ma compiti come questo (redazione è un altro), sono davvero difficili da fare senza capire la profondità del PDF specifica. Se si inizia a entrare nel mondo delle biblioteche della manipolazione PDF, si dovrebbe iniziare con la lettura le specifiche, in particolare il capitolo 8 (Grafica) e il capitolo 9 (testo), e si otterrà una migliore comprensione di ciò che si sta andando ad avere a che fare con la libreria.

Altri suggerimenti

xpdf è una libreria PDF di sola lettura. Non può scrivere PDF e tanto meno modificare i contenuti.

Hai guardato iText / ISHarp per modificare i file PDF?

Anche se non è una biblioteca in senso tradizionale, PDFedit ha capacità di editing script. Ma richiede QT. PodoFo probabilmente si adatta meglio alle vostre esigenze. C'è anche PdfHummus .

Ma attenzione che se vi aspettate di modificare il testo da PDF generato da strumenti di fuori del vostro controllo, probabilmente affrontare alcuni problemi. Il problema è - e @plinth accennato -. Ci sono molti modi per testo generato che sembrano simili, ma che contestualmente sono molto diversi l'uno dall'altro

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top