PDF를 다운로드 없이 바로 열도록 기본 설정 변경

현재 PDF의 핵심 처리는 다운로드를 통해 이루어집니다:

allaboutcats.pdf (42.2 KB)

이 방식은 매우 기능적이지만, 가장 일반적인 사용 사례인 "지금 이걸 읽고 싶다"에 대해 몇 가지 불필요한 단계를 추가합니다. 특히 모바일 기기에서 그렇습니다.

무언가를 다운로드/저장해야 하는 필요성은 매우 부차적입니다. 때로는 필요하지만, 보통 사용자는 그냥 읽고 넘어가기를 원합니다.

Inline PDF Previews TC는 데스크톱에서 인라인 PDF를 서빙함으로써 이 문제를 해결하며, 이를 매우 우아하게 수행합니다. 그러나 다음 일반적인 상황들은 놓치고 있습니다:

  1. 모바일 기기에서의 PDF
  2. 여러 개의 PDF (시각적 혼란으로 인해)
  3. 전체 브라우저 탭에서 PDF 보기

참고로, PDF를 다운로드하는 다른 경로들이 있습니다. 링크를 직접(우클릭/컨텍스트 메뉴를 통해) 다운로드하거나, 이 TC가 서빙하는 브라우저 기반 PDF 뷰어 내에서 다운로드할 수 있습니다.

제안: 기본적으로 브라우저에서 PDF 열기

이 작은 조정으로 이 두 가지 상황을 훌륭하게 해결할 수 있으며, Discourse의 다른 링크에 대한 기본 동작에 단순히 맞출 수 있습니다. 따라서 제안된 변경 사항에 따라:

  1. 모바일의 PDF 링크는 일반적으로 동일한 브라우저 창에서 열립니다.
    • 탭 한 번으로 보기 가능
  2. 데스크톱의 PDF 링크(즉, 인라인 PDF 위)는 새 탭에서 열립니다.
    • 클릭 한 번으로 전체 탭 보기 가능
  3. 인라인 동작이 의도적으로 억제된 경우(링크 텍스트에 공백을 추가하여)
    • 클릭 한 번으로 보기 가능

이 내용을 이 PR에 정리했습니다:

4개의 좋아요

팀에서 누군가 이 PR을 @david 님과 함께 검토해 주실 수 있을까요?

코드 자체에 대한 코멘트를 PR에 남겼습니다

이 링크를 클릭하면 브라우저에서 PDF가 열립니다. 다운로드되지 않습니다. 다른 현상을 보고 계신 건가요?

저는 macOS에서 Chrome을 사용하고 있습니다. Meta에서는 이 d-pdf-previews 테마 구성 요소를 사용하지 않고 있습니다.

2개의 좋아요

여기 meta.discourse.org에서는 위의 링크가 이 페이지와 동일한 탭에서 열립니다(질문자님이 설명하신 것과 동일하게요). safe-mode에서도 변하지 않습니다.

하지만 최근에 업데이트한 사이트 세 곳에서는(TC 비활성화 상태) 다운로드를 시도합니다. safe-mode에서도 마찬가지입니다. 그 이유를 알 수 없습니다. 이 동작을 제어하는 사이트 설정을 전혀 찾을 수 없습니다.

어떤 이유든, 제 포크는 제 사이트에서 이 문제를 잘 해결합니다!

이건 도무지 이해가 안 됩니다!!

1개의 좋아요

코어에서 이 불일치를 수정할 수 있는지 확인해 보겠습니다. 진행 상황은 여기서 업데이트하겠습니다.

2개의 좋아요

지금까지 어떤 진전이 있나요?

1개의 좋아요

진행 중인 작업이 있습니다. Hopefully 향후 몇 주 안에 배포할 수 있을 것입니다. 로컬 업로드, S3, S3 호환, CDN 사용, CDN 미사용 등 다양한 상황을 검증해야 하기 때문에 다소 까다롭습니다.

4개의 좋아요

오늘 갱신된 사이트의 특정 주제에 업로드한 PDF 파일을 확인해 보았는데, 참고로 PDF 링크를 클릭하면 브라우저에서 CDN의 PDF URL이 열립니다.

2개의 좋아요

SECURITY: Download allowlist for uploaded files · discourse/discourse@9c0642a · GitHub 커밋 이후로 이 문제는 해결되었어야 합니다.

이제 '인라인’으로 표시될 파일을 결정하는 로직이 중앙 집중화되었습니다. 이를 통해 PDF 파일은 일관되게 인라인으로 표시되고, 안전하지 않은 일부 파일 유형은 일관되게 다운로드 파일로 제공됩니다. 이러한 변경 사항은 모든 유형의 업로드 저장소(로컬 및 S3, CDN 사용 여부와 관계없이)에서 작동해야 합니다.

5개의 좋아요

이 주제는 9일 후 자동으로 닫혔습니다. 더 이상 새 답변을 작성할 수 없습니다.

David, 방금 이 부분을 테스트해 봤는데 - 데스크톱에서는 확실히 수정된 것 같지만, 모바일에서는 그렇지 않은 것 같습니다.

모바일에서 PDF 링크를 클릭하면 다운로드가 시작되는데(이건 원치 않는 동작입니다). TC가 설치되어 있든 없든, 데스크톱과 동일하게 브라우저에서 바로 열리기를 원합니다.

설치 환경(S3? CDN?)과 모바일 기기 운영체제에 대해 좀 더 자세히 설명해 주실 수 있나요?

여기서 OP의 PDF를 iPhone으로 클릭해 보면 인라인으로 정상적으로 열립니다.

1개의 좋아요

mp4 파일은 어떻게 되나요? 대부분의 웹사이트에서는 mp4 링크를 클릭하면 브라우저에서 자연스럽게 재생되지만, 디스코urs에서는 그렇지 않아서 다소 번거롭습니다 :slight_smile:

예시: https://unicyclist.com/uploads/default/original/3X/4/f/4fb882b8ca5a0b0e3d75ff932506d57325f5582c.mp4

기대되는 동작: https://d.canapin.dev/uploads/default/original/2X/4/4fb882b8ca5a0b0e3d75ff932506d57325f5582c.mp4

이론적으로 mp4 파일은 인라인으로 서빙되어야 합니다:

이것은 다음을 사용합니다:

이것을 어떻게 구현하셨나요? 즉, unicyclist.com과의 차이점은 무엇인가요?

구분을 명확히 설명했어야 했는데 죄송합니다. 후자는 플러그인을 사용합니다: Discourse Video Inline

메타에서 디스코스는 mp4 다운로드를 강제합니다: https://global.discourse-cdn.com/meta/original/4X/3/f/0/3f09f895d21cf0ae897d90c947abb816830b00a2.mp4

2개의 좋아요

변경되었습니다!!! 오늘 다시 업데이트를 했는데, 모바일에서 인라인으로 정상적으로 열립니다.

저희 같은 '단순한 셀프 호스터(CDN/S3 없음)'를 위해 무언가를 조정하신 건가요? 아니면 단순한 캐싱 문제였나요?

위에서 링크한 보안 수정 이후로 변경 사항은 없습니다. 처음에 UI를 통해 업그레이드를 했다면 캐싱 문제였을 가능성이 특히 높습니다. 이제 완전한 재빌드를 수행했다면 NGINX 캐시가 초기화되었을 것입니다. 이제 정상 작동한다고 해서 기쁩니다!

mp4 문제에 대해 새 주제를 열었습니다

3개의 좋아요

이 주제는 3일 후 자동으로 닫혔습니다. 새로운 답변은 더 이상 허용되지 않습니다.