Verwenden Sie die DrawObjectEventHandler Klasse, um DrawObject und Bound beim Rendern in PDF zu erhalten, mit JavaScript via C++

Mögliche Verwendungsszenarien

Aspose.Cells stellt eine abstrakte Klasse DrawObjectEventHandler bereit, die eine DrawObjectEventHandler.draw(DrawObject, number, number, number, number) Methode hat. Der Benutzer kann DrawObjectEventHandler implementieren und die DrawObjectEventHandler.draw(DrawObject, number, number, number, number) Methode nutzen, um die DrawObject und Bound beim Rendern von Excel zu PDF oder Bild zu erhalten. Hier ist eine kurze Beschreibung der Parameter der DrawObjectEventHandler.draw(DrawObject, number, number, number, number) Methode.

Wenn Sie eine Excel-Datei in PDF umwandeln, können Sie die Klasse DrawObjectEventHandler mit der Eigenschaft PdfSaveOptions.drawObjectEventHandler verwenden. Ebenso können Sie bei der Umwandlung in ein Bild die Klasse DrawObjectEventHandler mit der Eigenschaft ImageOrPrintOptions.drawObjectEventHandler verwenden.

Holen Sie sich DrawObject und Bound beim Rendern in PDF mit der DrawObjectEventHandler-Klasse

Siehe den folgenden Beispielcode. Es lädt die Beispiel-Excel-Datei und speichert sie als Ausgabe-PDF. Beim Rendern zu PDF nutzt es die PdfSaveOptions.drawObjectEventHandler Eigenschaft und erfasst die DrawObject und Bound bestehender Zellen und Objekte, z.B. Bilder. Wenn der DrawObject Typ Cell ist, werden Bound und StringValue ausgegeben. Ist der DrawObject Typ Image, werden Bound und Shape-Name ausgegeben. Siehe den Konsolenausdruck des unten angegebenen Beispielcodes für mehr Hilfe.

Beispielcode

<!DOCTYPE html>
<html>
    <head>
        <title>Get Draw Object and Bound Using DrawObjectEventHandler</title>
    </head>
    <body>
        <h1>Get Draw Object and Bound Using DrawObjectEventHandler</h1>
        <input type="file" id="fileInput" accept=".xls,.xlsx,.csv" />
        <button id="runExample">Run Example</button>
        <a id="downloadLink" style="display: none;">Download Result</a>
        <div id="result"></div>
    </body>

    <script src="aspose.cells.js.min.js"></script>
    <script type="text/javascript">
        const { Workbook, SaveFormat, PdfSaveOptions, DrawObjectEventHandler, DrawObjectEnum } = AsposeCells;

        AsposeCells.onReady({
            license: "/lic/aspose.cells.enc",
            fontPath: "/fonts/",
            fontList: [
                "arial.ttf",
                "NotoSansSC-Regular.ttf"
            ]
        }).then(() => {
            console.log("Aspose.Cells initialized");
        });

        class ClsDrawObjectEventHandler extends DrawObjectEventHandler {
            draw(drawObject, x, y, width, height) {
                console.log("");

                // Print the coordinates and the value of Cell object
                if (drawObject.type === DrawObjectEnum.Cell) {
                    console.log(`[X]: ${x} [Y]: ${y} [Width]: ${width} [Height]: ${height} [Cell Value]: ${drawObject.cell.stringValue}`);
                }

                // Print the coordinates and the shape name of Image object
                if (drawObject.type === DrawObjectEnum.Image) {
                    console.log(`[X]: ${x} [Y]: ${y} [Width]: ${width} [Height]: ${height} [Shape Name]: ${drawObject.shape.name}`);
                }

                console.log("----------------------");
            }
        }

        document.getElementById('runExample').addEventListener('click', async () => {
            const fileInput = document.getElementById('fileInput');
            const resultDiv = document.getElementById('result');

            if (!fileInput.files.length) {
                resultDiv.innerHTML = '<p style="color: red;">Please select an Excel file.</p>';
                return;
            }

            const file = fileInput.files[0];
            const arrayBuffer = await file.arrayBuffer();

            // Load sample Excel file
            const workbook = new Workbook(new Uint8Array(arrayBuffer));

            // Specify Pdf save options
            const opts = new PdfSaveOptions();

            // Assign the instance of DrawObjectEventHandler class
            opts.drawObjectEventHandler = new ClsDrawObjectEventHandler();

            // Save to Pdf format with Pdf save options
            const outputData = workbook.save(SaveFormat.Pdf, opts);
            const blob = new Blob([outputData], { type: 'application/pdf' });
            const downloadLink = document.getElementById('downloadLink');
            downloadLink.href = URL.createObjectURL(blob);
            downloadLink.download = 'outputGetDrawObjectAndBoundUsingDrawObjectEventHandler.pdf';
            downloadLink.style.display = 'block';
            downloadLink.textContent = 'Download PDF File';

            resultDiv.innerHTML = '<p style="color: green;">Operation completed successfully! Click the download link to get the PDF file.</p>';
        });
    </script>
</html>

Konsolenausgabe

 [X]: 153.6035 [Y]: 82.94118 [Width]: 103.2035 [Height]: 14.47059 [Cell Value]: This is sample text.

----------------------

[X]: 267.6917 [Y]: 153.4853 [Width]: 160.4491 [Height]: 128.0647 [Shape Name]: Sun

----------------------