墨消し注釈のプレビュー

このサンプルでは、墨消し注釈の表示状態を切り替える方法を紹介しています。 ツールバー上の左端にある「眼」のアイコンをクリックすると、ビューワ上の注釈レイヤーにカスタムCSSを適用することで、墨消し注釈のみ表示/非表示を切り替えます。

// Initialize PDF viewer with default configuration window.onload = function () { // Configuration constants const CONFIG = { initialDocument: "/diodocs/pdfviewer/demos/product-bundles/assets/pdf/redact-preview.pdf", userName: "Document Reviewer" }; // State management const state = { viewer: null, React: null, isRedactionPreview: false }; try { // 1. Initialize viewer and setup interface state.viewer = new DsPdfViewer("#viewer", { userName: CONFIG.userName }); // 2. Set up default interface state.viewer.addDefaultPanels(); state.viewer.toggleSidebar(false); // 3. Get React instance state.React = state.viewer.getType("React"); if (!state.React) { console.warn("React instance not found in viewer"); return; } // Create eye icon SVG for the toggle button const createEyeIcon = () => state.React.createElement( "svg", { xmlns: "http://www.w3.org/2000/svg", width: "24", height: "24", viewBox: "0 0 24 24", fill: state.isRedactionPreview ? "#ff0000" : "#008000", "aria-hidden": "true" }, state.React.createElement("path", { d: "M12 4.5C7 4.5 2.73 7.61 1 12c1.73 4.39 6 7.5 11 7.5s9.27-3.11 11-7.5c-1.73-4.39-6-7.5-11-7.5zM12 17c-2.76 0-5-2.24-5-5s2.24-5 5-5 5 2.24 5 5-2.24 5-5 5zm0-8c-1.66 0-3 1.34-3 3s1.34 3 3 3 3-1.34 3-3-1.34-3-3-3z" }) ); // Toggle redaction preview mode const toggleRedactionPreview = () => { state.isRedactionPreview = !state.isRedactionPreview; state.viewer.removeViewAreaStyle("redaction-preview-style"); if (state.isRedactionPreview) { state.viewer.addViewAreaStyle(` .redactAnnotation .trigger { background: none !important; border: 2px dashed rgba(255, 0, 0, 0.5) !important; box-shadow: inset 0 0 8px rgba(255, 0, 0, 0.3); } .redactAnnotation .trigger *, .redactAnnotation .trigger img { display: none !important; } `, "redaction-preview-style"); } state.viewer.toolbar.updateItem("preview-content", { icon: { type: "svg", content: createEyeIcon() }, title: state.isRedactionPreview ? "Hide redacted content (secure mode)" : "Preview redacted content (review mode)" }); }; // Add custom preview button to toolbar state.viewer.toolbar.addItem({ key: "preview-content", icon: { type: "svg", content: createEyeIcon() }, title: "Preview redacted content (review mode)", enabled: true, action: toggleRedactionPreview }); // Position the button state.viewer.toolbarLayout.viewer.default.unshift("preview-content"); state.viewer.toolbarLayout.viewer.mobile.unshift("preview-content"); // Load initial document state.viewer.open(CONFIG.initialDocument); } catch (error) { console.error("PDF viewer initialization error:", error); } };
<!DOCTYPE html> <html lang="ja"> <head> <meta charset="utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <title>墨消し注釈のプレビュー</title> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <link rel="stylesheet" href="./src/styles.css"> <script src="/diodocs/pdfviewer/demos/product-bundles/build/dspdfviewer.js"></script> <script src="/diodocs/pdfviewer/demos/product-bundles/build/wasmSupportApi.js"></script> <script src="/diodocs/pdfviewer/demos/resource/js/init.js"></script> <script src="./src/app.js"></script> </head> <body> <div id="viewer"></div> </body> </html>
#viewer { height: 100%; }