DOM์ ๋์ ์ผ๋ก ๋ฐฐ์นํ iframe ๋ด์ ๋ก๋๋ PDF ํ์ผ์ ์ด์ ์ ๋ง์ถ๊ณ ์ธ์ํ๊ธฐ ์ํด Javascript๋ฅผ ์ฌ์ฉํ๋ ค๊ณ ํฉ๋๋ค. ์ด ๋ฌธ์ ๋ ํนํ Firefox์์ ์ ์๊ฒ ๋ฐ์ํฉ๋๋ค.
๋ด ์ฝ๋๋ ๋ค์๊ณผ ์ ์ฌํฉ๋๋ค.
<iframe name="printer_frame" id="printer_frame" src="http://domain.com/media/eparcel_label_1413020567.pdf"></iframe>
window.frames['printer_frame'].window.focus();
window.frames['printer_frame'].window.print();
๋ค์ ์ค๋ฅ๊ฐ ๋ฐ์ํฉ๋๋ค.
์ค๋ฅ: '์ธ์' ์์ฑ์ ๋ํ ์ก์ธ์ค ๊ถํ์ด ๊ฑฐ๋ถ๋์์ต๋๋ค.
๋ด ์ฐ๊ตฌ๋ ์ด๊ฒ์ด ์๋ํด์ผ ํ๋ค๊ณ ๋งํ๊ณ ์์ผ๋ฉฐ, ๋ ์ฝ์ด๋ณด๋ ์ด๊ฒ์ด ๋ฒ๊ทธ์ผ ์ ์๋ค๊ณ ๋ฏฟ๊ฒ ๋์์ต๋๋ค. ๋์์ ์ฃผ์๋ฉด ๊ฐ์ฌํ๊ฒ ์ต๋๋ค.
PDF ํ์ผ์ ๊ทธ ์์ ์๋ ์ฒซ ํ์ด์ง์ PNG ํ์์ ์คํฌ๋ฆฐ์ท์ผ๋ก ๊ต์ฒดํ์ฌ ๊ธฐ๋ฅ์ ํ ์คํธํ์ผ๋ฉฐ ์ธ์ ๊ธฐ๋ฅ์ด ์๋ํ์ต๋๋ค.
์ถ๊ฐ ํ ์คํธ. ๋ด ํฌ๋กฌ ์ค์น์ pdfjs๋ฅผ ์ถ๊ฐํ๊ณ ์์ ๋์ผํ ์ฝ๋๋ก ์ธ์๋ฅผ ์๋ํ์ต๋๋ค. ๊ฐ์ ์ค๋ฅ:
SecurityError: ์ถ์ฒ๊ฐ " http://domain.com "์ธ ํ๋ ์์ด ๊ต์ฐจ ์ถ์ฒ ํ๋ ์์ ์ก์ธ์คํ๋ ๊ฒ์ ์ฐจ๋จํ์ต๋๋ค.
code: 18
message: "Blocked a frame with origin "http://domain.com" from accessing a cross-origin frame."
name: "SecurityError"
stack:
"Error: Blocked a frame with origin "http://domain.com" from accessing a cross-origin frame.
at Error (native)
at <anonymous>:2:34
at Object.InjectedScript._evaluateOn (<anonymous>:730:39)
at Object.InjectedScript._evaluateAndWrap (<anonymous>:669:52)
at Object.InjectedScript.evaluate (<anonymous>:581:21)"
PDF ํ์ผ์ด ๋์ผํ ๋๋ฉ์ธ์์ ๋ก๋๋๊ณ ์์์ ๋ถ๋ช ํ ํด์ผ ํฉ๋๋ค.
๋ฒ๊ทธ 874200 ์ ์ค๋ณต์ผ ์ ์์ต๋๋ค.
์ด ๋ฌธ์ ๋ฅผ ์ฐ์ฐํ ๋ฐ๊ฒฌํ๊ณ ๊ฐ๋ฅํ ํด๊ฒฐ ๋ฐฉ๋ฒ์ ์ํ๋ ์ฌ๋์ ์ํด(์ด ๋ฌธ์ ๊ฐ ์์ ์์ด 1๋ ์ด์ ์ง์๋์ด ์๋ค๋ ์ ์ ๊ณ ๋ คํ ๋) ์ ๋ ๊ฒฐ๊ตญ ์๋ฒ์์ PDF ์ด๋ฏธ์ง๋ฅผ ์์ฑํ๊ธฐ ์ํด GhostScript์ ํจ๊ป PHP์ ImageMagick์ ์ฌ์ฉํ๊ฒ ๋์์ต๋๋ค. , ๊ทธ๋ฐ ๋ค์ ์ด ์ด๋ฏธ์ง URL์ json ์๋ต์ผ๋ก ๋ค์ ์ ๊ณตํ์ฌ ๊ทธ ๊ฒฐ๊ณผ๋ฅผ ๊ฐ๋จํ๊ฒ ์ธ์ํ์ต๋๋ค.
๊ทธ๋ฌ๋ ๋๋ฅผ ์๋ฉด ์๋ง๋ ๋ ์ข๊ณ ๋ ์ฌ์ด ๋ฐฉ๋ฒ์ด์์ ๊ฒ์ ๋๋ค ...
about:config ์์ pdfjs.disabled=true๋ก ์ค์ ํ์ง๋ง pdf ์์ ๋ค์ด๋ก๋๋ plugin.disable_full_page_plugin_for_types = application/pdf๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ pdf๋ฅผ ๋ค์ด๋ก๋ํ ์ ์๊ณ ๋ทฐ์ด์์ ๋ณผ ์ ์๋ค๊ณ ๊ฐ์ ํฉ๋๋ค.
์ ์ด๋ Firefox์์๋ ๊ทธ ์ด์ ๋ฅผ ์๊ณ ์๋ค๊ณ ์๊ฐํฉ๋๋ค. ์์ ๊ฐ์ ๊ฐ๋จํ ์์์ Firefox DevTools๋ฅผ ์ฌ์ฉํ์ฌ ๊ธฐ๋ณธ ํ์ด์ง์ iframe ๋ชจ๋์์ document.domain
๋ฅผ ๊ฒ์ฌํ๋ฉด document.domain
๊ฐ pdf.js
์ธ ๊ฒ์ ๋ฐ๊ฒฌํ์ต๋๋ค. PDF.js ๋ ๋๋ฌโ๋ฐ๋ผ์ ๋ธ๋ผ์ฐ์ ์ ๊ต์ฐจ ์ถ์ฒ ์ ํ์ด ์์๋ฉ๋๋ค.
๋ํ ์์ค์์ PDF.js๋ฅผ ๋น๋ํ๊ณ iframe์ web/viewer.html?file=
๋ก ์ค์ ํ ๋ค์ iframe์ ์ธ์ํ๋๋ก ์ง์ํ๋ฉด(OP์์์ ๊ฐ์ด) ์ ๋๋ก ์๋ํ์ต๋๋ค.
PDF.js(์ ์ด๋ Firefox์์ ์คํ ์ค์ผ ๋)๊ฐ window.postMessage
์ ๊ฐ์ ๊ฒ์ ํตํด ๋ค๋ฅธ ์ฐฝ์์ ๋ฉ์์ง๋ฅผ ์๋ฝํ๋ ๋ฐฉ๋ฒ์ด ์์ต๋๊น? (์ ๋ ์ฌ์ฉํด ๋ณธ ์ ์ด ์์ด์ ์ด ์ ์ค ์ผ์ด์ค์ ์ ํฉํ์ง ์๋์ง๋ ๋ชจ๋ฅด๊ฒ ์ต๋๋ค.)
๋ ๋ค๋ฅธ ๊ด์ฐฐ: iframe
์ onload
์ด๋ฒคํธ๋ฅผ ํตํด ์ธ์๋ฅผ ํธ๋ฆฌ๊ฑฐํ๊ธฐ๋ฅผ ํฌ๋งํ์ง๋ง PDF๊ฐ ์์ง ๋ ๋๋ง๋์ง ์์์ต๋๋ค. ์ด๋ฅผ ํ์ธํ ์ ์๋ ์ ๋ขฐํ ์ ์๋ ๋ฐฉ๋ฒ์ด ์๋์ง ํ์คํ์ง ์์ต๋๊น?
#5765๋ฅผ ๋ณด์์ง๋ง ๋ด์ฅ๋ Firefox ๋ฒ์ ์ด ์๋ PDF.js๋ฅผ ์ง์ ์คํํ๋ ๊ฒฝ์ฐ ์ฐ๊ฒฐํ ์ ์๋ ์ด๋ฒคํธ๋ง ์ธ๊ธํ๋ ๊ฒ ๊ฐ์ต๋๊น?
๋๋ ์ด๊ฒ์ด ์๋ฐ ์คํฌ๋ฆฝํธ๋ฅผ ์ฌ์ฉํ์ฌ ์ธ์ํ๊ธฐ ์ํด PDF ํ์ผ์ ํธ๋ฆฌ๊ฑฐํ๋ ๊ฒ๊ณผ ๊ฐ์ ๊ฐ๋จํ ๋ฌธ์ ๋ฅผ ์ํํ๋ ๊ฒ๊ณผ ๊ฐ์ ๋ฌธ์ ์ ๋นํฉํ์ต๋๋ค. ์ด ๋ฌธ์ ๋ ํ์ฌ ์ฝ 2๋ (์๋ง ๋ ์ค๋)์ผ๋ก ๊ฑฐ์ฌ๋ฌ ์ฌ๋ผ๊ฐ๋๋ค.
_ํด๋ผ์ด์ธํธ ์ธก_ ์๋ฃจ์ ์ ์ฐพ์ ์ฌ๋์ด ์์ต๋๊น? @Petce ์๋ฃจ์ ์ ๋ณด์์ง๋ง ํด๋น ์๋ฃจ์ ์ด ์๋ํ์ง ์์ต๋๋ค.
์จ์ ์ฐธ์ง ๋ง์ธ์ @Lynda333 , ์ด ๋ฌธ์ ์ ๋ํ ์ง์์ ์ ๋ช ๋๊ฒ ์๋ตํ์ง ์์ต๋๋ค. ๋ด ์๊ฐ์ ์ง์ ํ ์ ์ผํ ์ ํ์ ๊ธฐ๋ฅ์์ ์ ์ ํ ์ ์ถฉ์์ ์ฐพ๋ ๊ฒ์ ๋๋ค. ๋ณธ์ธ๊ณผ ๋ค๋ฅธ ์ฌ๋๋ค์ด ๊ทํ์ ์ํฉ์ ๋ํด ์์ธํ ์๋ ค์ฃผ์๋ฉด ๊ฐ๋ฅํ ํด๊ฒฐ ๋ฐฉ๋ฒ์ ์ ์ํ ์ ์์ต๋๋ค.
@Petce - ์ด ๋ฌธ์ ๊ฐ ์์๋ ์ง ์ผ๋ง๋ ๋์๋์ง ์ ์ ์์ต๋๋ค. ์ด ๋ฅ๋ ฅ์ ํฌํจํ์ง ์๋ ๊ฒ์ ์ฐ์ต๊ฒ ๋ณด์ ๋๋ค. ๋๋ ํด๋ผ์ด์ธํธ์ ์ด์ผ๊ธฐํ๊ณ ์ด ์ฌ์ดํธ์ ๋ํ ์ ๊ทผ ๋ฐฉ์์ ๋ณ๊ฒฝํ ์์ ์ ๋๋ค. 1) PDF๋ฅผ ๋ค์ด๋ก๋ํ ์ ์๊ณ 2) ์ผ๋ถ PDF ์ฝํ ์ธ ๋ฅผ HTML๋ก ๋ค์ ๋ง๋ค๊ณ ์ฌ์ฉ์๊ฐ ์ธ์ํ ํญ๋ชฉ์ ์ ํํ ์ ์๋๋ก ํฉ๋๋ค. ๋ง๋๋ ๋ฐ ์๊ฐ์ด ๋ ๊ฑธ๋ฆฌ์ง๋ง ์๋ํฉ๋๋ค.
์๋ฒ ๋๋ iframe์ ์ธ์ํ ์ ์๋ ์ฌ๋์ด ์์ต๋๊น? ๋ฐฉ๊ธ ๋ง์ง๋ง ํ์ฅ ๋ฒ์ ์ ์ค์นํ๊ณ ์ค๋ฅ ๊ถํ์ด ๊ฑฐ๋ถ๋์์ต๋๋ค. ๋ํ ์ผ๋ฐ pdf ์ก์ธ์ค์์ pdf ํ์ผ์ ๋ณผ ์ ์์ต๋๋ค.
์ด ์ปค๋ฐ(๋ฐ pdfjs ๋ฐ์ดํฐ ํ์ ์์ฒด)์ ์ฝ๋๋ฅผ ์ฌ์ฉํ์ฌ pdf๋ฅผ ์์ blob์ผ๋ก ๋ค์ ์์ฑํ๊ณ ์ธ์ ์ง์นจ์ ์ถ๊ฐํ ์ ์์ต๋๋ค. https://github.com/mozilla/pdf.js/pull/6190/commits
blob์ ์์ค๋ก ์ฌ์ฉํ์ฌ iframe์ ๋ง๋ค๊ณ ์ธ์๋ฅผ ์์ํฉ๋๋ค(์ฆ, ์ธ์ ๋ช
๋ น์ ๋ฐ๋ฅด์ง ์๋ ๊ฒ์ ์ ์ธํ๊ณ ๋ blob์ iframe์ ์ ํ ๋ก๋ํ์ง ์์ต๋๋ค).
์ด์จ๋ ์ด๊ฒ์ ๋ทฐ์ด์ ์ฌ์ฉ์ ์ ์ ๋ฒ์ ์ ์์ง ์คํํ๊ณ ์์ง ์๋ค๋ฉด ๊ฝค ๋ณต์กํฉ๋๋ค.
๋๋ ์๋ฒ๋ pdf ๋ฐ์ดํฐ๋ฅผ ํธ์งํ ์ ์๋ ๊ณณ์ด๋ฉด ์ด๋์์๋ ์ธ์ ์ง์นจ์ ์ถ๊ฐํ ์ ์์ต๋๋ค.
์ฌ๋ฏธ์๋ ๋ถ๋ถ์ ํ์ด์ดํญ์ค๊ฐ โโ๊ทธ๊ฒ์ ํ์๋ก ํ๋ค๋ ๊ฒ๋ฟ์ ๋๋ค... ์ด ๋ฌธ์ ๊ฐ ๋ณด๊ณ ๋ ์ง 3๋ ์ด ํ๋ ๊ณ ํ์ด์ดํญ์ค๋ iframe contentWindow ์ก์ธ์ค์ ๋ํด ๋ถํํ๋ ์ ์ผํ ๋ธ๋ผ์ฐ์ ์ ๋๋ค.
์ด๊ฒ์ ๋๋ฅผ ์ํด ์ผํ๋ ๊ฒ ๊ฐ์ต๋๋ค
setTimeout(function(){
this.printIframeRef.contentWindow.document.getElementById('secondaryPrint').click()
}.bind(this), 3000)
๋ทฐ์ด์ ์ฐ๊ฒฐํ๋ ์ด๋ฒคํธ๋ ๋ฐฉ๋ฒ์ ์ฐพ์ ์ ์์์ง๋ง ์ธ์ ๋ฒํผ(์ ๋ ๋ฒ์ 1.4.20์ ์ฌ์ฉํ๊ณ ์์)์์๋ ํด๋ฆญ์ ํธ๋ฆฌ๊ฑฐํ๋ฉด ์ธ์๋๋ ๊ฒ ๊ฐ์ต๋๋ค. settimeout์ ํตํด ๋ทฐ์ด ์๊ฐ์ ๋ก๋ํ ์ ์์ต๋๋ค.
Firefox์์ contentWindow์ ์ก์ธ์คํ ์ ์์ต๋๊น? ๋ณด์ ๋ฌธ์ ๊ฐ ๋ฐ์ํ์ง ์์ต๋๊น?
@paolocaminiti ๋์ผํ ๋๋ฉ์ธ์์ ๋ชจ๋ ํ์ผ์ ๋ก๋ํ๊ณ ์์ต๋๋ค. ๊ทธ๊ฒ์ ๋๋ฅผ ์ํด ์๋ํ๋ ๊ฒ ๊ฐ์ต๋๋ค. Windows์์ IE 10 ๋ฐ 11, IE Edge, Chrome์ ์ฌ์ฉํ์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ Ubuntu 14.04์ FireFox 38.
handlePrintClick() {
blurComponentRef(this.printButtonRef)
this.printIframeRef.contentWindow.document.getElementById('secondaryPrint').click()
}
handlePrintLoad() {
this.printIframeRef.contentWindow.addEventListener("documentload", function(){
this.setState({canPrint: true})
}.bind(this));
}
์๊ฒฉ์์ pdf๋ฅผ ๋ค์ ๋ก๋ํ๊ณ ์์ผ๋ฉฐ ๊ฒฐ๊ณผ๋ ๋์ผํ ๋๋ฉ์ธ์
๋๋ค.
chrome/opera/safari์์ ๋ค์์ ์ฌ์ฉํ๊ณ ์์ต๋๋ค.
function directPrint () {
PDFViewerApplication.pdfDocument.getData().then(function(res) {
var b = URL.createObjectURL(new Blob([res], { type: 'application/pdf' }))
var printFrame = document.getElementById('print-frame')
if (!printFrame) {
printFrame = document.createElement('iframe')
printFrame.id = 'print-frame'
printFrame.src = b
document.body.appendChild(printFrame)
}
setTimeout(function () {
printFrame.contentWindow.print()
// ...dispose iframe and blob.
}, 0)
})
}
๋ก์ปฌ ๋ฐ์ดํฐ๋ฅผ ์ฌ์ฉํ์ฌ blob์ ๋ง๋ ๋ค์ print๋ฅผ ํธ์ถํ๊ธฐ๋ง ํ๋ฉด setTimeout 0์ ์ฌ์ฉํ๋ฉด iframe์ด ์ฒจ๋ถ๋ ์ ์์ต๋๋ค.
๋ถํํ๋ firefox๋ blob์ด ์๋ contentWindow๋ฅผ ํ์ฉํ์ง ์์ง๋ง ์ธ์ ๋ช ๋ น์ด ์๋ blob์ ์์ฒด์ ์ผ๋ก ์ธ์ํฉ๋๋ค.
์๋ฅผ ๋ค์ด ๋ก์ปฌ ๋ฐ์ดํฐ๋ฅผ ์ฌ์ฉํ๋ ์๋ฃจ์ ์ ์์ง๋ง pdf ๋ฐ์ดํฐ๋ฅผ ๋ผ์ฐํ ํ๊ธฐ ์ํด ํ ์์ ์๋ฒ์ ํ๋ก์๊ฐ ์์ผ๋ฉด ๋ชจ๋ ๋์ผํ ๋๋ฉ์ธ์ ์๊ณ ์ฝ๋๋ฅผ ์ ์ฉํ ์ ์์ต๋๋ค.
์๋ ํ์ธ์,
"res"์(๋) ๋ฌด์จ ๋ป์ธ๊ฐ์? ๊ทธ๋ฆฌ๊ณ PDFViewerApplication์ PDF.js์์ ์ ๊ณต๋ฉ๋๊น?
๊ฐ์ฌ ํด์,
์, PDFViewerApplication์ pdfjs์ PDFViewer ๋น๋์์ ์ ๊ณต๋๋ฉฐ ์์ค๋ /web ๋๋ ํ ๋ฆฌ ์๋์ ์์ต๋๋ค. ์ ๋ฐ์ดํธํ ๋ ๋ง์คํฐ ๋ฆฌํฌ์งํ ๋ฆฌ๋ฅผ ๋ ์ฝ๊ฒ ๋ณํฉํ ์ ์๋๋ก ์ ๋น๋๋ฅผ ์์ ํด์ผ ํฉ๋๋ค...
res๋ getData์ ์ํด ๋ค์ ์ ๋ฌ๋ ์ธ์์ด๋ฉฐ pdf ํ์ผ์ ๋ฐ์ดํธ ๋ฉ ํํ์ด์ด์ผ ํฉ๋๋ค. ์ฌ๊ธฐ์์ ์ถ๊ฐ ๋คํธ์ํฌ ์์ฒญ ์์ด ๋ก๋ํ ๋ก์ปฌ blob url์ ๋น๋ํ๋ ๋ฐ ์ฌ์ฉ๋ฉ๋๋ค.
์์ ์ฝ๋์ ๊ฐ์ ์์ ์ ์ํํ๋ ค๋ ๊ฒฝ์ฐ ์ฝ๊ฐ ์ ๋ฆฌํ ์ ์์ต๋๋ค.
function directPrint () {
var printFrame = document.getElementById('print-frame')
if (printFrame) {
printFrame.contentWindow.print()
} else {
PDFViewerApplication.pdfDocument.getData().then(function(res) {
var src = URL.createObjectURL(new Blob([res], { type: 'application/pdf' }))
printFrame = document.createElement('iframe')
printFrame.id = 'print-frame'
printFrame.style.display = 'none'
printFrame.src = src
document.body.appendChild(printFrame)
setTimeout(function () {
printFrame.contentWindow.print()
}, 0)
})
}
}
๊ฒฐ๊ตญ ๋๋ iframe์ ์ฒ๋ถํด์ผ ํ ๋๋ฅผ ์ดํดํ๊ธฐ๊ฐ ๋ณต์กํ๊ธฐ ๋๋ฌธ์ ํ๊ธฐํ์ง ์๊ธฐ๋ก ์ ํํ์ต๋๋ค. pdf๊ฐ ์ค๊ฐ์ ๋ณ๊ฒฝ๋ ์ ์๋ค๊ณ ๊ฐ์ ํ๊ณ ์ฌ์ฉ์๊ฐ ์ธ์ํ ๋๋ง๋ค ๊ทธ๋๋ก ๋๊ณ ์ฌ์ฌ์ฉํฉ๋๋ค.
๋์์ด ๋๊ธฐ๋ฅผ ๋ฐ๋๋๋ค.
@newguy ๋ค๋ฅธ ๋
์๋ค์ ์ํด ์ด ์ค๋ ๋๋ฅผ ๋ช
ํํ ํ๊ธฐ ์ํด ์ฐ๋ฆฌ๋ ์๋นํ ๋ค๋ฅธ ์ผ์ ํ๊ณ ์๋ ๊ฒ ๊ฐ์ต๋๋ค.
๊ธฐ๋ณธ ๋ธ๋ผ์ฐ์ pdf ๋ทฐ์ด๋ฅผ ์ฌ์ฉํ์ฌ ์ ์ฒด ํ์ง๋ก ์ธ์ํ๋ ค๊ณ ํฉ๋๋ค.
๋ณผ ์ ์๋ iframe์์ PDFjs ๋ทฐ์ด๋ฅผ ๋ก๋ํ๊ณ ํธ์คํธ ์์ฉ ํ๋ก๊ทธ๋จ์์ ์ธ์๋ฅผ ์ ์ดํ๊ณ ์์ต๋๋ค.
iframe์ ์คํฌ๋ฆฝํธ๋ฅผ ์ฝ์ ํ๊ณ ํจ์๋ก ํธ์ถํ๋ @paolocaminiti ๋ฅผ ๋ฌ์ฑํ๋ ค๊ณ ์๋ํ์ง๋ง ์ง๊ธ์ "offsetParent๊ฐ ์ค์ ๋์ง ์์์ต๋๋ค -- ์คํฌ๋กคํ ์ ์์ต๋๋ค"๋ผ๋ ๋ฉ์์ง๊ฐ ํ์๋๊ธฐ ๋๋ฌธ์ ์ฌ๋ฏธ์์ต๋๋ค. ๐ข. ํฌ๋กฌ ํค์ค์คํฌ ์ธ์๋ฅผ ์ฌ์ฉํ๊ณ ์ด๊ฒ์ ์์ด ๋ฒ๋ ธ์ต๋๋ค.
ํ์ฌ๊น์ง ์ด๋ ํ ํด๊ฒฐ์ฑ ๋ ์ ์๋์ง ์์
์ฌ์ ํ ์๋ฒ ์ธก ์๋ฃจ์
์ด ํ์ํฉ๋๊น, ์๋๋ฉด ์ด ์ฃผ์ ์ ๋ํด ์ง์ ์ด ์์ต๋๊น? pdf-js์์ PDFPrintService
๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๊น? ์ด๊ฒ์ด ๊ธฐ๋ฅ์ ํด๊ฒฐ ๋ฐฉ๋ฒ์ด ๋ ๊น์? ๊ทธ๋ ๋ค๋ฉด ์ ์ฒด pdf ๋ทฐ์ด๋ฅผ ์ฌ์ฉํ์ง ์๊ณ ์ด๋ป๊ฒ ์ด ์๋น์ค๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๊น?
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
์ ์ด๋ Firefox์์๋ ๊ทธ ์ด์ ๋ฅผ ์๊ณ ์๋ค๊ณ ์๊ฐํฉ๋๋ค. ์์ ๊ฐ์ ๊ฐ๋จํ ์์์ Firefox DevTools๋ฅผ ์ฌ์ฉํ์ฌ ๊ธฐ๋ณธ ํ์ด์ง์ iframe ๋ชจ๋์์
document.domain
๋ฅผ ๊ฒ์ฌํ๋ฉดdocument.domain
๊ฐpdf.js
์ธ ๊ฒ์ ๋ฐ๊ฒฌํ์ต๋๋ค. PDF.js ๋ ๋๋ฌโ๋ฐ๋ผ์ ๋ธ๋ผ์ฐ์ ์ ๊ต์ฐจ ์ถ์ฒ ์ ํ์ด ์์๋ฉ๋๋ค.๋ํ ์์ค์์ PDF.js๋ฅผ ๋น๋ํ๊ณ iframe์
web/viewer.html?file=
๋ก ์ค์ ํ ๋ค์ iframe์ ์ธ์ํ๋๋ก ์ง์ํ๋ฉด(OP์์์ ๊ฐ์ด) ์ ๋๋ก ์๋ํ์ต๋๋ค.PDF.js(์ ์ด๋ Firefox์์ ์คํ ์ค์ผ ๋)๊ฐ
window.postMessage
์ ๊ฐ์ ๊ฒ์ ํตํด ๋ค๋ฅธ ์ฐฝ์์ ๋ฉ์์ง๋ฅผ ์๋ฝํ๋ ๋ฐฉ๋ฒ์ด ์์ต๋๊น? (์ ๋ ์ฌ์ฉํด ๋ณธ ์ ์ด ์์ด์ ์ด ์ ์ค ์ผ์ด์ค์ ์ ํฉํ์ง ์๋์ง๋ ๋ชจ๋ฅด๊ฒ ์ต๋๋ค.)