Files
core/Test/Applications/TestDocsWithChart/TestDocsWithChart/Program.cs
Alexander Trofimov 55e5f973b0 Fix UTF-8 BOM position
2026-05-19 09:37:04 +03:00

870 lines
41 KiB
C#

/*
* Copyright (C) Ascensio System SIA, 2009-2026
*
* This program is a free software product. You can redistribute it and/or
* modify it under the terms of the GNU Affero General Public License (AGPL)
* version 3 as published by the Free Software Foundation, together with the
* additional terms provided in the LICENSE file.
*
* This program is distributed WITHOUT ANY WARRANTY; without even the implied
* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. For
* details, see the GNU AGPL at: https://www.gnu.org/licenses/agpl-3.0.html
*
* You can contact Ascensio System SIA by email at info@onlyoffice.com
* or by postal mail at 20A-6 Ernesta Birznieka-Upisha Street, Riga,
* LV-1050, Latvia, European Union.
*
* The interactive user interfaces in modified versions of the Program
* are required to display Appropriate Legal Notices in accordance with
* Section 5 of the GNU AGPL version 3.
*
* No trademark rights are granted under this License.
*
* All non-code elements of the Product, including illustrations,
* icon sets, and technical writing content, are licensed under the
* Creative Commons Attribution-ShareAlike 4.0 International License:
* https://creativecommons.org/licenses/by-sa/4.0/legalcode
*
* This license applies only to such non-code elements and does not
* modify or replace the licensing terms applicable to the Program's
* source code, which remains licensed under the GNU Affero General
* Public License v3.
*
* SPDX-License-Identifier: AGPL-3.0-only
*/
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.IO.Compression;
using System.IO;
using System.Diagnostics;
namespace TestDocsWithChart
{
class Program
{
static void Main(string[] args)
{
//getFilesConditional();
//getFilesPivot();
//getFilesAlternateContent();
//getFilesOverride();
//getFiles();
//getFiles2();
//getFiles3();
//getSize();
//convertFiles();
//getLegacyDrawingHF();
//getShapeType();
//getCustomXml();
//getKeywords();
//getMath();
//getFullCalcOnLoad();
//getGradientPos();
//getCAFiles();
//getSlicerFiles();
//getNamedSheetView();
getExternalMasters();
}
static void getFilesPivot()
{
string sDirInput = @"\\192.168.3.208\allusers\Files\XLSX";
string sDirOutput = @"D:\Files\Pivot";
String[] allfiles = System.IO.Directory.GetFiles(sDirInput, "*.*", System.IO.SearchOption.AllDirectories);
for (var i = 0; i < allfiles.Length; ++i)
{
string file = allfiles[i];
try
{
ZipArchive zip = ZipFile.OpenRead(file);
foreach (ZipArchiveEntry entry in zip.Entries)
{
if (-1 != entry.FullName.IndexOf("pivotTable", StringComparison.OrdinalIgnoreCase))
{
System.IO.File.Copy(file, Path.Combine(sDirOutput, Path.GetFileName(file)), true);
break;
}
}
}
catch { }
}
}
static void getCustomXml()
{
string sDirInput = @"\\192.168.5.3\files\Files\docx";
string sDirOutput = @"D:\Files\CustomXml";
String[] allfiles = System.IO.Directory.GetFiles(sDirInput, "*.*", System.IO.SearchOption.AllDirectories);
for (var i = 0; i < allfiles.Length; ++i)
{
string file = allfiles[i];
try
{
ZipArchive zip = ZipFile.OpenRead(file);
foreach (ZipArchiveEntry entry in zip.Entries)
{
if (-1 != entry.FullName.IndexOf("CustomXml", StringComparison.OrdinalIgnoreCase))
{
System.IO.File.Copy(file, Path.Combine(sDirOutput, Path.GetFileName(file)), true);
break;
}
}
}
catch { }
}
}
static void getKeywords()
{
string sDirInput = @"\\192.168.5.3\files\Files\docx";
string sDirOutput = @"D:\Files\keywords";
string sFindText = "lastPrinted";
string sFindText2 = "lastPrinted";
String[] allfiles = System.IO.Directory.GetFiles(sDirInput, "*.*", System.IO.SearchOption.AllDirectories);
StringBuilder sb = new StringBuilder();
for (var i = 0; i < allfiles.Length; ++i)
{
string file = allfiles[i];
try
{
ZipArchive zip = ZipFile.OpenRead(file);
foreach (ZipArchiveEntry entry in zip.Entries)
{
if (entry.FullName.EndsWith("core.xml", StringComparison.OrdinalIgnoreCase))
{
using (StreamReader reader = new StreamReader(entry.Open(), Encoding.UTF8))
{
string sXml = reader.ReadToEnd();
int index1 = sXml.IndexOf(sFindText);
int index2 = sXml.IndexOf(sFindText2);
if (-1 != index1 && -1 != index2)
{
String sKeywords = sXml.Substring(index1 + sFindText.Length, index2 - index1 - sFindText.Length);
if (sKeywords.Length > 0)
{
sb.AppendLine(sKeywords);
System.IO.File.Copy(file, Path.Combine(sDirOutput, Path.GetFileName(file)), true);
}
}
}
break;
}
}
}
catch { }
}
}
static void getMath()
{
string sDirInput = @"\\192.168.5.3\files\Files\docx";
string sDirOutput = @"D:\Files\Math";
string sFindText = "m:phant";
String[] allfiles = System.IO.Directory.GetFiles(sDirInput, "*.*", System.IO.SearchOption.AllDirectories);
for (var i = 0; i < allfiles.Length; ++i)
{
string file = allfiles[i];
try
{
ZipArchive zip = ZipFile.OpenRead(file);
foreach (ZipArchiveEntry entry in zip.Entries)
{
if (entry.FullName.EndsWith("document.xml", StringComparison.OrdinalIgnoreCase))
{
using (StreamReader reader = new StreamReader(entry.Open(), Encoding.UTF8))
{
string sXml = reader.ReadToEnd();
if (-1 != sXml.IndexOf(sFindText))
{
//System.IO.File.Copy(file, Path.Combine(sDirOutput, Path.GetFileName(file)), true);
}
}
break;
}
}
}
catch { }
}
}
static void getMove()
{
string sDirInput = @"\\192.168.5.3\files\Files\docx";
string sDirOutput = @"D:\Files\Move";
string sFindText = "w:moveFrom";
String[] allfiles = System.IO.Directory.GetFiles(sDirInput, "*.*", System.IO.SearchOption.AllDirectories);
for (var i = 0; i < allfiles.Length; ++i)
{
string file = allfiles[i];
try
{
ZipArchive zip = ZipFile.OpenRead(file);
foreach (ZipArchiveEntry entry in zip.Entries)
{
if (entry.FullName.EndsWith("document.xml", StringComparison.OrdinalIgnoreCase))
{
using (StreamReader reader = new StreamReader(entry.Open(), Encoding.UTF8))
{
string sXml = reader.ReadToEnd();
if (-1 != sXml.IndexOf(sFindText))
{
System.IO.File.Copy(file, Path.Combine(sDirOutput, Path.GetFileName(file)), true);
}
}
break;
}
}
}
catch { }
}
}
static void getExternal()
{
string sDirInput = @"\\192.168.5.3\files\Files\xlsx";
string sDirOutput = @"D:\Files\ExternalReferences";
string sFindText = "externalBook";
String[] allfiles = System.IO.Directory.GetFiles(sDirInput, "*.*", System.IO.SearchOption.AllDirectories);
for (var i = 0; i < allfiles.Length; ++i)
{
string file = allfiles[i];
try
{
ZipArchive zip = ZipFile.OpenRead(file);
foreach (ZipArchiveEntry entry in zip.Entries)
{
if (entry.FullName.Contains("externalLink") && entry.FullName.EndsWith(".xml"))
{
using (StreamReader reader = new StreamReader(entry.Open(), Encoding.UTF8))
{
string sXml = reader.ReadToEnd();
if (-1 == sXml.IndexOf(sFindText))
{
System.IO.File.Copy(file, Path.Combine(sDirOutput, Path.GetFileName(file)), true);
}
}
break;
}
}
}
catch { }
}
}
static void getFullCalcOnLoad()
{
string sDirInput = @"\\192.168.5.3\files\Files\xlsx";
string sDirOutput = @"D:\Files\fullCalcOnLoad";
string sFindText = "fullCalcOnLoad";
String[] allfiles = System.IO.Directory.GetFiles(sDirInput, "*.*", System.IO.SearchOption.AllDirectories);
for (var i = 0; i < allfiles.Length; ++i)
{
string file = allfiles[i];
try
{
ZipArchive zip = ZipFile.OpenRead(file);
foreach (ZipArchiveEntry entry in zip.Entries)
{
if (entry.FullName.EndsWith("workbook.xml", StringComparison.OrdinalIgnoreCase))
{
using (StreamReader reader = new StreamReader(entry.Open(), Encoding.UTF8))
{
string sXml = reader.ReadToEnd();
if (-1 != sXml.IndexOf(sFindText))
{
System.IO.File.Copy(file, Path.Combine(sDirOutput, Path.GetFileName(file)), true);
}
}
break;
}
}
}
catch { }
}
}
static void getGradientPos()
{
string sDirInput = @"\\192.168.5.3\files\Files\xlsx";
string sDirOutput = @"D:\Files\GradientPos";
string sFindText = "stop position=\"";
string sFindNoText1 = "0\"";
string sFindNoText2 = "1\"";
string sFindNoText3 = "0.5\"";
String[] allfiles = System.IO.Directory.GetFiles(sDirInput, "*.*", System.IO.SearchOption.AllDirectories);
for (var i = 0; i < allfiles.Length; ++i)
{
string file = allfiles[i];
try
{
ZipArchive zip = ZipFile.OpenRead(file);
foreach (ZipArchiveEntry entry in zip.Entries)
{
if (entry.FullName.EndsWith("styles.xml", StringComparison.OrdinalIgnoreCase))
{
using (StreamReader reader = new StreamReader(entry.Open(), Encoding.UTF8))
{
string sXml = reader.ReadToEnd();
int indexStart = -1;
while(-1 != (indexStart = sXml.IndexOf(sFindText, indexStart + 1)))
{
string substring1 = sXml.Substring(indexStart + sFindText.Length, sFindNoText1.Length);
string substring2 = sXml.Substring(indexStart + sFindText.Length, sFindNoText2.Length);
string substring3 = sXml.Substring(indexStart + sFindText.Length, sFindNoText3.Length);
if (sFindNoText1 != substring1 && sFindNoText2 != substring2)
{
if (sFindNoText3 != substring3)
{
System.IO.File.Copy(file, Path.Combine(sDirOutput, Path.GetFileName(file)), true);
break;
}
}
}
}
break;
}
}
}
catch { }
}
}
static void getCAFiles()
{
string sDirInput = @"\\192.168.5.3\files\Files\xlsx";
string sDirOutput = @"D:\Files\ca";
string sFindText = " ca=\"1\"";
int nThreshold = 100;
String[] allfiles = System.IO.Directory.GetFiles(sDirInput, "*.*", System.IO.SearchOption.AllDirectories);
List<Tuple<int, string>> files = new List<Tuple<int,string>>();
for (var i = 0; i < allfiles.Length; ++i)
{
string file = allfiles[i];
try
{
ZipArchive zip = ZipFile.OpenRead(file);
int nCounter = 0;
foreach (ZipArchiveEntry entry in zip.Entries)
{
if (entry.FullName.StartsWith("xl/worksheets/sheet", StringComparison.OrdinalIgnoreCase) && entry.FullName.EndsWith(".xml", StringComparison.OrdinalIgnoreCase))
{
using (StreamReader reader = new StreamReader(entry.Open(), Encoding.UTF8)){
string sXml = reader.ReadToEnd();
int indexStart = -1;
while (-1 != (indexStart = sXml.IndexOf(sFindText, indexStart + 1)))
{
nCounter++;
}
}
}
}
if (nCounter > nThreshold)
{
files.Add(new Tuple<int, string>(nCounter, file));
//if (files.Count >= 3)
//{
// break;
//}
}
}
catch (Exception e){ }
}
files.Sort();
for (int i = files.Count - 1; i >= 0; --i)
{
Tuple<int, string> tuple = files[i];
System.IO.File.Copy(tuple.Item2, Path.Combine(sDirOutput, tuple.Item1.ToString("D6") + "_" + Path.GetFileName(tuple.Item2)), true);
}
}
static void getSlicerFiles()
{
string sDirInput = @"\\192.168.5.3\files\Files\xlsx";
string sDirOutput1 = @"D:\Files\Slicers\table";
string sFindText1 = "tableSlicerCache";
string sDirOutput2 = @"D:\Files\Slicers\olap";
string sFindText2 = "olap";
string sDirOutput3 = @"D:\Files\Slicers\pivot";
String[] allfiles = System.IO.Directory.GetFiles(sDirInput, "*.*", System.IO.SearchOption.AllDirectories);
for (var i = 0; i < allfiles.Length; ++i)
{
string file = allfiles[i];
try
{
ZipArchive zip = ZipFile.OpenRead(file);
foreach (ZipArchiveEntry entry in zip.Entries)
{
if (entry.FullName.Contains("slicerCache") && entry.FullName.EndsWith(".xml"))
{
using (StreamReader reader = new StreamReader(entry.Open(), Encoding.UTF8))
{
string sXml = reader.ReadToEnd();
if (-1 != sXml.IndexOf(sFindText1))
{
System.IO.File.Copy(file, Path.Combine(sDirOutput1, Path.GetFileName(file)), true);
}
else if (-1 != sXml.IndexOf(sFindText2))
{
System.IO.File.Copy(file, Path.Combine(sDirOutput2, Path.GetFileName(file)), true);
}
else
{
System.IO.File.Copy(file, Path.Combine(sDirOutput3, Path.GetFileName(file)), true);
}
}
}
}
}
catch { }
}
}
static void getNamedSheetView()
{
string sDirInput = @"\\192.168.5.3\files\Files\xlsx";
string sDirOutput = @"D:\Files\NamedSheetView";
String[] allfiles = System.IO.Directory.GetFiles(sDirInput, "*.*", System.IO.SearchOption.AllDirectories);
for (var i = 0; i < allfiles.Length; ++i)
{
string file = allfiles[i];
try
{
ZipArchive zip = ZipFile.OpenRead(file);
foreach (ZipArchiveEntry entry in zip.Entries)
{
if (entry.FullName.StartsWith("namedSheetView"))
{
System.IO.File.Copy(file, Path.Combine(sDirOutput, Path.GetFileName(file)), true);
break;
}
}
}
catch { }
}
}
static void getExternalMasters()
{
string sDirInput = @"D:\Files\xlsx-testers";
string sDirOutput = @"D:\Files\external-masters";
String[] allfiles = System.IO.Directory.GetFiles(sDirInput, "*.*", System.IO.SearchOption.AllDirectories);
for (var i = 0; i < allfiles.Length; ++i)
{
string file = allfiles[i];
try
{
ZipArchive zip = ZipFile.OpenRead(file);
foreach (ZipArchiveEntry entry in zip.Entries)
{
if (entry.FullName.Contains("externalLink"))
{
System.IO.File.Copy(file, Path.Combine(sDirOutput, Path.GetFileName(file)), true);
break;
}
}
}
catch { }
}
}
static void getFilesConditional()
{
//string sFindText = "conditionalFormatting";
//string sDirInput = @"\\192.168.3.208\allusers\Files\XLSX";
//string sDirOutput = @"D:\Files\Conditional";
string sFindText = "type=\"expression\"";
string sDirInput = @"D:\Files\Conditional";
string sDirOutput = @"D:\Files\ConditionalFormulaExpression";
String[] allfiles = System.IO.Directory.GetFiles(sDirInput, "*.*", System.IO.SearchOption.AllDirectories);
for (var i = 0; i < allfiles.Length; ++i)
{
string file = allfiles[i];
try
{
ZipArchive zip = ZipFile.OpenRead(file);
string sOutputPath = Path.Combine(sDirOutput, Path.GetFileName(file));
foreach (ZipArchiveEntry entry in zip.Entries)
{
if (entry.FullName.EndsWith(".xml", StringComparison.OrdinalIgnoreCase))
{
using (StreamReader reader = new StreamReader(entry.Open(), Encoding.UTF8))
{
string sXml = reader.ReadToEnd();
if (-1 != sXml.IndexOf(sFindText))
{
System.IO.File.Copy(file, sOutputPath, true);
}
}
}
}
}
catch (Exception e)
{
}
}
}
static void getFilesAlternateContent()
{
string sAlternateContent = ":Choice ";
string sDirInput = @"\\192.168.3.208\allusers\Files\PPTX";
string sDirOutput = @"F:\Files\AlternateContent\pptx";
String[] allfiles = System.IO.Directory.GetFiles(sDirInput, "*.*", System.IO.SearchOption.AllDirectories);
for (var i = 0; i < allfiles.Length; ++i)
{
string file = allfiles[i];
try
{
ZipArchive zip = ZipFile.OpenRead(file);
string sOutputPath = Path.Combine(sDirOutput, Path.GetFileName(file));
bool bCopy = false;
string sRes = "";
foreach (ZipArchiveEntry entry in zip.Entries)
{
if (entry.FullName.EndsWith(".xml", StringComparison.OrdinalIgnoreCase))
{
using (StreamReader reader = new StreamReader(entry.Open(), Encoding.UTF8))
{
string sXml = reader.ReadToEnd();
int nIndex = -1;
while (-1 != (nIndex = sXml.IndexOf(sAlternateContent, nIndex + 1)))
{
if (!bCopy)
{
bCopy = true;
sRes += sOutputPath;
System.IO.File.Copy(file, sOutputPath, true);
}
sRes += ";";
sRes += entry.ToString();
sRes += "-";
sRes += sXml.Substring(nIndex, sXml.IndexOf(">", nIndex + 1) - nIndex);
}
}
}
}
Debug.WriteLineIf(bCopy, sRes);
}
catch(Exception e) {
}
}
}
static void getFilesOverride()
{
string sAlternateContent = "lvlOverride";
string sDirInput = @"\\192.168.5.3\files\Files\docx";
string sDirOutput = @"D:\Files\override";
String[] allfiles = System.IO.Directory.GetFiles(sDirInput, "*.*", System.IO.SearchOption.AllDirectories);
SortedList<long, string> listUncompressed = new SortedList<long, string>();
for (var i = 0; i < allfiles.Length; ++i)
{
string file = allfiles[i];
try
{
ZipArchive zip = ZipFile.OpenRead(file);
string sOutputPath = Path.Combine(sDirOutput, Path.GetFileName(file));
foreach (ZipArchiveEntry entry in zip.Entries)
{
if (entry.FullName.EndsWith("numbering.xml", StringComparison.OrdinalIgnoreCase))
{
using (StreamReader reader = new StreamReader(entry.Open(), Encoding.UTF8))
{
string sXml = reader.ReadToEnd();
int nIndex = -1;
if (-1 != (nIndex = sXml.IndexOf(sAlternateContent, nIndex + 1)))
{
listUncompressed.Add(entry.Length, file);
//System.IO.File.Copy(file, sOutputPath, true);
}
}
break;
}
}
}
catch (Exception e)
{
}
}
StringBuilder sb = new StringBuilder();
sb.Append("size(bytes)\tName\r\n");
foreach (KeyValuePair<long, string> kvp in listUncompressed.Reverse())
{
sb.AppendFormat("{0}\t{1}\r\n", kvp.Key, kvp.Value);
}
}
static void getFiles()
{
string sDirInput = @"\\192.168.3.208\allusers\Files\PPTX";
string sDirOutput = @"F:\Files\embedchart";
String[] allfiles = System.IO.Directory.GetFiles(sDirInput, "*.*", System.IO.SearchOption.AllDirectories);
for (var i = 0; i < allfiles.Length; ++i)
{
string file = allfiles[i];
try
{
ZipArchive zip = ZipFile.OpenRead(file);
foreach (ZipArchiveEntry entry in zip.Entries)
{
if (entry.FullName.EndsWith(".xlsx", StringComparison.OrdinalIgnoreCase))
{
System.IO.File.Copy(file, Path.Combine(sDirOutput, Path.GetFileName(file)), true);
}
}
}
catch { }
}
}
static void getFiles2()
{
string sDirInput = @"\\192.168.5.3\files\Files\docx";
string sDirOutput = @"D:\Files\embed";
String[] allfiles = System.IO.Directory.GetFiles(sDirInput, "*.*", System.IO.SearchOption.AllDirectories);
for (var i = 0; i < allfiles.Length; ++i)
{
string file = allfiles[i];
try
{
ZipArchive zip = ZipFile.OpenRead(file);
foreach (ZipArchiveEntry entry in zip.Entries)
{
if (!entry.FullName.EndsWith("/", StringComparison.OrdinalIgnoreCase) &&
!entry.FullName.EndsWith(".xml", StringComparison.OrdinalIgnoreCase) &&
!entry.FullName.EndsWith(".rels", StringComparison.OrdinalIgnoreCase) &&
!entry.FullName.EndsWith(".docx", StringComparison.OrdinalIgnoreCase) &&
!entry.FullName.EndsWith(".xlsx", StringComparison.OrdinalIgnoreCase) &&
!entry.FullName.EndsWith(".pptx", StringComparison.OrdinalIgnoreCase) &&
!entry.FullName.EndsWith(".doc", StringComparison.OrdinalIgnoreCase) &&
!entry.FullName.EndsWith(".xls", StringComparison.OrdinalIgnoreCase) &&
!entry.FullName.EndsWith(".ppt", StringComparison.OrdinalIgnoreCase) &&
!entry.FullName.EndsWith(".bmp", StringComparison.OrdinalIgnoreCase) &&
!entry.FullName.EndsWith(".jpg", StringComparison.OrdinalIgnoreCase) &&
!entry.FullName.EndsWith(".jpeg", StringComparison.OrdinalIgnoreCase) &&
!entry.FullName.EndsWith(".png", StringComparison.OrdinalIgnoreCase) &&
!entry.FullName.EndsWith(".gif", StringComparison.OrdinalIgnoreCase) &&
!entry.FullName.EndsWith(".tif", StringComparison.OrdinalIgnoreCase) &&
!entry.FullName.EndsWith(".tiff", StringComparison.OrdinalIgnoreCase) &&
!entry.FullName.EndsWith(".wdp", StringComparison.OrdinalIgnoreCase) &&
!entry.FullName.EndsWith(".emf", StringComparison.OrdinalIgnoreCase) &&
!entry.FullName.EndsWith(".emz", StringComparison.OrdinalIgnoreCase) &&
!entry.FullName.EndsWith(".wmf", StringComparison.OrdinalIgnoreCase) &&
!entry.FullName.EndsWith(".wav", StringComparison.OrdinalIgnoreCase) &&
!entry.FullName.EndsWith(".wmv", StringComparison.OrdinalIgnoreCase) &&
!entry.FullName.EndsWith(".mp3", StringComparison.OrdinalIgnoreCase) &&
!entry.FullName.EndsWith(".mp4", StringComparison.OrdinalIgnoreCase) &&
!entry.FullName.EndsWith(".mov", StringComparison.OrdinalIgnoreCase) &&
(!entry.FullName.EndsWith(".bin", StringComparison.OrdinalIgnoreCase) || (!entry.FullName.Contains("embeding") && !entry.FullName.Contains("oleObject") && !entry.FullName.Contains("printerSettings"))) &&
!entry.FullName.EndsWith(".sigs", StringComparison.OrdinalIgnoreCase) &&
!entry.FullName.EndsWith(".sldx", StringComparison.OrdinalIgnoreCase) &&
!entry.FullName.EndsWith(".dat", StringComparison.OrdinalIgnoreCase) &&
!entry.FullName.EndsWith(".vml", StringComparison.OrdinalIgnoreCase) &&
!entry.FullName.EndsWith(".fntdata", StringComparison.OrdinalIgnoreCase) &&
!entry.FullName.EndsWith(".odttf", StringComparison.OrdinalIgnoreCase))
{
System.IO.File.Copy(file, Path.Combine(sDirOutput, Path.GetFileName(file)), true);
break;
}
}
}
catch { }
}
}
static void getFiles3()
{
string sDirInput = @"\\192.168.5.3\files\Files\xlsx";
string sDirOutput = @"D:\Files\height";
string sHeight = " ht=\"";
String[] allfiles = System.IO.Directory.GetFiles(sDirInput, "*.*", System.IO.SearchOption.AllDirectories);
for (var i = 0; i < allfiles.Length; ++i)
{
string file = allfiles[i];
try
{
bool bCopy = false;
ZipArchive zip = ZipFile.OpenRead(file);
foreach (ZipArchiveEntry entry in zip.Entries)
{
if (entry.FullName.Contains("sheet"))
{
using (StreamReader reader = new StreamReader(entry.Open(), Encoding.UTF8))
{
string sXml = reader.ReadToEnd();
int nIndex = -1;
while (-1 != (nIndex = sXml.IndexOf(sHeight, nIndex + 1)))
{
int endIndex = sXml.IndexOf("\"", nIndex + sHeight.Length + 1);
string height = sXml.Substring(nIndex + sHeight.Length, endIndex - (nIndex + sHeight.Length));
int dotIndex;
if (-1 != (dotIndex = height.IndexOf('.')) && height.Length - dotIndex > 3)
{
bCopy = true;
//System.IO.File.Copy(file, Path.Combine(sDirOutput, Path.GetFileName(file)), true);
break;
}
}
}
}
if (bCopy)
{
break;
}
}
}
catch { }
}
}
static void getSize()
{
string sDirInput = @"\\192.168.5.3\files\Files\pptx";
SortedList<long, string> listUncompressed = new SortedList<long,string>();
String[] allfiles = System.IO.Directory.GetFiles(sDirInput, "*.*", System.IO.SearchOption.AllDirectories);
for (var i = 0; i < allfiles.Length; ++i)
{
string file = allfiles[i];
try
{
long uncommressed = 0;
ZipArchive zip = ZipFile.OpenRead(file);
foreach (ZipArchiveEntry entry in zip.Entries)
{
if (entry.FullName.EndsWith(".xml"))
{
uncommressed += entry.Length;
}
}
listUncompressed.Add(uncommressed, file);
}
catch { }
}
StringBuilder sb = new StringBuilder();
sb.Append("uncommressed(bytes)\tfilesize(bytes)\tName\r\n");
foreach (KeyValuePair<long, string> kvp in listUncompressed.Reverse())
{
sb.AppendFormat("{0}\t{1}\t{2}\r\n", kvp.Key, new System.IO.FileInfo(kvp.Value).Length, kvp.Value);
}
}
static void convertFiles()
{
string sPattern = "*.docx";
int outputformat = 0x41;
string sDirInput = @"F:\Files\embedchart";
string sDirOutput = @"F:\Files\embedchartRes";
string sDirTemp = @"F:\Files\Temp";
if (Directory.Exists(sDirTemp))
Directory.Delete(sDirTemp, true);
string paramsXml = "<?xml version=\"1.0\" encoding=\"utf-8\"?><TaskQueueDataConvert xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\"><m_sKey>192_168_3_169_0067df00e034b38d42be2cd7b4927430_dae13aaba3b34344836364699c0e2e71_4592</m_sKey><m_sFileFrom>{0}</m_sFileFrom><m_sFileTo>{1}</m_sFileTo><m_nFormatTo>{2}</m_nFormatTo><m_nCsvTxtEncoding xsi:nil=\"true\" /><m_nCsvDelimiter xsi:nil=\"true\" /><m_bPaid xsi:nil=\"true\" /><m_bEmbeddedFonts xsi:nil=\"true\" /><m_bFromChanges>false</m_bFromChanges><m_sFontDir>F:\\Subversion\\trunk\\OfficeWeb\\Fonts\\native</m_sFontDir><m_sThemeDir>F:\\Subversion\\trunk\\OfficeWeb\\PowerPoint\\themes</m_sThemeDir><m_oTimestamp>2016-01-29T17:08:34.472Z</m_oTimestamp></TaskQueueDataConvert>";
String[] allfiles = System.IO.Directory.GetFiles(sDirInput, sPattern, System.IO.SearchOption.AllDirectories);
for (var i = 0; i < allfiles.Length; ++i)
{
Directory.CreateDirectory(sDirTemp);
string file = allfiles[i];
try
{
string paramsPath = Path.Combine(sDirTemp, "params.xml");
string sTempFile = Path.Combine(sDirTemp, "Editor.bin");
File.WriteAllText(paramsPath, string.Format(paramsXml, file, sTempFile, 0x2000));
Process process = new Process();
process.StartInfo.FileName = @"F:\Subversion\trunk\nodeJSProjects\FileConverter\Bin\x2t32.exe";
process.StartInfo.Arguments = paramsPath;
process.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
process.Start();
process.WaitForExit();
File.WriteAllText(paramsPath, string.Format(paramsXml, sTempFile, Path.Combine(sDirOutput, Path.GetFileName(file)), outputformat));
process = new Process();
process.StartInfo.FileName = @"F:\Subversion\trunk\nodeJSProjects\FileConverter\Bin\x2t32.exe";
process.StartInfo.Arguments = paramsPath;
process.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
process.Start();
process.WaitForExit();
}
catch
{
}
Directory.Delete(sDirTemp, true);
}
}
static void getLegacyDrawingHF()
{
string sAlternateContent = "<legacyDrawingHF ";
string sDirInput = @"\\192.168.5.3\files\Files\xlsx";
string sDirOutput = @"D:\Files\legacyDrawingHF";
String[] allfiles = System.IO.Directory.GetFiles(sDirInput, "*.*", System.IO.SearchOption.AllDirectories);
for (var i = 0; i < allfiles.Length; ++i)
{
string file = allfiles[i];
try
{
ZipArchive zip = ZipFile.OpenRead(file);
string sOutputPath = Path.Combine(sDirOutput, Path.GetFileName(file));
foreach (ZipArchiveEntry entry in zip.Entries)
{
if (entry.FullName.StartsWith("xl/worksheets/sheet", StringComparison.OrdinalIgnoreCase) && entry.FullName.EndsWith(".xml", StringComparison.OrdinalIgnoreCase))
{
using (StreamReader reader = new StreamReader(entry.Open(), Encoding.UTF8))
{
string sXml = reader.ReadToEnd();
if(-1 != sXml.IndexOf(sAlternateContent))
{
System.IO.File.Copy(file, sOutputPath, true);
break;
}
}
}
}
}
catch (Exception e)
{
}
}
}
static void getShapeType()
{
string sAlternateContent = "v:shapetype ";
string sAlternateContent2 = "<w:pict";
string sAlternateContent3 = "<w:object";
string sDirInput = @"\\192.168.5.3\files\Files\docx";
string sDirOutput = @"D:\Files\shapetype\docx";
String[] allfiles = System.IO.Directory.GetFiles(sDirInput, "*.*", System.IO.SearchOption.AllDirectories);
for (var i = 0; i < allfiles.Length; ++i)
{
string file = allfiles[i];
try
{
ZipArchive zip = ZipFile.OpenRead(file);
string sOutputPath = Path.Combine(sDirOutput, Path.GetFileName(file));
foreach (ZipArchiveEntry entry in zip.Entries)
{
if (entry.FullName.EndsWith(".xml", StringComparison.OrdinalIgnoreCase))
{
using (StreamReader reader = new StreamReader(entry.Open(), Encoding.UTF8))
{
string sXml = reader.ReadToEnd();
if (-1 != sXml.IndexOf(sAlternateContent) && -1 == sXml.IndexOf(sAlternateContent2) && -1 == sXml.IndexOf(sAlternateContent3))
{
System.IO.File.Copy(file, sOutputPath, true);
break;
}
}
}
}
}
catch (Exception e)
{
}
}
}
}
}