PDFãã¡ã€ã«ãžã®ãªã³ã¯ïŒ
default.pdf
æ§æïŒ
åé¡ãåçŸããæé ïŒ
æåŸ
ãããåäœã¯äœã§ããïŒ ïŒã¹ã¯ãªãŒã³ã·ã§ãããè¿œå ïŒ
äœãæªãã£ãã®ãïŒ ïŒã¹ã¯ãªãŒã³ã·ã§ãããè¿œå ïŒ
ãã¹ãŠã®ãã¥ãŒã§å€§éã®ããŠã³ããŒããçºçãããããã¯ãŒã«ãŒãç¡å¹ã«ããããšã¯ã§ããŸããã
ãã®éšåã説æããŠããããŸããïŒ
getDocumentãè€æ°å䜿çšããå Žåã¯ãåäžã®PDFWorkerã€ã³ã¹ã¿ã³ã¹ã䜿çšããŠãã ããã ãã©ã³ããç Žæããåå ãç¹å®ããã®ã¯é£ããã§ãããå®éã®äŸãžã®ãªã³ã¯ããããšãããçšåºŠã®å ãåœãŠãããå¯èœæ§ããããŸãã åé¡ã®åå ãšãªãäŸãäœæ/å ¬éã§ããŸããïŒ
ããããŸããããªã³ã¯ãç°¡åã«å ¬éããããšã¯ã§ããŸããã ã¯ãŒã«ãŒãæå¹ã«ããŠå®è¡ãããšã100ïŒ æ©èœããŸãã ç¡å¹åãã©ã°ãèšå®ãããšãäžèšã®åé¡ãã©ã³ãã ã«çºçããŸãããããã4ã€ã®ã€ã³ã¹ã¿ã³ã¹ã1ã€ãããŸãã
ã¯ãŒã«ãŒãç¡å¹ã«ãããçç±ãã詳ãã説æããããšã§ããã¯ãŒã«ãŒãæå¹ã«ããã ãããšããå¿çãé¿ããŠããŸãããã€ãŸãã倧éã®å°ããªPDFãããªãé«éã«è¡šç€ºããpdf_worker.jsã®1.2MbããŠã³ããŒããè¿œå ããŸãããåãã£ã¹ãã¬ã€ã¯å®çšçã§ã¯ãããŸããã Webã¯ãŒã«ãŒã®ã³ãŒãã調ã¹ãŠãã¯ãŒã«ãŒãåŒã³åºããã.jsã¹ã¯ãªããããã£ãã·ã¥ãããªãã·ã§ã³ããããã©ããã確èªããŸããããäœãèŠã€ãããŸããã§ããã
ç§ã®æåã®æšæž¬ïŒå¹æã«åºã¥ãïŒã¯ãã€ã³ã¹ã¿ã³ã¹ããšã«ã¹ã¯ãªãããããŒãããããšæ£ããã¯ãªã¢ãããã°ããŒãã«ã¹ã³ãŒããæã€ãã®ãã©ããã«ãããã¹ã¯ãªããåãããã¯ãŒã«ãŒãç¹°ãè¿ãåå©çšãããšåé¡ãçºçãããšãããã®ã§ãã ãã ããïŒïŒïŒæåã®PDF衚瀺ã§åé¡ãçºçããå¯èœæ§ããããããäœãèŠãã¹ããããããªãã®ã§å°ãè¿·ã£ãŠããŸãã
ã¯ãŒã«ãŒãç¡å¹ã«ãããçç±ãã詳ãã説æããããšã§ããã¯ãŒã«ãŒãæå¹ã«ããã ãããšããå¿çãé¿ããŠããŸãããã€ãŸãã倧éã®å°ããªPDFãããªãé«éã«è¡šç€ºããpdf_worker.jsã®1.2MbããŠã³ããŒããè¿œå ããŸãããåãã£ã¹ãã¬ã€ã¯å®çšçã§ã¯ãããŸããã
@oddjobzç§ã¯ãŸã æžå¿µãç解ããŠããŸããã ç¡å¹åãããã¯ãŒã«ãŒã䜿çšãããšãpdf.worker.jsã_ãŸã _ããŠã³ããŒãããŸãããã¡ã€ã³ã¹ã¬ããã§çºçããŠããŸãã WebãµãŒããŒã§é©åã«ã»ããã¢ãããããšãéçjavascriptãã¡ã€ã«ããã£ãã·ã¥ã§ããè¿œå ã®äœæ¥ãªãã§ãªã¯ãšã¹ãããšã«1.2Mbã®ããŠã³ããŒããåé¿ã§ããŸãã PDFWorkerã¯ãWebã¯ãŒã«ãŒã®ã€ã³ã¹ã¿ã³ã¹ãåäžã®ããŒãžã«ãã£ãã·ã¥ããã®ã«åœ¹ç«ã¡ãŸãïŒããšãã°ãè€æ°ã®getDocumentsãå®è¡ãããå ŽåïŒã
ãã®åé¡ããœãªã¥ãŒã·ã§ã³ã®ã³ãŒããªãã§å®äºãããã©ããã¯ããããŸãããããã©ã«ãã§ã¯ãPDF.jsã¯ãæšæºã®ãã©ãŠã¶ãŒãåããæšæºã®WebãµãŒããŒïŒããã©ã«ãã®æ§æïŒã§äœ¿çšãããšãWebã¯ãŒã«ãŒã®ã³ãŒãããã£ãã·ã¥ããŸãã
ããŠãç§ã䜿çšããŠããã³ãŒããšããªããæã£ãŠããã³ãŒãã®éãã¯ããããŸããããã©ããã«éãããããŸãã ãŸããã¯ãŒã«ãŒãç¡å¹ã«ãããšãpdf_worker.jsã¯æåã®ããããã®ã¿ãã§1åããŒããããŸãã ã¯ãŒã«ãŒãæå¹ã«ãããšãæ°ããããã¥ã¡ã³ãããšã«ã³ãŒããèªã¿èŸŒãŸãããã£ãã·ã¥ã«åœ±é¿ãäžããããšã¯ãªãããã§ãã ïŒã€ãŸãããã£ãã·ã¥ãããŠããŸããïŒChromeéçºè ãWebã¯ãŒã«ãŒãšãã£ãã·ã¥ãããã³ãŒãã«åé¡ãæ±ããŠããããããã£ãã·ã¥ããªãã«ããã®ã§ã¯ãªãããšæããŸãã ç§ãèŠãéãããã¹ãŠã®ããããŒã¯ãã£ãã·ã¥çšã§ããã¯ãã§ããããã£ãã·ã¥ã¯çºçããŠããŸããã ïŒä»ã®ãã®ã¯ãã£ãã·ã¥ãããŸããïŒ
é¢é£ãããããã3ã€ãããŸãã
aã ã¹ã¯ãªããã¿ã°ä»ãã®ã¡ã€ã³ã³ãŒããããã¯
bã ã°ããŒãã«å€æ°ãèšå®ãããªã³ããŒã
cã PDFãDIVã«è¡šç€ºããã¹ã¿ã³ãã¢ãã³ã¯ã©ã¹
ã¡ã€ã³ã³ãŒããããã¯;
<script type="text/javascript" src="js/compatibility.js"></script>
<script type="text/javascript" src="js/pdf.js"></script>
ãªã³ããŒãã³ãŒã;
PDFJS.disableWorker = true;
PDFJS.verbosity = PDFJS.VERBOSITY_LEVELS.debug;
PDFJS.workerSrc = "/js/pdf.worker.js";
ã¯ã©ã¹å®çŸ©;
JS.require('JS.Class',function(Class) {
CLASS.PDFViewer = new Class({
locked : false,
page : 0,
pages : 0,
pdf : null,
doc_id : null,
initialize: function(prefix) {
this.canvas = prefix+'-canvas'; // Canvas element ID we'll be rendering to
this.prefix = prefix;
this.id_page = '#'+this.canvas+'-page'; // Ident of page number
this.id_pages = '#'+this.canvas+'-pages'; // Ident of page count
this.setfocus(null); // Element to focus after render
},
reset: function() { this.now_showing = null; console.log("PDF Reset")},
set: function(doc_id) { this.doc_id = doc_id; console.log("Docid:",doc_id) },
load: function() { this.fetch(this.doc_id); },
set_doc: function() {},
setfocus: function(field_id) { this.focuson = field_id; },
decode: function(base64) {
var raw = atob(base64);
var uint8Array = new Uint8Array(raw.length);
for (var i = 0; i < raw.length; i++) {
uint8Array[i] = raw.charCodeAt(i);
}
return uint8Array;
},
full_screen: function() {
if( $('#'+this.prefix+'-hide-me').is(':visible') ) {
$('#'+this.prefix+'-hide-me').hide();
$('#'+this.prefix+'-full-screen').removeClass("col-sm-7");
$('#'+this.prefix+'-full-screen').addClass("col-sm-12");
} else {
$('#'+this.prefix+'-hide-me').show();
$('#'+this.prefix+'-full-screen').removeClass("col-sm-12");
$('#'+this.prefix+'-full-screen').addClass("col-sm-7");
}
this.turn_page();
},
focus: function() {
if(this.focuson) {
console.log("SetFocus>>",this.focuson);
setTimeout("$('"+this.focuson+"').focus()",100);
this.focuson = null;
}
},
display: function(pdf) {
this.pdf = pdf;
$(this.id_pages).text(this.pdf.numPages);
this.pages = this.pdf.numPages;
this.page = 1;
this.turn_page();
},
fetch: function(rid) {
if(this.locked) return false;
var self = this;
var src = '/images/default.pdf';
function success(data) {
if(!LIB.check_error(data)) return false;
if(data.pdf) src = self.decode(data.pdf);
self.locked = true;
PDFJS.getDocument(src).then(function(pdf){ self.display(pdf); });
return true;
}
ionman.call('nac.rpc.pdf_spec',{'rid': rid},success)
return true;
},
turn_page: function() {
var self = this;
self.pdf.getPage(self.page).then(function(page) {
var canvas = document.getElementById(self.canvas);
var ctx = canvas.getContext('2d');
var unscaledViewport = page.getViewport(1.0);
canvas.width = $('#'+self.canvas).width();
var scale = canvas.width / unscaledViewport.width;
var viewport = page.getViewport(scale);
canvas.height = viewport.height;
var renderContext = { canvasContext: ctx, viewport: viewport };
page.render(renderContext).promise.then(function(){
setTimeout(function(){
self.locked = false;
self.focus();
},250);
});
$(self.id_page).text(self.page);
});
},
next: function() {
if( this.page == this.pages) return;
this.page += 1;
this.turn_page();
},
prev: function() {
if( this.page == 1) return;
this.page -= 1;
this.turn_page();
}
});
ç§ãã§ã;
var viewer = CLASS.PDFViewer('pdf');
viewer.fetch();
ãããŠãããã©ã«ãã®ããã¥ã¡ã³ãã¯IDãpdf-canvasãã®DIVã§ãã
ãããè©ŠããŠã¿ãŸãããïŒ
PDFJS.getDocument('http://mozilla.github.io/pdf.js/web/compressed.tracemonkey-pldi-09.pdf')
å®è¡ããŸãã³ãŒãã¹ããããã¯åœ¹ã«ç«ã¡ãŸããã å°ããªäŸãã©ããã«ãããã€ããŠãã ããïŒäŸïŒgithubããŒãžïŒ
ã¯ããããããŸãã..ããã¯ç§ã䜿çšããŠããPDF.jsã®ææ°ããŒãžã§ã³ã®ããã§ã..éããåé¡ã§ã¯ãªããšä»®å®ããŠãVarnishãåºåããŠããããããŒãWebãµãŒããŒãšæ¯èŒããŠç¢ºèªããŸããªããã£ãã·ã¥ãããªãã®ããããããŸãã
Chromeéçºè ã¯Webã¯ãŒã«ãŒãšãã£ãã·ã¥ãããã³ãŒãã«åé¡ããã£ãããããã£ãã·ã¥ããªãã«ããã®ã§ã¯ãªãããšæããŸãã
ãããšdisableWorkerãªãã·ã§ã³ã®éã«é¢ä¿ããããŸããã pdf.worker.jsã¯ãtrueãŸãã¯falseã«é¢ä¿ãªãèŠæ±ãããŸãã ãããã£ãŠãåé¡ã¯ãã£ãã·ã³ã°ãšã¯ç¡é¢ä¿ã§ããå¿ èŠããããŸãã
ç°¡åã«ããããã«ãdisableWorkerã¢ãŒãã§ã®ã¡ãã»ãŒãžã³ã°ã®åäœã«é¢é£ããŠãããšæããŸãïŒããã¯å®éã«ã¯ãã¹ããããŠããããã¬ã¬ã·ãŒãã©ãŠã¶ãŒãšãããã°ã®å®¹æãããµããŒãããããã«ã®ã¿äœæãããŠããŸãïŒã åé¡ãèŠããïŒãªã³ã©ã€ã³ã§ã¢ã¯ã»ã¹ã§ããããšãæãŸããïŒãã¹ãã±ãŒã¹ãæå°éã«æããããã«ãåé¡ãçµã蟌ãã®ã«åœ¹ç«ã¡ãŸãã
ããŠãããã¯èå³æ·±ãã§ã..ãããŒèšŒææžïŒãã¹ãåïŒ= localhostïŒã§localhostïŒ8443ã«å¯ŸããŠãã¹ããããšããã£ãã·ã¥ãããŸããã æå¹ãªåçšèšŒææžã䜿çšããŠã©ã€ããµãŒããŒã®ããŒã443ã«å¯ŸããŠãã¹ããããšããã£ãã·ã¥ïŒïŒïŒãå®è¡ãããŸã...ãããã©ãããã°ãããããããããŸãã..å°ãæéãããã°ãããã«ãã¹ããå®è¡ããŸããã次ã«ãWebã¯ãŒã«ãŒãæå¹ã«ããŠãäœãèµ·ãããã確èªããŸãã ïŒããããã©ããã«ãŸã åé¡ããããšæããŸã...ïŒ
ç§ã¯ç§ãä¿¡ããŠãããã©ããå®å šã«ã¯ããããŸãã..ã ããç§ã¯ããã€ãã®ã¹ã¯ãªãŒã³ã·ã§ãããè¿œå ããŸãã...
ãã£ãã·ã¥ãç¡å¹ã«ããããšã¯ééããªããã§ãã¯ãããŠããŸãã...
ïŒWebãµãŒããŒã®æ§æã¯åãã§ãïŒ
ããã§ä»ã«ããã¹ãããšã¯ãããŸããïŒ ç§ãç解ããŠããããšãããããã¯PDF.jsã®ãã°ã®ããã«èãããã®ã§ã¯ãªããã«ã¹ã¿ã å®è£ ã®ãã°ã®ããã«èãããŸãã
ãã®ïŒæç¶çãªïŒïŒå€±æãåçŸã§ãããã¹ãã±ãŒã¹ããããšäŸ¿å©ã§ãã
ããã¯ãã°ã§ãããªã³ã©ã€ã³ãã¢ãäœæããŸãããã³ãŒãã£ã³ã°ãšå°ãæéãããããŸã...
ããã«ã¡ã¯ãç§ã¯åãåé¡ãæ±ããŠããŸãã
ããã«ã¯ã«ã¹ã¿ã ã¯äœãæžãããŠããŸãããGithubãããªããžããªãããŠã³ããŒãããã ãã§ãã
@ subhadip-codecloudsåãåé¡ã¯ãªããšæããŸãã å¥å·ãéããŠãèŠæ±ããã詳现ãæäŸããŠãã ããã
@ subhadip-codecloudsãã®PDFã¯ã©ãã«ãããŸããïŒ åæ§ã®åé¡ãçºçããŠããã®ã§ããã¹ãã±ãŒã¹ãšããŠäœ¿çšããããšæããŸãã
ChromeãæèŒããUbuntuã§åããã©ã³ãã¬ã³ããªã³ã°ã®åé¡ãçºçããŠãããšæããŸãïŒä»ã®ãã©ãããã©ãŒã ã¯ãã¹ãããŠããŸããïŒã ç§ã¯ãã¹ã¿ãŒããææ°ã®pdf.jsã䜿çšããŠããŸãããããŠæã«ã¯PDFã¯@oddjobzã®PDFã®ããã«ãªããŸãããæã«ã¯ããã@ subhadip-codecloudsã®PDFã®ããã«ãªããŸãã ããã¯ã©ã³ãã ãªPDFã§ã©ã³ãã ã«çºçããããã§ãã
äœãæªãã®ããã©ããã£ãŠç¢ºå®ã«åçŸããã®ããããããããŸããã ãã ããããã¯ã·ããªãªã§ãã ç§ã¯Reactã䜿çšããŠãåçãªåäžããŒãžã®Webãµã€ããæ§ç¯ããŠããŸãã ãŠãŒã¶ãŒã¯ã¿ããã¯ãªãã¯ããããšãå€ããããã«ãã£ãŠiframeãäœæãããiframeå ã«pdf.jsã衚瀺ãããŸãã Reactãšç§ã®ãŠã§ããµã€ããæ©èœããæ¹æ³ãèãããšãiframeã¯äœåºŠãäœæãããç Žæ£ãããŸãã ãã°ããæéããããå ŽåããããŸãããæçµçã«ã¯åžžã«ãã©ã³ãã¬ã³ããªã³ã°ãç ŽæããŸãã ãããŠã1ã€ã®PDFã§çºçãããšãä»ã®PDFã§ãã©ã³ãã ã«çºçãå§ããŸãã åžžã«åé¡ãªããã®ãããã°ãããã§ãªããã®ããããŸãã
äœãèµ·ãã£ãŠããã®ããç解ããããã«ãªã³ã«ããããå®è¡ãããã§ãããã®ïŒãããã°ãã©ã°ãªã©ïŒã¯ãããŸããïŒ ã³ã³ãœãŒã«ã«ãšã©ãŒãèŠåã¯è¡šç€ºãããŸããã
ããã¯ãã»ãšãã©ã®å Žåãèµ·åæã«ãã©ã³ãã¬ã³ããªã³ã°ãç ŽæããPDFã§ãã
https://datalanche-sec-public.s3.amazonaws.com/filings/0001047469-15-008315/a2226328zex-31_2.htm.pdf
ããäžã€ã åãURLã§Chromeã§æ°ããã¿ããéããšãPDFãä¿®æ£ãããŸãã ãã ããåãã¿ãã«ãšã©ãŸãããŸã£ããå¥ã®Webãµã€ãã«ç§»åããŠãããïŒæ»ããã¿ã³ã䜿çšããã«ïŒèªåã®Webãµã€ãã«ç§»åãããšããã©ã³ããç ŽæããŠããPDFã¯ãŸã ç ŽæããŠããŸãã äœãèµ·ãã£ãŠããã®ããã¿ãã®ã¡ã¢ãªããã£ãã·ã¥ãç Žå£ããŠããããã«èŠããŸãã
Chromeã®ãã£ãã·ã¥ã®åé¡ã§ããå¯èœæ§ããããŸãïŒè©³çŽ°ã«ã€ããŠã¯ãhttpsïŒ//github.com/mozilla/pdf.js/issues/7751#issuecomment-256683285ãåç §ããŠãã ããïŒã
ããã«é¢ããæŽæ°ã¯ãããŸããïŒ åãåé¡ãæ±ããŠãã
ç§ã¯ãŸã æã ãããïŒäžå¯è§£ã«ïŒèŠãŸãããããã¯éåžžã«ãŸãã§ãããå®éã«ååã«ãŸãã§ãããç§ã¯æ¬åœã«ããã«ã€ããŠå¿é ããã®ããããŸããã ç§ãæ±ããŠãããšæãããåé¡ã¯ãæäœã®éè€ã§ããã å¥ã®æäœããŸã é²è¡äžã®ãšãã«PDFããã¥ã¡ã³ãïŒããšãã°æ¬¡ã®ããŒãžïŒãæäœã§ããããã«ãæãããŸããããããåé¡ã®åå ã®ããã§ãã ç§ã®è§£æ±ºçã¯ããã¹ãŠã®æäœãã¯ã©ã¹ã§ã©ããããŠãããå ¥å£ãšåºå£ã®ãã€ã³ãã«ãã¹ã¿ãŒããã¯ãæ¿å ¥ããŠãPDFé¢é£ã®æäœã競åããªãããã«ããããšã§ãããããã«ãããåé¡ãä¿®æ£ãããããã§ãã pdfã®ãã®ã¯å¥ã®ã¹ã¬ãããŸãã¯ã¯ãŒã«ãŒããã»ã¹ã§å®è¡ããããšæŒ ç¶ãšæ³å®ããŠããããã競åãçºçããå¯èœæ§ããããŸãã å°ãåã®ããšã§ãããã¡ã¢ãªããã¯ã¹ã¬ããåã¯ãªãã·ã§ã³ã ãšæããç¡å¹ã«ããããšã§è§£æ±ºçãèŠã€ããŸãããããã¯ããã©ãŒãã³ã¹ã«æªåœ±é¿ãåãŒããŸããããåé¡ã¯è§£æ±ºããŸããã
ããã¯ãã€ãç§ã«èµ·ãããŸãããããããã¯ç§ããã¹ãã±ãŒã¹ãäœæããããšãã§ããªãã»ã©ååã«ã©ã³ãã ã§ãã ããããç§ã®å Žåãã¹ã¬ããã«ããã¡ã¢ãªç Žæã§ããå¯èœæ§ã¯ååã«ãããŸãããJavascriptã¯ã·ã³ã°ã«ã¹ã¬ããã ãšæããŸãããïŒ
Javascriptã¯ã·ã³ã°ã«ã¹ã¬ããã ãšæããŸãã
ã§ãã @oddjobzã®æå³ïŒïŒïŒã¯ãäžåºŠã«è€æ°ã®HTML5ãã£ã³ãã¹ã«ãã€ã³ããããšãChromeã«ãã°ãçºçããå¯èœæ§ãé«ããšæããŸãã ããããåçŸå¯èœãªãã¹ãã±ãŒã¹ããªããã°ãæšæž¬ããŠChromiumã®ãã°ã«å¯Ÿããæå³ã®ããã¬ããŒããäœæããããšã¯å°é£ã§ãã
ç§ã¯ïŒã¡ã¢ãªããïŒãwebworkersããšåŒã°ããæ°ãããã©ãŠã¶æ©èœã䜿çšãããªãã·ã§ã³ãæ¡çšããŠãããšæããŸããããã«ãããJavaScriptã¹ã¬ãããå¹æçã«äœæã§ããŸãããã®æ©èœããªãã«ããŠããã倧ããªãPDFã衚瀺ããŠã¿ãŠãã ããããã®æ©èœã䜿çšãããŠãããçç±ããåç §ããŠãã ãã... :)
ãWebã¯ãŒã«ãŒããšåŒã°ããæ°ãããã©ãŠã¶æ©èœã䜿çšãããªãã·ã§ã³ãæ¡çšããŠããŸã...
ãã®æ©èœããªãã«ããŠããã倧ããªãPDFã衚瀺ããããšãããšããã®æ©èœã䜿çšãããŠãããçç±ããããããŸãã
OPããã®æ©èœããªãã«ããããã«æ瀺ããŠããããšã«æ³šæããŠãã ãããããã¯ãWebã¯ãŒã«ãŒã䜿çšãããŠããªãããšãæå³ãããã©ãŠã¶ã«è²¬ä»»ãè² ãããJavaScriptã®ãã¹ã¬ããåããšã¯é¢ä¿ãããŸããã
å°ã埮åŠã§ããJavascriptã¯ã·ã³ã°ã«ã¹ã¬ããã§ãããChromeã¯ãã«ãã¹ã¬ããã§ããWebã¯ãŒã«ãŒã䜿çšãããšã2ã€ã®Chromeããã»ã¹ãå®è¡ããŠããããã®éã®éä¿¡ã容æã«ããããšãã§ããŸãã ãã¹ã¿ãŒã ããDOMã¢ã¯ã»ã¹ãååŸãããšæããŸãããUIã¹ã¬ããããããã¯ããããšãªããããã»ããµãéäžçã«äœ¿çšãããã®ã«ãµãã¹ã¬ããã䜿çšã§ããŸãã ç¹å®ã®ã¹ã¬ãããã¿ãã«æ¥ç¶ãããŠããªãWebã¯ãŒã«ãŒãäœæã§ãããšãããŒãžã®ãªããŒãåŸãå¹æçã«åç¶ã§ããïŒã€ãŸããæ°žç¶çã§ããïŒãšãããã«æ¥œãããªããŸãã ããã«èµ·å ããå€ãã®åé¡ãçºçããŠããã®ãããããŸã...
ãã¡ããã§ãããç§ã®ã³ã¡ã³ãã§ã¯ãã¹ã¬ããåãè¡ããªããŠãïŒã€ãŸããç¬èªã®ã¹ã¬ããã¬ãã«ã®ããã¯ãå®è£ ããããšã§ïŒããã®åé¡ã®99ïŒ ã解æ¶ãããŸãã ïŒç§ã®ããã«ïŒã
@ oddjobz ã @ rpedelaã¯ãããŒããŠã§ã¢/ GPUã¢ã¯ã»ã©ã¬ãŒã·ã§ã³ãç¡å¹ã«ããŠãåé¡ãåŒãç¶ãçºçãããã©ããã確èªããŸãã
@yurydelendik ã
@yurydelendik ãç§ã®ã¢ããªã±ãŒã·ã§ã³ã¯6ãæ以äžå ¬éãããŠããŸããæ®ãã®åé¡ããç°ãªãããã®ã§ããããŠãŒã¶ãŒãšã©ãŒãŸãã¯ææå¥åŠãªããã¥ã¡ã³ãã§ããå¯èœæ§ãé«ãããšãå¬ããæããŸãã ç§ãæ±ããŠããåé¡ã¯ãäžè²«æ§ã¯ãããŸããã100ïŒ åçŸå¯èœã§ããããããã¯ãªããªããŸããã ããã¯ïŒIMHOïŒããã¥ã¡ã³ãæäœéã®éãªããã€ãŸããåã®æäœãçµäºããåã«éå§ããããã»ã¹ïŒã¹ã¬ããåã®æç¡ãåã®æäœãçµäºããåã«éå§ããæäœãé²ãããã«æåããã¯ãèšå®ïŒãåå ã§çºçããŸããã ç°¡åã«åçŸã§ããäŸã¯ãããã¥ã¡ã³ãããã°ããåæ¹ã«ã¹ãã£ã³ããåã®ããŒãžã®ã¬ã³ããªã³ã°ãå®å šã«å®äºããåã«ã次ã®ãåŠçãéå§ããããšã§ããã
Javascriptã¯ã·ã³ã°ã«ã¹ã¬ããã§ãããChromeã¯ãã«ãã¹ã¬ããã§ãããWebã¯ãŒã«ãŒã䜿çšãããš2ã€ã®Chromeããã»ã¹ãå®è¡ãããããã®éã®éä¿¡ã容æã«ããŸãã ãã¹ã¿ãŒã ããDOMã¢ã¯ã»ã¹ãååŸãããšæããŸãããUIã¹ã¬ããããããã¯ããããšãªããããã»ããµãéäžçã«äœ¿çšãããã®ã«ãµãã¹ã¬ããã䜿çšã§ããŸãã
ãwebworkerããšããçšèªãå«ããã®ã¹ããŒãã¡ã³ãã¯æ··ä¹±ãæããŸãã äžèšã®ã¹ããŒãã¡ã³ããæ€èšŒããããã®åç §ãæäŸã§ããŸããïŒ Web Workersã¯èšèšäžDOMã«ã¢ã¯ã»ã¹ã§ãããPDF.jsã¯ã¡ã€ã³ã¹ã¬ããã§ãã€ã³ããå®è¡ããŸãã Chromeã®ã¬ã³ããªã³ã°ããã»ã¹ãæå³ããŸããïŒ ããã§ããDOMãæŽæ°ããå¯äžã®æ¹æ³ã¯ãWebã¯ãŒã«ãŒããã§ã¯ãªããã¡ã€ã³ã¹ã¬ããããã§ãã
åã®ãã®ãçµäºããåã«éå§ããããã§ã¹-ã¹ã¬ããåãããã©ãããåã®ãã®ãçµäºããåã«æäœãéå§ãããã®ãé²ãããã«æåããã¯ãå ¥ããŠä¿®æ£ããŸããã
ãã®æèã§ã®ãæäœããšã¯æ£ç¢ºã«ã¯ã©ãããæå³ã§ãããããã¯APIã®render()
åŒã³åºãã®åç¶æéã§ããïŒ
@oddjobzã¹ã¬ãããããäžåºŠèªãã ãšãããããŸããŸãªæéã§ç«¶åããã¹ããŒãã¡ã³ãããããããããŸãã ãŸããæ§æã»ã¯ã·ã§ã³ã競åããŠããŸããããšãã°ãMacOSXã®ã©ã®ãã©ãŠã¶ã§ãããŒã«ã«ã§åçŸã§ããŸããã æšæºã®ãã¥ãŒã¢ïŒã«ã¹ã¿ã ãã¥ãŒã¢ã§ã¯ãªãïŒã§åçŸã§ãããã©ããã¯ãŸã ããããŸããã ä»ã®ã¹ã¬ããåå è ãæ··ä¹±ãããªãããã«ããã®ãã°ãç¡å¹/äžå®å šãšããŠéããŸãã
@oddjobzã@rpedelaã@badamsã@pholismaã@ subhadip-codecloudsãŸãïŒPDFãå«ãïŒåé¡ãåçŸããããšãã§ãããšãã«åé¡ãšæ£ç¢ºãªæé ãçµéšããŠããæ£ç¢ºãªæ§æïŒè€æ°å¯ïŒãšå¥ã®ãã°ã¬ããŒããæäŸããããšãã§ããŸããïŒ ã«ã¹ã¿ã ãœãªã¥ãŒã·ã§ã³ã®å Žåã¯ããããªãã¯ãªã³ã¯ãæäŸããŸãã
ããããŸãããããã¯åé¡ã®ã³ãŒãã§ã-ããªãã¯é©åãªä¿®æ£ãèŠãããšãã§ããŸãã
ç¹ã«ããã¯ã®ããã«ãç§ã¯ãã®ãããªã«ãŒãã³ãæã£ãŠããŸãã
this.locked = true;
PDFJS.getDocument(path+doc_id).then(function(pdf) {
$('#pdf-canvas-pages').text(pdf.numPages);
self.pages = pdf.numPages;
self.page = 1;
self.pdf = pdf;
pdf.getPage(1).then(function(page) { self.turnpage(); });
})
turnpage: function() {
var self = this;
self.pdf.getPage(self.page).then(function(page) {
var canvas = document.getElementById('pdf-canvas');
var ctx = canvas.getContext('2d');
var unscaledViewport = page.getViewport(1);
canvas.width = $('#pdf-canvas').width();
var scale = canvas.width / unscaledViewport.width;
var viewport = page.getViewport(scale);
canvas.height = viewport.height;
var renderContext = { canvasContext: ctx, viewport: viewport };
page.render(renderContext);
$('#pdf-canvas-page').text(self.page);
self.locked = false;
});
},
ã¯ãããããç§ããã®æç¹ã§èŠç¹ãæŒãä»ããªãã£ãçç±ã§ããåé¡ãããããšãåãå ¥ããããšããéåžžã«æ°ãé²ãŸãªãããã§ã-ããã¯èšããŸã§ããªããä¿®æ£ããå¿ èŠããããŸãã
äžèšã®ã¹ããããã®åé¡ã¯ã httpsïŒ//github.com/mozilla/pdf.js/pull/6571ã«ãã£ãŠå¯ŸåŠãããŸãã
ãããšãç§ã¯2016幎åã°ã«ææ°ããŒãžã§ã³ã䜿çšããŠããŸãããããŸã åé¡ããããŸããã åœæïŒç¹°ãè¿ãïŒä¿®æ£ããããšèšãããããšãèŠããŠããããã§ãã ïŒãããŠä»ã®å€ãã®äººã®ããã«ãç§ã¯ãããæããã«ããã§ã¯ãªãã£ãã®ãèŠãããšãã§ããŸããïŒ
ãšã«ãããåãåé¡ãçºçããŠãã人ã¯ãäžèšã®ããã«ããã¯ãæŒã蟌ãã§ãéããçãããã©ããã確èªããŠãã ãã..ãã£ã2è¡ã§ã...
@yurydelendikããã¯ãŠãŒã¶ãŒïŒäž»ã«Windows 7ã䜿çšïŒã§ããªãäžè²«ããŠçºçããŠããŸãããææ°ããŒãžã§ã³ã®OSXã§åçŸã§ããŸãããã100ïŒ äžè²«ããŠããããã§ã¯ãããŸããã
ã«ã¹ã¿ã ã³ãŒãã¯äœ¿çšããã次ã®æé ãå®è¡ããã ãã§ãã
<iframe
style="height: 650px; width: 600px"
src="/path/to/pdfjs/web/viewer.html?file=/path/to/file.pdf"
/>
ããã¥ã¡ã³ãã«ä»ã®å€ªåã®ããã¹ãããããã©ãããåæãºãŒã ã¬ãã«ïŒãºãŒã ã€ã³ããã³ãºãŒã ã¢ãŠããããšä¿®æ£ãããå ŽåããããŸãïŒãªã©ãããã€ãã®èŠå ã«äŸåããŠããããã§ããããã¯ãã¬ãã¥ãŒã«ã®ã¿åœ±é¿ããããšã«ãæ°ã¥ããŸãããå°å·ãããšãpdfãããŠã³ããŒããããšãå®å šã«ã¬ã³ããªã³ã°ãããŠããããã«èŠããŸãïŒpdf.jsãæäŸããããã¡ã€ã«ããŠãŒã¶ãŒã«æž¡ããŠããã ãã ããã ãšæããŸãïŒã
ãã®ãœãªã¥ãŒã·ã§ã³ã䜿çšããã«ãã¡ã€ã«ããŠãŒã¶ãŒã®ãã·ã³ã«çŽæ¥ããŠã³ããŒãããããšã«ããŸããããæšæ¥ã¯ãã§ã«ãã®ãã°ãè¿œããããŠããã®ã§ãåçŸå¯èœãªãã¹ãã±ãŒã¹ãèãåºãããã«å°ãæéãå²ããŠã¿ãŸãã
@badams ã次/åã®ããŒãžãšåæ§ã«ããºãŒã ãä¿®æ£ãããããšã確èªã§ããŸãã ãŸãã倪åã§åé¡ãçºçãããããªã£ãŠãããšããå°è±¡ããããŸããã
åçŸå¯èœãªãã¹ãã±ãŒã¹ãèãåºãããã«å°ãæéãå²ããŠã¿ãŸãã
@badamsã®ãããã§ãå¯çš¿è ãèªåã®ã³ã³ãã¥ãŒã¿ãŒã§åé¡ãåçŸããããšããŠãããšãã«ãã¹ãŠã®ããªãšãŒã·ã§ã³ããšããã®ã¯ãã¹ãŠæ©èœãããªã³ã©ã€ã³ã§å ¬éãããå®å šãªäŸãæãå¹æçã§ãïŒå®å šãªäŸã¯githubãªããžããªã®gh-pagesãã©ã³ãã§å ¬éã§ããŸãïŒã
ããã«ã¡ã¯ãã¿ããªã
ç§ã¯ãã®å
šäœã®è©±ãæ£ããç解ããŠããŸããã§ããã
ãã§ã«ä¿®æ£ã¯ãããŸããïŒ ãŸãã¯ç§ããã¹ãããçš®ã®å®è£
ïŒ
ããããã
ã¿ã«ã·ã·ãªãã¬ã€ã©
ç§ã¯ãã®å šäœã®è©±ãæ£ããç解ããŠããŸããã§ããã
ç§ã¯èª°ãããããªããšæããŸãã
ãã®ã¹ã¬ããã¯ãåé¡ãåçŸããããã®æ£ç¢ºãªæé ãæäŸããŠããªãããïŒããã³ã³ã¡ã³ãå ã®èª€è§£ãæãæšå¥šäºé ã®ããïŒãéããããŸããã åé¡ã100ïŒ åçŸå¯èœã§ãããšã¯æåŸ ããŠããŸããããå°ãªããšã10åã«1åã¯çºçããããã«ããããšã¯çŽ æŽãããããšã§ãã
PDF.jsããã®ããã«å®è¡ãããããã³ãŒãã«ãã°ãçºçãããããå¯èœæ§ã®ããé ç®ïŒ
FWIW pdf.jsïŒv1.7.376ïŒã®ãããã€ã§ããŸããªç¶æ³ã§ãã®ç ŽæãçºçããŠããŸãã ç¯å²ãªã¯ãšã¹ãã®åŠçã¯æ£ããããã§ãã ä¿¡é Œã§ããåçŸæé ãèŠã€ãã£ããå ±åããŸã...
ãã®åé¡ã¯Chromeã§ã®ã¿çºçãããºãŒã ãå€æŽãããšæ¶ããŸãã ãã®ããã showPreviousViewOnLoad
ãfalse
ããŸãããããã®åé¡ã¯äºåºŠãšçºçããŸããã§ããã
@TZanke showPreviousViewOnLoad
ãåé€ãããšãºãŒã ãå€ããçç±ãæ確ã«ã§ããŸããïŒ ããããšãïŒ
@tonyjin pdf.js autozoomã¯ãºãŒã å€ãèšç®ãããããããŒã«ã«ã¹ãã¬ãŒãžã«ä¿åããŸãã ããŒãžããªããŒãããåŸãèªåãºãŒã ã¯äœ¿çšãããã代ããã«ä»¥åã«èšç®ããããºãŒã å€ã䜿çšãããŸãã ãŸãããã®å€ã®åèªã¿èŸŒã¿ã«åé¡ãããããã§ãã
ãããã£ãŠã showPreviousViewOnLoad
ç¡å¹ã«ãããšãèªåãºãŒã æ©èœãæ¯åèµ·åããããŒãžãæ£ãããºãŒã ãããã¬ã³ããªã³ã°ã®åé¡ã¯çºçããŸããã
@ TZanke-ç§ã¯ããªãã®ã¢ãããŒããè©ŠããŸããããæ®å¿µãªãããåé¡ã¯ãŸã æã ãããã¢ããããŸã.. :(