Görüntülerle Çalışmak
Aspose.Words kullanıcılara görüntüleri çok esnek bir şekilde çalışmak için izin verir. Bu makalede, yalnızca görüntülerle çalışmanın bazı olasılıklarını keşfedebilirsiniz.
Bir Belgeye Nasıl Görüntü Çıkarılır {#how-to-extract-images-from-a-document}?
Tüm resimler bir belge içinde Shape düğümde depolanır. Tüm resimlerin veya belirli türlere sahip görüntülerin belgesinden çıkarılması için aşağıdaki adımları izleyin:
- Şekil düğümlerini tüm seçmek için getChildNodes yöntemini kullanın.
- Sonuçlanan düğüm koleksiyonlarını dolaşın.
- hasImage boolean özelliğini kontrol et.
- Görüntü verilerini ImageData özelliğine kullanarak çıkarın.
- Görüntü verilerini bir dosyaya kaydet.
// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Java | |
// The path to the documents directory. | |
String dataDir = Utils.getDataDir(ExtractImagesToFiles.class); | |
Document doc = new Document(dataDir + "Image.SampleImages.doc"); | |
NodeCollection<Shape> shapes = (NodeCollection<Shape>) doc.getChildNodes(NodeType.SHAPE, true); | |
int imageIndex = 0; | |
for (Shape shape : shapes | |
) { | |
if (shape.hasImage()) { | |
String imageFileName = String.format( | |
"Image.ExportImages.{0}_out_{1}", imageIndex, FileFormatUtil.imageTypeToExtension(shape.getImageData().getImageType())); | |
shape.getImageData().save(dataDir + imageFileName); | |
imageIndex++; | |
} | |
} |
Her Belge Sayfasında Barkod Nasıl Yerleştirilir {#how-to-insert-barcode-on-each-documen-page}?
Bu örnek, aynı veya farklı barkodların bir Word belgesinin tüm sayfalarına veya belirli sayfalara eklenmesine izin verir. Bir belgedeki tüm sayfaların üzerine doğrudan barkod ekleyemezsiniz ancak moveToSection, moveToHeaderFooter ve [insertImage](https://reference.aspose.com/words/java/com.aspose.words/DocumentBuilder#insertImage(byte[]) yöntemlerini kullanarak herhangi bir bölüme veya başlık/ayaklara geçebilir ve aşağıdaki kodda görebileceğiniz gibi barkod resimleri ekleyebilirsiniz
Aşağıdaki kod örneği, bir belge her sayfasına bir barkod görüntüsü nasıl yerleştirileceğini göstermektedir:
// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Java | |
// The path to the documents directory. | |
String dataDir = Utils.getDataDir(InsertBarcodeImage.class); | |
Document doc = new Document(dataDir + "Image.SampleImages.doc"); | |
DocumentBuilder builder = new DocumentBuilder(doc); | |
// The number of pages the document should have. | |
int numPages = 4; | |
// The document starts with one section, insert the barcode into this existing section. | |
InsertBarcodeIntoFooter(builder, doc.getFirstSection(), 1, HeaderFooterType.FOOTER_PRIMARY); | |
InsertBarcodeIntoFooter(builder, doc.getFirstSection(), 1, HeaderFooterType.FOOTER_PRIMARY); | |
for (int i = 1; i < numPages; i++) { | |
// Clone the first section and add it into the end of the document. | |
Section cloneSection = (Section) doc.getFirstSection().deepClone(false); | |
// cloneSection.getPageSetup().getSectionStart() = SectionStart.NEW_PAGE; | |
doc.appendChild(cloneSection); | |
// Insert the barcode and other information into the footer of the section. | |
InsertBarcodeIntoFooter(builder, cloneSection, i, HeaderFooterType.FOOTER_PRIMARY); | |
} | |
dataDir = dataDir + "Document_out_.docx"; | |
// Save the document as a PDF to disk. You can also save this directly to a stream. | |
doc.save(dataDir); |
Görüntünün En Boy Oranını Kilitle
Bir geometrik şeklin orantısı farklı boyutlardaki boyutlarının oranıdır. Bir görüntünün orantısını kilitlemek için AspectRatioLocked kullanabilirsiniz. Şeklin varsayılan orantısı ShapeType‘a bağlıdır. Bu, ShapeType.Image
için true ve diğer şekil türleri için false’tür.
Aşağıdaki kod örneği, nasıl aspekt oranı ile çalışılacağını göstermektedir:
// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Java | |
// The path to the documents directory. | |
String dataDir = Utils.getDataDir(DocumentBuilderSetImageAspectRatioLocked.class); | |
// Open the document. | |
Document doc = new Document(); | |
DocumentBuilder builder = new DocumentBuilder(doc); | |
Shape shape = builder.insertImage(dataDir + "Test.png"); | |
shape.setAspectRatioLocked(false); | |
doc.save(dataDir + "output.doc"); |
Şeklin Gerçek Sınırlarını Noktalar Olarak Nasıl Alınır {#how-to-get-actual-bounds-of-shape-in-points}?
Şekli sayfada nasıl işlenirse o şekilde gerçek sınırlayıcı kutusunu almak istiyorsanız " BoundsInPoints " özelliğini kullanarak bunu başarabilirsiniz.
Aşağıdaki kod örneğinde bu özelliğin nasıl kullanılacağını gösteriyor:"
// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Java | |
Document doc = new Document(); | |
DocumentBuilder builder = new DocumentBuilder(doc); | |
Shape shape = builder.insertImage(dataDir + "Test.png"); | |
shape.setAspectRatioLocked(false); | |
System.out.print("\nGets the actual bounds of the shape in points. "); | |
System.out.println(shape.getShapeRenderer().getBoundsInPoints()); |
Görüntüleri kırp
Görüntünün kırpılması genellikle istenmeyen görüntünün dış kısımlarının kaldırılmasını ifade eder ve bu da çerçeveyi geliştirmeye yardımcı olur. Ayrıca belirli bir alana odaklanmak için görüntünün bazı kısımlarının çıkarılması için kullanılır.
Aşağıdaki kod örneği bu şekilde ulaşmak için nasıl kullanıldığını gösterir: Aspose.Words API
// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Java | |
// The path to the documents directory. | |
String dataDir = Utils.getDataDir(CropImages.class); | |
String inputPath = dataDir + "ch63_Fig0013.jpg"; | |
String outputPath = dataDir + "cropped-1.jpg"; | |
cropImage(inputPath, outputPath, 124, 90, 570, 571); |
// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Java | |
public static void cropImage(String inPath, String outPath, int left, int top, int width, int height) throws Exception { | |
Document doc = new Document(); | |
DocumentBuilder builder = new DocumentBuilder(doc); | |
BufferedImage img = ImageIO.read(new File(inPath)); | |
int effectiveWidth = img.getWidth() - width; | |
int effectiveHeight = img.getHeight() - height; | |
Shape croppedImage = builder.insertImage(img, | |
ConvertUtil.pixelToPoint(img.getWidth() - effectiveWidth), | |
ConvertUtil.pixelToPoint(img.getHeight() - effectiveHeight)); | |
double widthRatio = croppedImage.getWidth() / ConvertUtil.pixelToPoint(img.getWidth()); | |
double heightRatio = croppedImage.getHeight() / ConvertUtil.pixelToPoint(img.getHeight()); | |
if (widthRatio < 1) | |
croppedImage.getImageData().setCropRight(1 - widthRatio); | |
if (heightRatio < 1) | |
croppedImage.getImageData().setCropBottom(1 - heightRatio); | |
float leftToWidth = (float) left / img.getWidth(); | |
float topToHeight = (float) top / img.getHeight(); | |
croppedImage.getImageData().setCropLeft(leftToWidth); | |
croppedImage.getImageData().setCropRight(croppedImage.getImageData().getCropRight() - leftToWidth); | |
croppedImage.getImageData().setCropTop(topToHeight); | |
croppedImage.getImageData().setCropBottom(croppedImage.getImageData().getCropBottom() - topToHeight); | |
croppedImage.getShapeRenderer().save(outPath, new ImageSaveOptions(SaveFormat.JPEG)); | |
} |
WMF olarak Görüntüleri Kaydetme
Aspose.Words bir belgeyi dönüştürürken tüm mevcut görüntüleri ‘WMF ’ biçimine kaydetmek için işlevsellik sağlar DOCX’e.
Aşağıdaki kod örneği, RTF kaydetme seçenekleri ile resimlerin nasıl kaydedileceğini gösterir:
// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Java | |
String fileName = "TestFile.doc"; | |
Document doc = new Document(dataDir + fileName); | |
RtfSaveOptions saveOpts = new RtfSaveOptions(); | |
saveOpts.setSaveImagesAsWmf(true); | |
doc.save(dataDir + "output.rtf", saveOpts); |