Stiamo aggiornando/convertendo diversi database di Access precedenti in MS-SQL. Molti di questi database contengono campi OLE Object che archiviano i file PDF. Sto cercando un modo per estrarre questi file e memorizzarli nel nostro database SQL. Ho visto domande simili che rispondono a come potresti farlo con i file di immagine (jpg, bmp, gif, ecc.) Ma non ho trovato un modo che funzioni con il PDF.Estrai oggetto OLE (pdf) da Access DB
risposta
Ho finalmente ottenuto del codice funzionante per quello che voglio che faccia. Il trucco è determinare quale parte è l'intestazione OLE e rimuoverla. Qui è ciò che sta lavorando per me (basato sul codice trovato here)
public static byte[] StripOleHeader(byte[] fileData)
{
const string START_BLOCK = "%PDF-1.3";
int startPos = -1;
Encoding u8 = Encoding.UTF7;
string strEncoding = u8.GetString(fileData);
if (strEncoding.IndexOf(START_BLOCK) != -1)
{
startPos = strEncoding.IndexOf(START_BLOCK);
}
if (startPos == -1)
{
throw new Exception("Could not find PDF Header");
}
byte[] retByte = new byte[fileData.LongLength - startPos];
Array.Copy(fileData, startPos, retByte, 0, fileData.LongLength - startPos);
return retByte;
}
Si noti che questo funziona solo per i file PDF.
OLEtoDisk
"Questa versione consente di risparmiare l'intero contenuto di una tabella contenente oggetti OLE su disco. Non richiede l'applicazione originale che serviva come il server OLE per inserire l'oggetto. Supporta tutti i MS Office documenti, PDF, Tutte le immagini inserite da MS Photo Editor, MS Paint e Paint Shop Pro. Supporta anche l'estrazione della classe PACKAGE incluso il nome file originale.Contiene la funzione per produrre un inventario completo del campo OLE incluso percorso e nomi LINKED. Utilizza API di archiviazione strutturata per leggere il contenuto effettivo del campo "
Ho visto (e provato) quello. Funziona per estrarre i PDF ma sto cercando di trovare qualcosa che possa integrare nel mio codice (C#). Alcuni di questi Access DB hanno 4+ colonne che memorizzano i file PDF e, in definitiva, voglio solo copiare il file in una tabella sul nostro server SQL con tutti gli altri dati. – Nate
Ah, non hai mai detto che cercavi il codice C#. –
- 1. Estrai tutto da PDF
- 2. Estrai binari da db a file JSON
- 3. Utilizzare OLE DB per leggere AccessFile da Stream per DataSet
- 4. Estrai testo da file pdf e word
- 5. Estrai immagine da PDF usando .Net C#
- 6. Estrai/Identifica tabelle da PDF python
- 7. Estrai nomi campo modulo PDF da un modulo PDF
- 8. cellulari valori di Excel vengono troncati da OLE DB provider
- 9. ADO.NET Entity Framework con OLE DB Accesso origine dati
- 10. Estrai testo e immagini da PDF usando iText5
- 11. C# Estrai il testo da PDF usando PdfSharp
- 12. Come ottenere un elenco dei provider OLE DB installati?
- 13. aggiornare le righe in SSIS OLE DB Destinazione
- 14. Access DB aggiorna una tabella con valore da un'altra
- 15. lettura file excel utilizzando provider OLE DB dati
- 16. Estrai oggetto dall'immagine in Matlab
- 17. ADOX Errori generati dall'operazione OLE DB a più fasi
- 18. Estrai oggetto (* .o) file da una libreria statica di iPhone
- 19. Errori generati dall'operazione OLE DB a più fasi. Controllare ciascun valore di stato OLE DB, se disponibile. Nessun lavoro è stato fatto
- 20. Estrai fuso orario da stringa
- 21. Estrai rettangolo da Contour OpenCV
- 22. Estrai immagini usando iTextSharp
- 23. Come eseguire il ciclo di tutte le tabelle in un MS Access DB
- 24. Istruzione SQL contro Access 2010 DB non funziona con ODBC
- 25. Access request.session da backend.get_user
- 26. Ottenere il titolo dell'applicazione da un oggetto applicazione OLE di Word
- 27. Rapporti Jasper Connessione iReport al DB MS Access
- 28. EntityFramework funziona con un db (.accdb) Access 2007?
- 29. Numero errato di argomenti con SQL ISNULL() sul DB Access
- 30. Impossibile recuperare una riga dal provider OLE DB "BULK" per server collegato "(null)"
Poiché questa è una risposta più vecchia, questo codice ha funzionato per me, ho solo dovuto aggiornare "% PDF-1.3" a "% PDF-1.7" ed è stato in grado di rimuovere correttamente l'intestazione. Stranamente, ha funzionato anche alla ricerca di "% PDF" ... – Arthurdent510