openxml
शब्द दस्तावेजों में एक इनलाइन "इनलाइन आकार" में छवि डालें
खोज…
परिचय
एक छवि को MS Word दस्तावेज़ आकार जैसे कि आयताकार और अंडाकार में डालें।
यह दस्तावेज़ मानता है कि आप एक शब्द दस्तावेज़ में एक छवि सम्मिलित करना जानते हैं, OpenXML का उपयोग करके एक शब्द दस्तावेज़ खोलें और बंद करें
निम्न OpenXML नामस्थानों को अपनी कक्षा में जोड़ें
using System;
using System.Collections.Generic;
using System.Linq;
using DocumentFormat.OpenXml;
using A = DocumentFormat.OpenXml.Drawing;
using DW = DocumentFormat.OpenXml.Drawing.Wordprocessing;
using PIC = DocumentFormat.OpenXml.Drawing.Pictures;
using DocumentFormat.OpenXml.Drawing.Wordprocessing;
using Wps = DocumentFormat.OpenXml.Office2010.Word.DrawingShape;
दस्तावेज़ को खोलें और आकृति में सम्मिलित करना चाहते हैं चित्र को संदर्भित करने के लिए छविपार्ट ऑब्जेक्ट जोड़ें
अब OpenXML का उपयोग करते हुए दस्तावेज़ खोलें, आपको एक इमेजपार्ट जोड़ना होगा जो चित्र ऑब्जेक्ट को MainDocumentPart ऑब्जेक्ट में फ़ाइल स्ट्रीम का उपयोग करके संदर्भित करता है, और छवि की आईडी प्राप्त करें
string temp;
MainDocumentPart mainPart = document.MainDocumentPart;
ImagePart imagePart = mainPart.AddImagePart(ImagePartType.Bmp);
using (FileStream stream = new FileStream(barcodepath, FileMode.Open))
{
imagePart.FeedData(stream);
}
temp = mainPart.GetIdOfPart(imagePart);
एक ब्लिप ऑब्जेक्ट का संदर्भ लें
ऑफिस ओपनएक्सएमएल में, एक तस्वीर जिसे एक शब्द दस्तावेज़ में डाला जाता है, उसे "ब्लिप" ऑब्जेक्ट या तत्व माना जाता है। क्लास DocumentFormat.OpenXml से ली गई है। ब्लिप करने पर एंबेड वैल्यू होनी चाहिए जो एक इमेजपार्ट आईडी है। Blip ऑब्जेक्ट तब BlipFill ऑब्जेक्ट / एलिमेंट के अंदर जाता है, और वह भी एक ग्राफ़िकडेटा ऑब्जेक्ट / एलिमेंट के अंदर जाता है और बदले में एक ग्राफिक ऑब्जेक्ट एलिमेंट में चला जाता है। मुझे पूरा यकीन है कि अब तक आप महसूस कर चुके हैं कि सब कुछ एक XML पेड़ की तरह काम करता है। नीचे खुला XML पेड़ का नमूना।
<a:graphic xmlns:a="http://schemas.openxmlformats.org/drawingml/2006/main">
<a:graphicData uri="http://schemas.microsoft.com/office/word/2010/wordprocessingShape">
<wps:wsp>
<wps:cNvSpPr>
<a:spLocks noChangeArrowheads="1" />
</wps:cNvSpPr>
<wps:spPr bwMode="auto">
<a:xfrm>
<a:off x="0" y="0" />
<a:ext cx="1234440" cy="1234440" />
</a:xfrm>
<a:prstGeom prst="roundRect">
<a:avLst>
<a:gd name="adj" fmla="val 16667" />
</a:avLst>
</a:prstGeom>
<a:blipFill dpi="0" rotWithShape="1">
<a:blip r:embed="Raade88ffea8d4c1b" />
<a:stretch>
<a:fillRect l="10000" t="10000" r="10000" b="10000" />
</a:stretch>
</a:blipFill>
</wps:spPr>
<wps:bodyPr rot="0" vert="horz" wrap="square" lIns="91440" tIns="45720" rIns="91440" bIns="45720" anchor="t" anchorCtr="0" upright="1">
<a:noAutofit />
</wps:bodyPr>
</wps:wsp>
</a:graphicData>
</a:graphic>
टेम्पलेट दस्तावेज़ में छवि के आकृतियों को जोड़ना।
अब आपके पास इमेज का एक संदर्भ है। टेम्पलेट दस्तावेज़ में आकृति में छवि डालें। ऐसा करने के लिए, आपको दस्तावेज़ के माध्यम से पुनरावृत्त करने के लिए कुछ LINQ का उपयोग करना होगा और दस्तावेज़ में सभी आकृतियों का संदर्भ प्राप्त करना होगा। Wps: spPr एलिमेंट जो आप ऊपर XML कोड में देखते हैं, डॉक्यूमेंट में आकृतियों के लिए xml एलिमेंट है। समतुल्य C # वर्ग WordprocessingShape है
IEnumerable<DocumentFormat.OpenXml.Office2010.Word.DrawingShape.WordprocessingShape> shapes2 = document.MainDocumentPart.document.Body.Descendants<DocumentFormat.OpenXml.Office2010.Word.DrawingShape.WordprocessingShape>();
सभी आकृतियों के संग्रह संदर्भ के साथ, संग्रह के माध्यम से लूप।
अब जब आपके पास दस्तावेज़ में सभी आकृति संदर्भों का एक संग्रह है। एक फॉर्च के साथ संग्रह के माध्यम से लूप, और प्रत्येक पुनरावृत्ति के माध्यम से एक ब्लिप ऑब्जेक्ट बनाते हैं। चित्र आईडी सन्दर्भ के लिए ब्लिप ऑब्जेक्ट एंबेड वैल्यू को सेट करें, जिसे आपने छवि भाग से पहले कैप्चर किया था। इसके अलावा एक स्ट्रेच ऑब्जेक्ट, और फिलरक्टैंगल ऑब्जेक्ट बनाएं (ये वास्तव में आवश्यक नहीं हैं, उन्हें बस छवि के उचित संरेखण के लिए उपयोग किया जाता है)। और एक्सएमएल ट्री के समान अपनी मूल वस्तु में से प्रत्येक को जोड़ दें।
foreach (DocumentFormat.OpenXml.Office2010.Word.DrawingShape.WordprocessingShape sp in shapes2)
{
//Wps.ShapeProperties shapeProperties1 =
A.BlipFill blipFill1 = new A.BlipFill() { Dpi = (UInt32Value)0U, RotateWithShape = true };
A.Blip blip1 = new A.Blip() { Embed = temp };
A.Stretch stretch1 = new A.Stretch();
A.FillRectangle fillRectangle1 = new A.FillRectangle() { Left = 10000, Top = 10000, Right = 10000, Bottom = 10000 };
Wps.WordprocessingShape wordprocessingShape1 = new Wps.WordprocessingShape();
stretch1.Append(fillRectangle1);
blipFill1.Append(blip1);
blipFill1.Append(stretch1);
Wps.ShapeProperties shapeProperties1 = sp.Descendants<Wps.ShapeProperties>().First();
shapeProperties1.Append(blipFill1);
}