요즘 브라우저에서 pdf 출력을 대부분 지원하고, 게다가 미디어위키에서도 Printable version을 눌러서 pdf를 출력할 수 있기 때문에, 굳이 이런 확장이 필요한지는 의문입니다. 반면에, Extension:Collection과 같이 여러 문서를 연결해서 책을 만드는 확장은 필요해 보입니다.
아래의 내용은 이전 EletronPdfService에 관련된 내용입니다. 현재 위키미디어 재단은 Proton이라는 이름으로 개발이 되고 있으며, 그것은 Puppeteer 라이브러리에 의해 구동된 Chromium을 사용하여 PDF를 생성하는 서비스입니다.
아래의 과정으로 설치하고, 설정할 수 있습니다.
- git clone https://github.com/wikimedia/mediawiki-services-chromium-render
- cd mediawiki-services-chromium-render
- npm install
- vi config.yaml
executablePath: '/usr/bin/chromium'으로 되어 있지만, 이름이 다를 수 있습니다. 이 부분을 현재 시스템에 설치된 크로미엄의 바이너리 이름으로 수정하거나, /usr/bin/chromium-browser를 chromium으로 심볼릭 링크를 만들어야 합니다.
그런-다음 시작 스크립트를 만들어서 자동으로 서비스가 실행되도록 만듭니다.
- sudo useradd --home=/var/lib/proton -M --user-group --system --shell=/usr/sbin/nologin -c "Proton for MediaWiki" proton
- sudo mkdir -p /var/lib/proton
- sudo chown proton:proton /var/lib/proton
- cd ..
- sudo mv mediawiki-services-chromium-render /usr/local/lib/proton
- sudo chown -R root:root /usr/local/lib/proton
시작 스크립트는 RESTBase/Installation에 있는 것을 이름만 바꾸어서 사용할 수 있습니다.
그런-다음 RESTBase에서 서비스를 동록하는데, 포트는 3030입니다. 이것은 config.fullstack.test.yaml 파일을 참조하십시오.
- cd /usr/local/lib/restbase/v1
- sudo nano pdf.yaml
여기서 {{domain}}을 그대로 두면, 정상적인 동작을 하지 않고, 자신의 도메인을 직접 적어야 동작을 합니다. 예를 들어, 이 서버는 dawoum.duckdns.org으로 변경해야 동작을 합니다. 최근에는 이 사항을 적용하지 않아도 출력이 됩니다. 확인하십시오!!
- sudo systemctl daemon-reload
- sudo systemctl restart restbase
- sudo systemctl start proton
- sudo systemctl enable proton
그런-다음, 미디어위키의 LocalSettings.php에 다음을 추가합니다.
wfLoadExtension( 'ElectronPdfService' );
하지만, 설정을 완전하지 않은지, 영문 위키피디아, 즉, 크로미엄에서 랜더링한 것과 다르게 출력됩니다. 알려주세요!!
참고사항
간혹 서비스가 실행되지 않는 문제가 발생할 수 있습니다. 아래와 같이 처리하십시오.
- node server.js
이 명령을 실행하면, 서비스가 실행되지 않는 문제를 알 수 있습니다:
- npm install merge
Problems
sub-domain 항상 sub-domain이 "M" (모바일)로 인식되는 문제가 있습니다. 여백 영문 위키피디아와 여백이 다르게 적용됩니다. 숨김 아래에 출력되지 않아야 할 것이 추가되어 출력됩니다.
Old
ElectronPdfService 확장은 브라우저 기반 PDF 렌더링을 위해 Electron Service에 대한 액세스를 제공합니다. (Electron Service는 반드시 별도로 설치해야 합니다.)
Description
확장은 RESTBase API endpoint를 통해 Electron Service에 편리하게 액세스할 수 있게 해 줍니다. Electron Service는 기존 OCG/LaTeX 렌더링 대신 위키 페이지에 새로운 렌더링 방법을 제공합니다. Electron Service는 생성된 PDF가 모든 테이블을 포함하고 마찬가지로 이전 방법으로는 불가능한 인포박스와 다른 템플릿을 랜더링하는 것을 포함한다는 것입니다. 확장 및 서비스에 대한 동기 부여의 배경에 대해 자세히 읽어보십시오.
그리고 여기 예제가 있습니다: PDF for the article about Berlin
Installation
- RESTBase API endpoint에 노출된 Electron Service 설치 및 구성하기
- 서비스 설치 안내서를 따르십시오. 그리고 http://yourhost:port/pdf?accessKey=yourkey&url=https://de.wikipedia.org/wiki/Berlin을 사용하여 올바른 작동 여부를 확인하십시오.
- https://github.com/wikimedia/restbase 를 설치하시고, config.example.wikimedia.yaml와 비슷하게 설정을 하십시오. 여러분의 호스트 및 포트를 반영하도록 pdf 서버 URL을 조정하십시오.
미디어위키 확장 내려받기 지면에서 해당 판을 내려받아서 정해진 위치로 이동시킵니다.
미디어위키 설정 LocalSettings.php에 다음을 추가합니다:
wfLoadExtension( 'ElectronPdfService' );
$wgElectronPdfServiceRESTbaseURL = '/api/rest_v1/page/pdf/';
Special:Version에 접근해서 확장이 정상적으로 설치가 되었는지 확인을 합니다.
Direct access
우분투 18.04에 설치할 때, 먼저 Electron Render Service를 설치/설정한 후에, 다음과 같이 미디어위키에 설정을 해야 접근이 가능합니다:
wfLoadExtension( 'ElectronPdfService' );
$wgElectronPdfServiceRESTbaseURL = "http://dawoum.duckdns.org:3000/pdf?accessKey=secret&url=http://dawoum.duckdns.org/wiki/";
또한, 외부에서 접근하기 위해서는 방화벽에서 3000 포트를 열어주어야 합니다.
- sudo ufw allow 3000/tcp
via RESTBase
만약, Electron Render Service를 RESTBase를 통해 서비스가 되도록 설정했다면, 설정을 아래와 같이 바꿉니다.
wfLoadExtension( 'ElectronPdfService' );
$wgElectronPdfServiceRESTbaseURL = "/api/rest_v1/page/pdf/";
이때에는 방화벽을 열지 않아도 되기 때문에, 열어 두었던 포트를 삭제합니다.
- sudo ufw delete allow 3000/tcp
RESTBase를 1.0으로 올린 후에, URL 경로가 /localhost/v1으로 고정되어 위의 옵션을 추가하더라도 경로가 바뀌지 않습니다. 다시 말해서 웹에서 잘못된 경로로 접근해서 Not found를 뿌립니다.
Usage
- 한번 확장이 설치되면, 미디어위키 Sidebar에 있는 "Download as PDF" 링크를 통해 새로운 선택 화면으로 여러분을 이끌 것입니다. 이 시스템에서는 상단바에 Print/export를 클릭하면 "Download as PDF" 링크가 보입니다.
- 선택 화면에서 Electron ("Single Column")을 사용하여 PDF를 렌더링할지 이전 OCG/LaTeX 랜더러 ("Two Column")를 사용하여 PDF를 렌더링 할지를 선택할 수 있습니다. 이 시스템에서는 이전 방법은 선택 가능하지 않습니다.
- 원하는 렌더링 방법을 선택한 다음 "Download" 버튼을 클릭하여 PDF를 가져옵니다.
- 참고: 만약 위키에서 사용할 수 있는 다른 렌더링 방법이 없으면, "Download as PDF"는 선택 화면을 표시하지 않고 Electron 렌더링된 PDF를 즉시 제공합니다. 이것은 브라우저에 따라 조금씩 차이가 있습니다.
Troubleshootings
- 일부 하이퍼링크가 PDF에 출력되는 경우가 있습니다. 이 시스템에서만 발생하는 문제로 보이기 때문에 수정되어야 합니다. 이 문제는 해결되지 않았습니다. : resources/src/mediawiki.legacy/commonPrint.css에서 Expand를 전부 제거해서 확인 중입니다.
Links
See also
- mw:PDF export - summary of all PDF export extensions