PDF Datei einlesen und wieder auf Festplatte schreiben
Verfasst: Di Sep 24, 2013 2:51 pm
Hallo, ich habe gerade folgendes versucht: Ich durchsuche ein Verzeichnis mithilfe von BOOST nach PDF-Dateien, packe dann den Dateiinhalt in einen Vector und möchte anschließend die Vector-Elemente wieder in Dateien schreiben.
Quellcode-Ausschnitt vom Einlesen:
Quellcode-Ausschnitt vom Schreiben:
Führe ich das ganze nun aus, scheint alles wie gewünscht zu funktionieren. Die jeweils neu geschriebene Datei ist sogar genauso groß wie das Original. Allerdings kann ich sie anschließend nicht öffnen (Fehlermeldung, dass Datei beschädigt ist). Mache ich irgendwo einen Fehler? Habe ich mir das alles zu einfach gedacht (ist ja PDF, also ein etwas komplizierteres Format)? Hat jemand vielleicht schon mal etwas ähnliches probiert?
Quellcode-Ausschnitt vom Einlesen:
Code: Alles auswählen
path p ("C:\\Files\\"); // p reads clearer than argv[1] in the following code
directory_iterator it(p), eod;
vector<vector<char>> data;
BOOST_FOREACH(path const &p, std::make_pair(it, eod))
{
if(is_regular_file(p))
{
string path = p.string();
uintmax_t buffer_length=file_size(p);
ifstream ein(path,ios::in|ios::binary);
vector<char> chars(buffer_length);
ein.read(static_cast<char*>(&chars[0]),buffer_length);
if(ein)
data.push_back(chars);
ein.close();
}
}
Code: Alles auswählen
for(unsigned int i=0; i<data.size();i++)
{
string path = p.string();
string filename = "file"+to_string(i);
filename+=".pdf";
string fullpath=path+filename;
ofstream aus(fullpath, ios::out|ios::binary);
int size=data[i].size();
vector<char> buffer(size);
aus.write(static_cast<char*>(&buffer[0]),size);
aus.close();
}