Erről nagyon egyszerűen meggyőződhetünk, csak csapjunk hozzá egy .zip kiterjesztést (valami.pptx -> valami.pptx.zip), és máris elénk tárul a dokumentum belső szerkezete. Akár ki is tömöríthetjük, módosíthatjuk, persze ügyelve arra, hogy az XML valid maradjon, visszacsomagolva és visszanevezve ugyanúgy megnyitható az adott office alkalmazásban.
Vagyis... nem egészen. Ha kicsomagolok egy állományt, szerkesztem, majd Copy - Paste vissza a zipbe, akkor működik. Kicsomagolva, módosítva, majd zippel becsomagolva nem. Hibásnak jelzi a dokumentumot betöltéskor. Elment pár órám a teljesen valid XML szemmel parseolásával. Gondoltam, leírom, hátha más nem fog belefutni.
- Nyizsa blogja
- A hozzászóláshoz be kell jelentkezni
Hozzászólások
Nálam simán működik 7-zippel és a Windows beépített tömörítőjével is. 7-zipnél ki lehet választani a tömörítő algoritmust, az Office csak a Deflate-tel tömörített archívumokat tudja megnyitni.
- A hozzászóláshoz be kell jelentkezni
Most ránéztem friss fejjel is, és hát pebkac esete forog fönn. :))
A kicsomagoláskor az egész cuccot egy könyvtárba teszi, én pedig ezt csomagoltam be. Ha csak a belsejét csomagolom, akkor nekem is működik mindkét módon. Köszönöm a plusz információt!
Debian - The "What?!" starts not!
http://nyizsa.blogspot.com
- A hozzászóláshoz be kell jelentkezni
Ha jól emlékszem, anno FAT12 fájlrendszert használtak a dokumentumfájlon belül, és abba raktak el mindent...
- A hozzászóláshoz be kell jelentkezni
Valami ilyesmi rémlik...
- A hozzászóláshoz be kell jelentkezni
Fájlrendszer partíción van, fájlon belül max. képfájlban tudnám elképzelni. Az OpenXML-es formátumú fájlok lényegében zip fájlok, nem csak a MS-félék, hanem az OpenDocuemt Formatot használók is (OpenOffice.org, LibreOffice formátumai). Csak módosítva van a kiterjesztésük.
Gondolom azért zip, mert mindig is nyílt specifikációjú formátum volt, és a PKWare által szabadalmaztatott deflate (LZ77+Huffman) algoritmusra 2010-ben lejárt a 20 éves szabadalmi oltalmi idő, így már nem licencköteles, ténylegesen is szabad formátum, szerzői jog továbbra is védi, de csak a pkzip implementációt, de újraimplementálva specifikáció alapján lehet, és meg is tették (7-zip, infozip, gzip, zlib, stb.). Minden kezeli, minden platformon, nem túl komplex, gondolom ezért esett erre a választás.
A FAT is hasonló okokból népszerű, igaz ott a specifikáció nem nyílt, de reverse engineeringgel megfejtették, és a szabadalom lejárt róla. Nem a dokumentumformátumoknál alkalmazzák, hanem az UEFI/EFI-ban, meg több eszközben. Nem csak FAT12, hanem az összes válfaja, FAT16, FAT32.
“A computer is like air conditioning – it becomes useless when you open Windows.” (Linus Torvalds)
- A hozzászóláshoz be kell jelentkezni
- A hozzászóláshoz be kell jelentkezni
Igen, emlékeim szerint valamelyik formátumuk valójában egy FAT-12 (vagy módosított FAT-12) image volt.
- A hozzászóláshoz be kell jelentkezni
igen a OLE2 formatum hasonlit nagyon a FAT-ra, de nem fat image, csak hasonlo a logikaja, szerkezete.
regi office (doc/xls/ppt) mellett sok egyeb MS cucc is ezt hasznalta, es van amit a mai napig ebbe raknak es ezt akar becsomagoljak a zip-alapu ujabb formatumukba...
# OLE
if d[0]==0xD0 and d[1]==0xCF and d[2]==0x11 and d[3]==0xE0 and d[4]==0xA1 and d[5]==0xB1:
if ext in ["doc","xls","ppt","pps","pot","dot","xlt"]: return ext,T_DOC # ms office
if ext in ["iam","idw","ipt","ipn","dft","par","asm","epf","psm","mxd","spp"]: return ext,T_CAD # Inventor, SolidEdge, EdgeCAM, ArcMAP, tecnomatix
if ext in ["dlx","uld"]: return ext,T_CAD # https://www.dial.de/en/dialux/ cib dlc eld ltl m3d uld.
if ext in ["pcbdoc","pcblib","schlib"]: return ext,T_CAD #.
if ext in ["mpj","mtw"]: return ext,T_DB # https://support.minitab.com/en-us/datasets/doe-data-sets/food-spoilage-…
if ext in ["cfg","db"]: return ext,T_DB # fixme???
if ext=="msg": return ext,T_OLEMSG
if ext=="suo": return ext,T_SRC # https://docs.microsoft.com/en-us/visualstudio/extensibility/internals/s…
return "ole",T_OLE # D0 CF 11 E0 - A1 B1 1A E1
def parse_docxml(d):
root=xml.etree.ElementTree.fromstring(d)
for child in root:
ct=child.attrib["ContentType"]
if ct.lower()=="application/vnd.openxmlformats-officedocument.oleobject": return T_OLEX
- A hozzászóláshoz be kell jelentkezni
Köszönöm, akkor lehet, hogy ezzel kevertem...
- A hozzászóláshoz be kell jelentkezni
Jó régóta használom így az Excel készítést, hogy az xmleket módosítom és szuperül működik. Két probléma esetén írja ezt az Excel, ha nem valid az xml, vagy a zip tartalmaz egy könyvtárat, és abban vannak az Excel fájlok. Még a böngésző felületén javascriptel összerakva is működik ezzel: https://github.com/Stuk/jszip
- A hozzászóláshoz be kell jelentkezni