Nous mettons à niveau/convertissons plusieurs anciennes bases de données Access en MS-SQL. La plupart de ces bases de données possèdent des champs Objet OLE qui stockent des fichiers PDF. Je cherche un moyen d'extraire ces fichiers et de les stocker dans notre base de données SQL. J'ai vu des questions similaires qui répondent à la façon dont vous pouvez le faire avec des fichiers image (jpg, bmp, gif, etc) mais je n'ai pas trouvé un moyen qui fonctionne avec PDF.Extrait OLE Object (pdf) d'Access DB
Répondre
J'ai finalement obtenu du code de travail pour ce que je veux qu'il fasse. L'astuce consiste à déterminer quelle partie est l'en-tête OLE et à le supprimer. Voici ce qui fonctionne pour moi (basé sur le code trouvé 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;
}
Notez que cela ne fonctionne que pour les fichiers PDF.
OLEtoDisk
« Cette version enregistre le contenu entier d'une table contenant des objets OLE sur le disque. Ne nécessite pas l'application originale qui a servi le serveur OLE pour insérer l'objet. Supporte tous les documents MS Office, PDF, Toutes les images insérées par MS Photo Editor, MS Paint et Paint Shop Pro.Supporte également l'extraction de la classe PACKAGE, y compris le nom de fichier original.Contient la fonction pour produire un inventaire complet du champ OLE, y compris le chemin et les noms de fichier LINKED. contenu réel du champ "
J'ai vu (et essayé) ça. Cela fonctionne pour retirer les fichiers PDF mais j'essaie de trouver quelque chose que je peux intégrer dans mon propre code (C#). Certains de ces DB d'accès ont 4+ colonnes qui stockent des fichiers PDF et, finalement, je veux juste copier le fichier dans une table sur notre serveur SQL avec toutes les autres données. – Nate
Ah, vous n'avez jamais dit que vous cherchiez du code C#. –
- 1. Pourquoi Rose :: DB :: Object sort_by RAND() fait ce que j'attends?
- 2. Extrait l'image d'un PDF en utilisant .Net C#
- 3. MathType en C# (OLE)
- 4. stocker le fichier PDF dans DB comme octet
- 5. Comment utiliser OLE-DB pour accéder à un fichier dbf dans une application ATL COM/C++?
- 6. Valeur de retour SSIS de la procédure stockée dans une commande OLE DB
- 7. Alors, quel était le but de OLE DB si vous écriviez encore SQL?
- 8. Comment les chaînes de connexion OLE DB sont-elles mappées aux DLL?
- 9. Connexion d'une base de données omniprésente à l'aide de OLE DB
- 10. Comment accéder à différentes bases de données en utilisant OLE DB avec une installation minimale
- 11. Pourquoi les gens utilisent <object classid = ""> pour afficher PDF au lieu de src = "1.pdf"
- 12. jQuery Ajax - De retour [object Object]
- 13. Création d'un fichier image (à l'aide de C# ou VB.NET) à partir de la colonne MS Access OLE Object
- 14. extrait xpath
- 15. Puis-je créer une table (si elle n'existe pas) à partir des métadonnées Rose :: DB :: Object?
- 16. Comment modifier dynamiquement le "src" ou "données" pour un fichier PDF Object/Embed en utilisant JavaScript?
- 17. OLE Compound Documents en Python
- 18. Drag & Drop OLE asynchrone possible?
- 19. Cauchemar STA, MTA et OLE
- 20. assertArrayEquals (Object [] o1, Object [] o2) ne peuvent pas être trouvés
- 21. multiples DB:
- 22. Xml Serialize Object (HttpBrowserCapabilities)
- 23. CSS + .MOV Object
- 24. loop jquery object
- 25. Extrait de la chaîne
- 26. Com Object Exception
- 27. Jquery-Object attendu
- 28. Recherche puis extrait
- 29. Extrait float/valeur double
- 30. datagridview + Object liaison personnalisée
Comme il s'agit d'une réponse plus ancienne, ce code a fonctionné pour moi, je devais seulement mettre à jour le "% PDF-1.3" à "% PDF-1.7" et il était capable de supprimer correctement l'en-tête. Assez curieusement, cela a fonctionné aussi juste en cherchant "% PDF" ... – Arthurdent510