Register Register Member Login Member Login Member Login Forgot Password ??
PHP , ASP , ASP.NET, VB.NET, C#, Java , jQuery , Android , iOS , Windows Phone
 

Registered : 109,037

HOME > PHP > PHP Forum > php codeigniter ปัญหาการแสดงไฟล์ PDF บนอุปกรณ์ต่างๆ



 

php codeigniter ปัญหาการแสดงไฟล์ PDF บนอุปกรณ์ต่างๆ

 



Topic : 137197



โพสกระทู้ ( 48 )
บทความ ( 0 )



สถานะออฟไลน์




<object data="<?php echo base_url();?>doc/<?php echo $row['s_file'];?>" type="application/pdf" width="100%" height="800 px;"></object>

ใช้ object แสดงผลไฟล์ PDF แบบนี้ ในเบราว์เซอร์ Chrome, Edge, Firefox ทั่วไปไม่มีปัญหา แต่ถ้าเปิดใน iPad Pro, Air หรือ Samsung G 20S พวกนี้ไม่มีอะไรขึ้นเลย เป็นหน้าขาวๆ ว่างเปล่า ไม่มีเออเร่ออะไรบอกด้วย ใครเคยเจอปัญหานี้รบกวนขอแนวทางแก้ไขหน่อยครับ



Tag : PHP, PDF, iOS, Android, iPad, CodeIgniter







Move To Hilight (Stock) 
Send To Friend.Bookmark.
Date : 2024-05-27 14:37:49 By : comsc006 View : 234 Reply : 4
 

 

No. 1



โพสกระทู้ ( 4,756 )
บทความ ( 8 )



สถานะออฟไลน์


ลองทั้งสอง
https://stackoverflow.com/a/28582794/128761

https://stackoverflow.com/a/18432886/128761






แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2024-05-27 16:56:21 By : mr.v
 


 

No. 2



โพสกระทู้ ( 48 )
บทความ ( 0 )



สถานะออฟไลน์


ตอบความคิดเห็นที่ : 1 เขียนโดย : mr.v เมื่อวันที่ 2024-05-27 16:56:21
รายละเอียดของการตอบ ::
ไม่ได้เหมือนกันครับ ตอนนี้แก้ไขโดยการเช็คจากอุปกรณ์เอาครับ
Code
<?php
$this->load->library('Browser');
$this->load->library('user_agent');
// Example usage of the modified platform method
$platform = $this->agent->platform();
$browser = new Browser();
if( $browser->getBrowser() == Browser::PLATFORM_IPAD OR $browser->getBrowser() == Browser::PLATFORM_IPHONE OR $platform=='Mac OS X' OR $platform=='This iOS Platform' ) {
?>
<script type="module">
// If absolute URL from the remote server is provided, configure the CORS
// header on that server.
var url = '<?php echo base_url();?>File_document/<?php echo $row['Send_file'];?>';

// Loaded via <script> tag, create shortcut to access PDF.js exports.
var { pdfjsLib } = globalThis;

// The workerSrc property shall be specified.
pdfjsLib.GlobalWorkerOptions.workerSrc = '<?php echo base_url();?>assets/js/pdfjs/build/pdf.worker.mjs';

var pdfDoc = null,
pageNum = 1,
pageRendering = false,
pageNumPending = null,
scale = 1.5,
canvas = document.getElementById('the-canvas'),
ctx = canvas.getContext('2d');

/**
* Get page info from document, resize canvas accordingly, and render page.
* @param num Page number.
*/
function renderPage(num) {
pageRendering = true;
// Using promise to fetch the page
pdfDoc.getPage(num).then(function(page) {
var viewport = page.getViewport({scale: scale});
canvas.height = viewport.height;
canvas.width = viewport.width;

// Render PDF page into canvas context
var renderContext = {
canvasContext: ctx,
viewport: viewport,
background: 'rgba(0,0,0,0)'
};
var renderTask = page.render(renderContext);

// Wait for rendering to finish
renderTask.promise.then(function() {
pageRendering = false;
if (pageNumPending !== null) {
// New page rendering is pending
renderPage(pageNumPending);
pageNumPending = null;
}
});
});

// Update page counters
document.getElementById('page_num').textContent = num;
}

/**
* If another page rendering in progress, waits until the rendering is
* finised. Otherwise, executes rendering immediately.
*/
function queueRenderPage(num) {
if (pageRendering) {
pageNumPending = num;
} else {
renderPage(num);
}
}
function slideToNextPage() {
if (currentPage < pdfDoc.numPages) {
currentPage++;
slidePage(currentPage);
}
}

function slideToPrevPage() {
if (currentPage > 1) {
currentPage--;
slidePage(currentPage);
}
}

function slidePage(pageNum) {
pdfDoc.getPage(pageNum).then(function(page) {
const viewport = page.getViewport({ scale: scale });
pdfContainer.height = viewport.height;
pdfContainer.width = viewport.width;

const canvasContext = pdfContainer.getContext('2d');
pdfContainer.height = viewport.height;
pdfContainer.width = viewport.width;

const renderContext = {
canvasContext,
viewport
};

// Start sliding animation
let slideStep = 0;
const slideSpeed = 5; // Adjust the slide speed as needed
const slideInterval = setInterval(function() {
if (slideStep < viewport.width) {
slideStep += slideSpeed;
viewport.transform[4] = -slideStep;
page.render(renderContext);
} else {
clearInterval(slideInterval);
currentPage = pageNum;
}
}, 16); // 60 frames per second
});
}
/**
* Displays previous page.
*/

function onPrevPage() {
if (pageNum <= 1) {
return;
}
pageNum--;
queueRenderPage(pageNum);
}
document.getElementById('prev').addEventListener('click', onPrevPage);

/**
* Displays next page.
*/
function onNextPage() {
if (pageNum >= pdfDoc.numPages) {
return;
}
pageNum++;
queueRenderPage(pageNum);
}
document.getElementById('next').addEventListener('click', onNextPage);

/**
* Asynchronously downloads PDF.
*/
pdfjsLib.getDocument(url).promise.then(function(pdfDoc_) {
pdfDoc = pdfDoc_;
document.getElementById('page_count').textContent = pdfDoc.numPages;

// Initial/first page rendering
renderPage(pageNum);

if(pdfDoc.numPages == 1){
$('#prev').attr('disabled','disabled');
$('#next').attr('disabled','disabled');
}

if(pageNum == 1){
$('#prev').attr('disabled','disabled');
}

if(pageNum == pdfDoc.numPages){
$('#next').attr('disabled','disabled');
}

$('#prev').click(function(){
if(pageNum == 1){
$('#prev').attr('disabled','disabled');
}else{
$('#prev').removeAttr('disabled');
}
if(pageNum < pdfDoc.numPages){
$('#next').removeAttr('disabled');
}
});

$('#next').click(function(){
if(pageNum == 1){
$('#prev').attr('disabled','disabled');
}else{
$('#prev').removeAttr('disabled');
}
if(pageNum == pdfDoc.numPages){
$('#next').attr('disabled','disabled');
}
});
});
</script>

<center>
<a href="<?php echo base_url();?>File_document/<?php echo $row['Send_file'];?>" class="btn btn-primary" target="_blank"><i class="fas fa-download"></i> ดาวน์โหลดไฟล์ pdf</a>
<a href="<?php echo base_url();?>e_office/print_doc_in/<?php echo $row['ds_id'];?>/<?php echo $row['dsd_id'];?>" class="btn btn-primary" target="_blank"><i class="fas fa-print"></i> Print pdf</a>
</center>
<div class="text-center mt-2">
<button id="prev" class="click-page btn btn-info btn-sm"><i class="fas fa-chevron-circle-left"></i> ก่อนหน้า</button>
<button id="next" class="click-page btn btn-info btn-sm">ถัดไป <i class="fas fa-chevron-circle-right"></i></button>
<br>
<span>หน้า: <span id="page_num"></span> / <span id="page_count"></span></span>
</div>

<canvas id="the-canvas" style="width:100%;" class="mt-2"></canvas>


แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2024-05-28 10:06:26 By : comsc006
 

 

No. 3



โพสกระทู้ ( 48 )
บทความ ( 0 )



สถานะออฟไลน์


ตอบความคิดเห็นที่ : 2 เขียนโดย : comsc006 เมื่อวันที่ 2024-05-28 10:06:26
รายละเอียดของการตอบ ::
หลังจากเช็คอุปกรณ์เสร็จ แปลงจาก pdf เป็นรูปภาพแล้วค่อยแสดงผล

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2024-05-28 10:09:55 By : comsc006
 


 

No. 4

Guest


ลองวิธีนี้ดู

Code (PHP)
<embed src="<?php echo base_url('doc/'.$row['s_file']);?>#view=fitH,100&navpanes=0" type="application/pdf" width="100%" height="800px" style="border:1px solid #ddd;border-radius:8px;"/></div>



อีกทางเลือก Front End:


https://pdfobject.com/examples/basic.html
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2024-05-30 12:01:25 By : Guest
 

   

ค้นหาข้อมูล


   
 

แสดงความคิดเห็น
Re : php codeigniter ปัญหาการแสดงไฟล์ PDF บนอุปกรณ์ต่างๆ
 
 
รายละเอียด
 
ตัวหนา ตัวเอียง ตัวขีดเส้นใต้ ตัวมีขีดกลาง| ตัวเรืองแสง ตัวมีเงา ตัวอักษรวิ่ง| จัดย่อหน้าอิสระ จัดย่อหน้าชิดซ้าย จัดย่อหน้ากึ่งกลาง จัดย่อหน้าชิดขวา| เส้นขวาง| ขนาดตัวอักษร แบบตัวอักษร
ใส่แฟลช ใส่รูป ใส่ไฮเปอร์ลิ้งค์ ใส่อีเมล์ ใส่ลิ้งค์ FTP| ใส่แถวของตาราง ใส่คอลัมน์ตาราง| ตัวยก ตัวห้อย ตัวพิมพ์ดีด| ใส่โค้ด ใส่การอ้างถึงคำพูด| ใส่ลีสต์
smiley for :lol: smiley for :ken: smiley for :D smiley for :) smiley for ;) smiley for :eek: smiley for :geek: smiley for :roll: smiley for :erm: smiley for :cool: smiley for :blank: smiley for :idea: smiley for :ehh: smiley for :aargh: smiley for :evil:
Insert PHP Code
Insert ASP Code
Insert VB.NET Code Insert C#.NET Code Insert JavaScript Code Insert C#.NET Code
Insert Java Code
Insert Android Code
Insert Objective-C Code
Insert XML Code
Insert SQL Code
Insert Code
เพื่อความเรียบร้อยของข้อความ ควรจัดรูปแบบให้พอดีกับขนาดของหน้าจอ เพื่อง่ายต่อการอ่านและสบายตา และตรวจสอบภาษาไทยให้ถูกต้อง

อัพโหลดแทรกรูปภาพ

Notice

เพื่อความปลอดภัยของเว็บบอร์ด ไม่อนุญาติให้แทรก แท็ก [img]....[/img] โดยการอัพโหลดไฟล์รูปจากที่อื่น เช่นเว็บไซต์ ฟรีอัพโหลดต่าง ๆ
อัพโหลดแทรกรูปภาพ ให้ใช้บริการอัพโหลดไฟล์ของไทยครีเอท และตัดรูปภาพให้พอดีกับสกรีน เพื่อความโหลดเร็วและไฟล์ไม่ถูกลบทิ้ง

   
  เพื่อความปลอดภัยและการตรวจสอบ กระทู้ที่แทรกไฟล์อัพโหลดไฟล์จากที่อื่น อาจจะถูกลบทิ้ง
 
โดย
อีเมล์
บวกค่าให้ถูก
<= ตัวเลขฮินดูอารบิก เช่น 123 (หรือล็อกอินเข้าระบบสมาชิกเพื่อไม่ต้องกรอก)







Exchange: นำเข้าสินค้าจากจีน, Taobao, เฟอร์นิเจอร์, ของพรีเมี่ยม, ร่ม, ปากกา, power bank, แฟลชไดร์ฟ, กระบอกน้ำ

Load balance : Server 00
ThaiCreate.Com Logo
© www.ThaiCreate.Com. 2003-2024 All Rights Reserved.
ไทยครีเอทบริการ จัดทำดูแลแก้ไข Web Application ทุกรูปแบบ (PHP, .Net Application, VB.Net, C#)
[Conditions Privacy Statement] ติดต่อโฆษณา 081-987-6107 อัตราราคา คลิกที่นี่