bonus630

`Não sou Programador Profissional, faço por diversão. Tecnologia é meu hobbie.`


Categorias



qrcode Tutorial - Procurando texto automaticamente em arquivos CorelDraw (cdr)Visualize esta página no seu Smartphone com este QRcode


Se você não é "poweruser", utilize um antivírus n


CSS válido!


Geospeleo Estudos Espeleológicos


Corel na Veia


> > >

Procurando texto automaticamente em arquivos CorelDraw (cdr)

Autor: | Categoria: CorelDraw SDK


Ontem estava tranquilo em casa assistindo "The walking dead" quando um amigo meu me ligou pedindo uma ajudinha, eu tinha alguns arquivos de um trabalho realizado para ele a um tempo atrás, poucos arquivos, cerca de 150, não tenho prática e nem experiencia no corel mas faço alguns trabalhos as vezes. Bom então ele me relatou o problema, haviam dito para ele que uma coordenada de um dos arquivos estaria repetida com de outro arquivo, os arquivos são de mapas topográficos, ele só sabia o nome do arquivo que estava certo e com isso peguei a tal da coordenada.Mas eu estava com preguiça de procurar em todos os arquivos e queria terminar de ver o bendito episodio antes que não precisasse ver mais, foi então que decidi criar algo para procurar o texto para mim enquanto eu assistia minha serie.

Com o objetivo em mente abri meu "Visual Studio" e escrevi algumas linhas de código.

namespace br.corp.bonus630.FindText
{
    
    ///
    /// Interaction logic for UserControl1.xaml
    ///
    /// priva
    public partial class Docker : UserControl
    {
        private Corel.Interop.VGCore.Application app;
        private int index = 0;
        private FileInfo[] files;
        private string text = "";
        public Docker(Corel.Interop.VGCore.Application app)
        {
            InitializeComponent();
            this.app = app;
        }
        private void btn_process_Click(object sender, RoutedEventArgs e)
        {
            getFiles();
            findText();
        }
        private void getFiles()
        {
            this.text = "MA-03";
            DirectoryInfo dir = new DirectoryInfo("C:\\Users\\Reginaldo\\Desktop\\testes");
            files = dir.GetFiles();
        }
      
        private void findText()
        {
            Debug.WriteLine("Open");
            if (files[index].Extension == ".cdr")
            {
                Corel.Interop.VGCore.Document doc = this.app.OpenDocument(files[index].FullName);
                Corel.Interop.VGCore.Pages pages = doc.Pages;
                foreach (Corel.Interop.VGCore.Page page in pages)
                {
                    foreach (Corel.Interop.VGCore.Layer layer in page.Layers)
                    {
                        foreach (Corel.Interop.VGCore.Shape shape in layer.Shapes)
                        {
                            if (shape.Type == Corel.Interop.VGCore.cdrShapeType.cdrTextShape)
                            {
                                if (shape.Text.Contents.Contains(text))
                                {
                                    Debug.WriteLine("Found " + files[index].Name);
                                }
                            }
                        }
                    }
                }
            doc.Close();
            }
            index++;
            if (index < files.Length)
            {
                
                findText();
            }
            else
                index = 0;
        }
    }
}


Eles me ajudaram a achar rapidamente o arquivo com o texto procurado, em breve disponibilizarei uma docker prontinha para este fim, assim que modificar alguns pontos, deixando o usuário escolher a pasta para procura, digitar o texto, pois neste código está tudo explicito, pretendo deixar mais genérico  e também pretendo adicionar uma pesquisa pelo nome do objeto e também nome da camada, talvez quem sabe até um algorítimo de aproximação de palavras, não sei veremos.

Veja a demonstração https://youtu.be/NkTSACRRhBI


Voltar

C
o
m
e
n
t
a
r


Mostrar Comentários
Bonus630

/bonus630 /bonus630 /bonus630 /bonus630 email Linkedin /bonus630 bonus630@hotmail.com @bonus630 /bonus630
Todos os Direitos Reservados - Bonus630
Criado e desenvolvido por Reginaldo
Email:Bonus630@gmail.com

Mostrar Citações