update
This commit is contained in:
@@ -594,18 +594,17 @@ export class DeDocumentViewer extends DeesElement {
|
||||
}
|
||||
|
||||
private async handlePrint(): Promise<void> {
|
||||
// Create a print-specific container
|
||||
// Create a print-specific container - hidden on screen, visible only in print
|
||||
const printContainer = document.createElement("div");
|
||||
printContainer.className = "dedocument-print-container";
|
||||
printContainer.style.cssText = `
|
||||
position: fixed;
|
||||
position: absolute;
|
||||
left: -9999px;
|
||||
top: 0;
|
||||
left: 0;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
z-index: 999999;
|
||||
background: white;
|
||||
overflow: visible;
|
||||
width: 210mm;
|
||||
height: auto;
|
||||
visibility: hidden;
|
||||
pointer-events: none;
|
||||
`;
|
||||
|
||||
// Create a document element in print mode
|
||||
@@ -618,7 +617,7 @@ export class DeDocumentViewer extends DeesElement {
|
||||
printContainer.appendChild(printDoc);
|
||||
document.body.appendChild(printContainer);
|
||||
|
||||
// Add print styles
|
||||
// Add print styles - hide everything except print container during print
|
||||
const printStyles = document.createElement("style");
|
||||
printStyles.id = "dedocument-print-styles";
|
||||
printStyles.textContent = `
|
||||
@@ -628,8 +627,11 @@ export class DeDocumentViewer extends DeesElement {
|
||||
}
|
||||
.dedocument-print-container {
|
||||
position: static !important;
|
||||
left: auto !important;
|
||||
width: auto !important;
|
||||
height: auto !important;
|
||||
visibility: visible !important;
|
||||
pointer-events: auto !important;
|
||||
}
|
||||
dedocument-dedocument {
|
||||
display: block !important;
|
||||
@@ -655,24 +657,26 @@ export class DeDocumentViewer extends DeesElement {
|
||||
// Wait for the document to render
|
||||
await new Promise((resolve) => setTimeout(resolve, 500));
|
||||
|
||||
// Trigger print
|
||||
window.print();
|
||||
|
||||
// Clean up after print dialog closes
|
||||
// Cleanup function
|
||||
const cleanup = () => {
|
||||
printContainer.remove();
|
||||
printStyles.remove();
|
||||
if (document.body.contains(printContainer)) {
|
||||
printContainer.remove();
|
||||
}
|
||||
if (document.head.contains(printStyles)) {
|
||||
printStyles.remove();
|
||||
}
|
||||
window.removeEventListener("afterprint", cleanup);
|
||||
};
|
||||
|
||||
// Listen for print dialog close
|
||||
window.addEventListener("afterprint", cleanup);
|
||||
|
||||
// Fallback cleanup after a delay (in case afterprint doesn't fire)
|
||||
setTimeout(() => {
|
||||
if (document.body.contains(printContainer)) {
|
||||
cleanup();
|
||||
}
|
||||
}, 60000);
|
||||
// Trigger print
|
||||
window.print();
|
||||
|
||||
// Fallback: also clean up immediately after print() returns
|
||||
// (some browsers return from print() after dialog closes)
|
||||
setTimeout(cleanup, 100);
|
||||
}
|
||||
|
||||
private calculateFitWidth(): void {
|
||||
|
||||
Reference in New Issue
Block a user