<내장> 대 <개체>


164

Adobe PDF 뷰어를 표시 할 때 HTML 파일에 사용할 올바른 / 최고의 태그는 무엇입니까?

지금은 아래 코드를 사용하고 있지만 이상한 부작용이 있습니다 (예 : 다른 <input>텍스트 상자로 설정 한 시작 포커스를 훔치는 것 같습니다 . jQueryUI Resizeable 클래스에서는 실제로 재생되지 않는 것 같습니다. 기타.)

<embed src="abc.pdf" type="application/pdf" />

<object>태그로도 같은 작업을 수행 할 수 있습니까? 한 태그를 사용하는 것보다 다른 태그를 사용하는 것의 장단점이 있습니까?


21
이제 HTML5에 <embed>가 있습니까? 가장 좋은 방법은 무엇입니까?
VinnyG

@VinnyG는 <embed>공식적으로 지금 HTML5와 표준 태그입니다,하지만 당신은 적어도 예상한다 일부 오래된 브라우저 버전과의 호환성 문제.
b1nary.atr0phy

답변:


169

객체 대 EMBED-왜 항상 embed를 사용하지 않습니까?

결론 : OBJECT는 양호하고 EMBED는 낡았습니다. IE의 PARAM 태그 외에도 브라우저가 OBJECT의 참조 된 플러그인을 지원하지 않으면 OBJECT 태그 사이의 모든 컨텐츠가 렌더링되며, 컨텐츠의 렌더링 여부에 관계없이 http가 요청됩니다.

object페이지에 무언가를 포함시키는 현재 표준 태그입니다. embed넷스케이프 (함께가 포함 된 img) 처럼 아무것도 전에 object온 있었다 W3C의 마음.

다음 과 같이 PDFobject포함시키는 방법 입니다 .

<object data="data/test.pdf" type="application/pdf" width="300" height="200">
  alt : <a href="data/test.pdf">test.pdf</a>
</object>

거의 모든 브라우저에 표시 할 인라인 PDF가 실제로 필요한 경우 이전 브라우저는 이해 embed하지만 그렇지 않은 object경우 다음을 수행해야합니다.

<object data="abc.pdf" type="application/pdf">
    <embed src="abc.pdf" type="application/pdf" />
</object>

이 버전 은 유효하지 않습니다 .



7
<embed>HTML5 표준의 일부 이지만 <object>이전 브라우저와의 호환성 및 대체 콘텐츠 표시 기능으로 인해 더 나은 선택 인 것 같습니다 . 생각?
Raphael

4
@raphaelcm 악마의 옹호자를 할 수 있습니다. 오래된 브라우저와의 호환성을 유지하는 것이 중요하다면 HTML은 결코 진화하지 않을 것입니다. 여기서 중요한 것은 특히 브라우저 버전과 관련하여 시장 점유율 입니다.
b1nary.atr0phy

7
이것이 왜 허용됩니까? <embed>는 HTML5 표준 태그라고 생각했습니다.
fabspro

2
앞으로 <embed>가 더 나은 선택이라고 생각합니다. Object는 HTML5 표준에 있지만 Object에는 기능과 embed 태그를 분리하기 위해 더 이상 사용되지 않는 많은 기능 (속성)이 있습니다. w3schools.com/tags/tag_object.asp 객체 태그는 거의 '스위스 군용 나이프'태그 인 반면 임베드는 콘텐츠를 페이지에 임베드하기 위해 제작 된 것 같습니다.
cmaynard

5

다른 옵션들 :

<object type="application/pdf" data="filename.pdf" width="100%" height="100%">
</object>

<object type="application/pdf" data="#request.localhost#_includes/filename.pdf" 
        width="100%" height="100%">
  <param name="src" value="#request.localhost#_includes/filename.pdf">
</object>

3

크로스 브라우저와 호환되지 않지만 (예 : 크롬 또는 안드로이드에서 작동하지 않을 수도 있고 아마도 다른 것-> 대신 다운로드하라는 메시지 표시) iframe 방법을 사용할 수도 있습니다. dataURL 및 일반 URL에서 작동하지만 다른 예제가 dataURLS와 작동하는지 확실하지 않습니다 (다른 예제가 dataURLS와 작동하는지 알려주세요).

 <iframe class="page-icon preview-pane" frameborder="0" height="352" width="396" src="data:application/pdf;base64, ..DATAURLHERE!... "></iframe>

3

웹 페이지에서 pdf를 표시하는 가장 좋은 크로스 브라우저 솔루션은 Mozilla PDF.js 프로젝트 코드를 사용하는 것입니다. node.js 서비스로 실행하여 다음과 같이 사용할 수 있습니다.

<iframe style="width:100%;height:500px" src="http://www.mysite.co.uk/libs/pdfjs/web/viewer.html?file="http://www.mysite.co.uk/mypdf.pdf"></iframe>

pdf.js 사용 방법에 대한 튜토리얼은이 ejectamenta 블로그 기사 에서 찾을 수 있습니다.


1

Embed는 표준 태그가 아니지만 객체입니다. 여기 기사 는 상황이 그렇게 간단하지 않다 보이기 때문에 좋아 보이는 당신을 도울 것이라는 점은. PDF 예제가 포함되어 있습니다.


12
Embed는 적어도 HTML5에서는 나에게 매우 표준적인 것 같습니다 .
kapa

6
@ bažmegakapa 이제 HTML5에서는 확실히 표준이지만, 그가 언급 한 기사는 2008 년에 다시 쓰여졌으며 그의 대답은 2009 년에 작성된 것으로 HTML5 이전의 것입니다.
b1nary.atr0phy

2
@ b1naryatr0phy 그렇기 때문에 댓글을 추가했습니다. 그는 더 이상 관련이 없으므로 향후 방문자에게 도움이되지 않으므로 내 견해에서 답변을 업데이트하거나 제거해야합니다.
kapa
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.