Kopiera Word-makron i Java med Aspose.Words

Ännu en månad, ännu en funktionsrik release! Aspose.Words for Java 19.12 har rullats ut med en massa användbara funktioner, förbättringar och buggfixar. Med den senaste versionen kommer du att kunna kopiera Word-makron från ett dokument till ett annat genom att klona VBA-modulen eller VBA-projektet i Java. Dessutom har vi lagt till stöd för PDF 1.7 Standard för konvertering av Word till PDF. Den senaste versionen av Aspose.Words för Java kan också skanna användarinstallerade teckensnitt i Windows 10 efter teckensnittskällan. Så låt oss gå igenom dessa användbara funktioner mer i detalj.

Kopiera VBA-makron från ett Word-dokument till ett annat i Java

Makron i ett Word-dokument skrivs i VBA (Visual Basic for Applications) för att automatisera de ofta använda uppgifterna. MS Word-makron innehåller en uppsättning kodsatser som exekveras när en viss knapp i verktygsfältet klickas eller en kombination av tangenter trycks ned.

I föregående utgåva av Aspose.Words för Java introducerade vi funktionen att lägga till makron till VBA-projekt eller VBA-moduler i Word-dokument. Det kan dock vara fallet när du behöver klona VBA-moduler eller hela VBA-projektet för att kopiera Word-makron från ett dokument till ett annat programmässigt. För att göra det möjligt har vi lagt till metoden deepClone() till klasserna VABModule och VBAProject för att kopiera Word-makron från en viss VBA-modul eller ett visst projekt.

Låt oss nu kolla in hur man kopierar Word-makron från ett dokument till ett annat i Java med Aspose.Words för Java.

Kloning av VBA-modul

Följande Java-kodexempel visar hur man kopierar makron genom att klona en viss VBA-modul i Word-dokument.

Document doc = new Document(dataDir + "test.docm");
      VbaProject project = doc.getVbaProject();

      Document destDoc = new Document();

      destDoc.setVbaProject(new VbaProject());

      // Klona en enda modul.
      VbaModule copyModule = doc.getVbaProject().getModules().get("Module1").deepClone();
      destDoc.getVbaProject().getModules().add(copyModule);

      destDoc.save(dataDir + "output.docm");

Kloning VBA-projekt

Följande Java-kodexempel visar hur man kopierar makron genom att klona ett komplett VBA-projekt i Word-dokument.

Document doc = new Document(dataDir + "test.docm");
VbaProject project = doc.getVbaProject();

Document destDoc = new Document();

// Klona hela projektet.
destDoc.setVbaProject(doc.getVbaProject().deepClone());

destDoc.save(dataDir + "output.docm");

Konvertera Word till PDF 1.7 Standard i Java

Ett PDF-dokument kan överensstämma med olika standarder eller versioner av PDF-specifikationer. PDF 1.7 var den sjätte utgåvan av PDF-specifikationen och den inkluderade vissa proprietära teknologier som endast definieras av Adobe. Aspose.Words för Java stöder redan Word till PDF-konvertering, men vi har utökat detta stöd och nu kan du konvertera ett Word-dokument till PDF 1.7. För detta har vi lagt till alternativet PDF17 till PdfCompliance enum.

Följande Java-kodexempel visar hur man konverterar Word till PDF genom att ange PdfCompliance.

// För fullständiga exempel och datafiler, gå till // https://github.com/aspose-words/Aspose.Words-for-Java
// Sökvägen till dokumentkatalogen.
Document originalDoc = new Document(dataDir + "Document.docx");

// Ge PDFSaveOption-kompatibilitet till PDF17
// eller bara konvertera utan SaveOptions
PdfSaveOptions pso = new PdfSaveOptions();
pso.setCompliance(PdfCompliance.PDF_17);

originalDoc.save(dataDir + "Output.pdf", pso);

Använda användarinstallerade teckensnitt för SystemFontSource på Windows 10

I de tidigare versionerna av Aspose.Words för Java använde API:et för att skanna endast de systeminstallerade typsnitten efter SystemFontSource. Detta tillvägagångssätt passade inte bra i Windows 10 där typsnitten kan installeras antingen i systemmappen “%windir%\fonts” för alla användare eller i användarmappen “%userprofile%\AppData\Local\Microsoft \Windows\Fonts” för den aktuella användaren. Vi har förbättrat den här funktionen och nu har Aspose.Words för Java möjligheten att skanna de användarinstallerade typsnitten också.

Nytt alternativ för Sök och ersätt {#Aspose.Words for Java19.12ReleaseNotes-AddedanewFindReplaceOptions.UseLegacyOrderoption}

Aspose.Words för Java tillhandahåller alternativet Sök och ersätt för att ersätta de önskade orden eller fraserna i Word-dokumenten. I de tidigare versionerna av API:t användes funktionen Sök/ersätt för att analysera textrutorna separat från innehållet i dokumentet. Det här beteendet har utformats i enlighet med MS Words beteende, men det kan förekomma fall när du kan behöva hitta och ersätta innehåll sekventiellt inklusive texten i textrutorna. För ett sådant scenario har vi introducerat ett nytt alternativ i klassen FindReplaceOptions som UseLegacyOrder. Följande Java-kodexempel visar hur du använder det här alternativet när du letar efter och ersätter text i ett Word-dokument.

public static void FineReplaceUsingLegacyOrder(String dataDir) throws Exception
{
    // Öppna dokumentet.
    Document doc = new Document(dataDir + "source.docx");
    FindReplaceOptions options = new FindReplaceOptions();
    options.setReplacingCallback(new ReplacingCallback());
    options.setUseLegacyOrder(true);

    doc.getRange().replace(Pattern.compile("\\[(.*?)\\]"), "", options);

    dataDir = dataDir + "usingLegacyOrder_out.doc";
    doc.save(dataDir);
}

private static class ReplacingCallback implements IReplacingCallback
{
    public int replacing(ReplacingArgs args) {
    	System.out.print(args.getMatch().group());
        return ReplaceAction.REPLACE;
    }
}

Tja, detta var en kort översikt över några av de viktiga funktioner som vi har lagt till i den senaste versionen. Du kan ta en titt på den fullständiga listan över funktioner och buggfixar i release notes. Du kan ladda ner den senaste versionen och utvärdera de nya funktionerna själv. För mer information om alla funktioner kan du konsultera dokumentationen för API:t samt kontakta oss via vårt forum.