Şekilleri Belgeden Ayrı Oluşturma

Belgeleri işlerken ortak bir görev, belgede bulunan tüm görüntüleri ayıklamak ve bunları harici bir konuma dışa aktarmaktır. Bu görev, görüntü verilerini ayıklamak ve kaydetmek için zaten işlevsellik sağlayan Aspose.Words API ile basitleşir. Bununla birlikte, bazen paragraflar, ok şekilleri ve küçük bir resim içeren bir metin kutusu gibi farklı türde bir çizim nesnesiyle temsil edilen diğer grafik içerik türlerini de benzer şekilde çıkarmak isteyebilirsiniz. Tek tek içerik öğelerinin bir birleşimi olduğu için bu nesneyi oluşturmanın basit bir yolu yoktur. Ayrıca, içeriğin tek bir görüntüye benzeyen nesneye gruplandırıldığı bir durumla da karşılaşabilirsiniz.

Aspose.Words, bu tür içeriği, işlenen içerikle şekilden basit bir görüntü çıkarabileceğiniz gibi çıkarmak için işlevsellik sağlar. Bu makalede, şekilleri belgeden bağımsız olarak oluşturmak için bu işlevin nasıl kullanılacağı açıklanır.

Aspose.Words içindeki Şekil Türleri

Belge çizim katmanındaki tüm içerik, Aspose.Words Belge Nesnesi Modülündeki (DOM) Shape veya GroupShape düğümü ile temsil edilir. Bu tür içerikler metin kutuları, resimler, AutoShapes, OLE nesneler vb. Olabilir. Bazı alanlar şekil olarak da içe aktarılır, örneğin INCLUDEPICTURE alanı.

Basit bir görüntü, ShapeType.Image ‘nin Shape düğümü ile temsil edilir. Bu şekil düğümünde alt düğüm yoktur, ancak bu şekil düğümünde bulunan görüntü verilerine Shape.ImageData özelliği ile erişilebilir. Öte yandan, bir şekil birçok alt düğümden de oluşabilir. Örneğin, ShapeType.TextBox özelliği ile temsil edilen bir metin kutusu şekli, Paragraph ve Table gibi birçok düğümden oluşabilir. Çoğu şekil Paragraph ve Table blok düzeyinde düğümleri içerebilir. Bunlar ana gövdede görünenlerle aynı düğümlerdir. Şekiller her zaman bir paragrafın parçalarıdır, ya doğrudan satır içine dahil edilir ya da Paragraph, ‘e sabitlenir, ancak belge sayfasının herhangi bir yerinde “yüzer”.

rendering-shapes-separately-from-a-document-aspose-words-cpp-1

Bir belge, birlikte gruplandırılmış şekiller de içerebilir. Gruplama, birden çok nesne seçip sağ tıklama menüsünde “Grupla” yı tıklatarak Microsoft Word ‘da etkinleştirilebilir.

rendering-shapes-separately-from-a-document-aspose-words-cpp-2

Aspose.Words ‘de, bu şekil grupları GroupShape düğümü ile temsil edilir. Bunlar, tüm grubu görüntüye dönüştürmek için aynı şekilde çağrılabilir.

rendering-shapes-separately-from-a-document-aspose-words-cpp-3

DOCX biçimi, diyagramlar veya grafikler gibi özel görüntü türleri içerebilir. Bu şekiller ayrıca Aspose.Words içindeki Shape düğümü aracılığıyla temsil edilir ve bu da onları görüntü olarak oluşturmak için benzer bir yöntem sağlar. Tasarım gereği, bu şekil bir görüntü (ShapeType.Image) olmadıkça, bir şekil çocuk olarak başka bir şekil içeremez. Örneğin, Microsoft Word başka bir metin kutusunun içine bir metin kutusu eklemenize izin vermez.

Yukarıda açıklanan şekil türleri, şekilleri ShapeRenderer sınıfı aracılığıyla işlemek için özel bir yöntem sağlar. ShapeRenderer sınıfının bir örneği, Shape veya GroupShape için GetShapeRenderer yöntemi aracılığıyla veya Shape ‘ü ShapeRenderer sınıfının yapıcısına geçirerek alınır. Bu sınıf, aşağıdakilere bir şekil oluşturmaya izin veren üyelere erişim sağlar:

  • Save yöntemini kullanarak diskteki dosyayı aşırı yükleme
  • Save yöntemini kullanarak akış aşırı yükleme
  • RenderToSize ve RenderToScale yöntemlerini kullanarak Graphics Nesnesi

Dosyaya veya Akışa Oluşturma

Save yöntemi, bir şekli doğrudan bir dosyaya veya akışa işleyen aşırı yükler sağlar. Her iki aşırı yük de ImageSaveOptions sınıfının bir örneğini kabul eder ve bu, şekli oluşturmak için seçeneklerin tanımlanmasına izin verir. Bu, Document.Save yöntemiyle aynı şekilde çalışır. Bu parametre gerekli olsa da, özel seçenek olmadığını belirterek boş bir değer iletebilirsiniz.

Şekil, SaveFormat numaralandırmasında belirtilen herhangi bir görüntü biçiminde dışa aktarılabilir. Örneğin, görüntü, SaveFormat.Jpeg numaralandırmasını belirterek JPEG gibi bir raster görüntü veya SaveFormat.Emf belirterek EMF gibi bir vektör görüntüsü olarak oluşturulabilir.

Aşağıdaki kod örneği, EMF görüntüsüne bir şeklin belgeden ayrı olarak oluşturulmasını ve diske kaydedilmesini göstermektedir:

Aşağıdaki kod örneği, JPEG görüntüsüne bir şeklin belgeden ayrı olarak oluşturulmasını ve bir akışa kaydedilmesini göstermektedir:

ImageSaveOptions sınıfı, görüntünün nasıl işleneceğini denetleyen çeşitli seçenekler belirlemenizi sağlar. Yukarıda açıklanan işlevler GroupShape ve Shape düğümlerine aynı şekilde uygulanabilir.

.NET Grafik Nesnesine Oluşturma

Doğrudan bir Graphics nesnesine oluşturma, kendi ayarlarınızı ve Graphics nesnesinin durumunu tanımlamanıza olanak tanır. Yaygın bir senaryo, bir şeklin doğrudan bir Windows Formundan veya bir Bitmapten alınan bir Graphics nesnesine oluşturulmasını içerir. Shape düğümü oluşturulduğunda, ayarlar şekil görünümünü etkiler. Örneğin, Graphics nesnesi için RotateTransform veya ScaleTransform yöntemlerini kullanarak şekli döndürebilir veya ölçekleyebilirsiniz.

Aşağıdaki örnek, bir şeklin nasıl oluşturulacağını gösterir.NET Graphics belgeden ayrı olarak nesne oluşturun ve oluşturulan görüntüye döndürme uygulayın:

RenderToSize yöntemine benzer şekilde, NodeRendererBase ‘den devralınan RenderToSize yöntemi, belge içeriğinin küçük resimlerini oluşturmak için kullanışlıdır. Şekil boyutu yapıcı aracılığıyla belirtilir. RenderToSize yöntemi, Graphics nesnesini, görüntü konumunun X ve Y koordinatlarını ve Graphics nesnesine çizilecek görüntünün boyutunu (genişlik ve yükseklik) kabul eder.

Shape, NodeRendererBase sınıfından devralınan ShapeRenderer.RenderToScale yöntemi kullanılarak belirli bir ölçeğe dönüştürülebilir. Bu, aynı ana parametreleri kabul eden Document.RenderToScale yöntemine benzer. Bu iki yöntem arasındaki fark, ShapeRenderer.RenderToScale yöntemiyle, değişmez bir boyut yerine, şekli oluşturma sırasında ölçeklendiren bir kayan nokta değeri seçmenizdir. Float değeri 1.0 değerine eşitse, şeklin şu adreste oluşturulmasına neden olur: 100% orijinal boyutunda. Float değeri 0.5 görüntü boyutunu yarı yarıya azaltır.

Şekil Görüntüsü Oluşturma

Shape sınıfı, çizim katmanındaki AutoShape, metin kutusu, serbest form, OLE nesnesi, ActiveX denetimi veya resim gibi nesneleri temsil eder. Shape sınıfını kullanarak, bir Microsoft Word belgesinde şekiller oluşturabilir veya değiştirebilirsiniz. Bir şeklin önemli bir özelliği ShapeType ‘dır. Farklı türlerdeki şekiller, bir Word belgesinde farklı yeteneklere sahip olabilir. Örneğin, yalnızca resimler ve OLE şekiller içlerinde resimlere sahip olabilirken, şekillerin çoğunda yalnızca metin olabilir.

Aşağıdaki örnek, bir Şekil görüntüsünün belgeden ayrı olarak JPEG görüntüye nasıl oluşturulacağını ve diske nasıl kaydedileceğini gösterir:

Şekil Boyutunu Alma

ShapeRenderer sınıfı ayrıca GetSizeInPixels yöntemi aracılığıyla şeklin boyutunu piksel cinsinden almak için işlevsellik sağlar. Bu yöntem, şekil oluşturulduğunda şekil boyutunun hesaplanmasında kullanılan ölçek ve DPI olmak üzere iki kayan nokta türü (Tek) parametresini kabul eder. Yöntem, hesaplanan boyutun genişliğini ve yüksekliğini içeren Size nesnesini döndürür. Bu, işlenen şeklin boyutunu önceden bilmek gerektiğinde, örneğin işlenen çıktıdan yeni bir Bitmap oluştururken kullanışlıdır.

Aşağıdaki örnek, işlenecek şeklin genişliği ve yüksekliği ile yeni bir Bitmap ve Grafik nesnesinin nasıl oluşturulacağını gösterir:

RenderToSize veya RenderToScale yöntemlerini kullanırken, işlenen görüntü boyutu da SizeF nesnesinde döndürülür. Bu, bir değişkene atanabilir ve gerekirse kullanılabilir.

SizeInPoints özelliği, nokta cinsinden ölçülen Şekil boyutunu döndürür (bkz. ShapeRenderer. Sonuç, genişliği ve yüksekliği içeren bir SizeF nesnesidir.