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 > PDF ใน PDF เหมือนเอาไฟล์ PDF ของแต่ละแผ่นมารวมกันแล้วแบ่งเป็น 1 แผ่นมี 4 หน้าอะครับ



 

PDF ใน PDF เหมือนเอาไฟล์ PDF ของแต่ละแผ่นมารวมกันแล้วแบ่งเป็น 1 แผ่นมี 4 หน้าอะครับ

 



Topic : 135119



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



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




ผมอยากให้ pdf แต่ละหน้าแบ่งเป็น 1 แผ่นต้องมี 4 หน้าอะครับตามตัวอย่างรูปภาพ เหมือนเอาไฟล์ PDF ของแต่ละแผ่นมารวมกันข้างในเป็น pdf อีกทีอะครับ เผื่อใคร งง เดี๋ยวผมยกตัวอย่างให้ครับ
เช่น ผมมีไฟล์ pdf 2 ไฟล์ แต่ละ ไฟล์มีอยู่ด้วยกัน 10 หน้า อยากให้มารวมกันซึ่งจะแบ่งเป็น หน้าละ 4 แผ่นจะกลายเป็น

-แผ่นที่ 1 มี หน้าที่ 1-4 ของไฟล์ pdf ที่1
-แผ่นที่ 2 มี หน้าที่ 5-8 ของไฟล์ pdf ที่1
-แผ่นที่ 3 มี หน้าที่ 9-10 ของไฟล์ pdf ที่1 และ หน้าที่ 1-2 ของไฟล์ pdf ที่2
-แผ่นที่ 4 มี หน้าที่ 3-6 ของไฟล์ pdf ที่2
-แผ่นที่ 5 มี หน้าที่ 7-10 ของไฟล์ pdf ที่2

แบบนี้ครับ

ตามภาพครับ



Tag : PHP, CodeIgniter







Move To Hilight (Stock) 
Send To Friend.Bookmark.
Date : 2020-04-15 11:45:47 By : boss3075027 View : 2162 Reply : 7
 

 

No. 1



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



สถานะออฟไลน์
Twitter Facebook Blogger

ใช้ FPDI/FPDF
คู่คิด https://manuals.setasign.com/fpdi-manual/v2/

Code (PHP)
//ไฟล์ต้นฉบับ
$filename = 'xxx.pdf';

use setasign\Fpdi\Fpdi;

require_once('fpdf/fpdf.php');
require_once('fpdi232/src/autoload.php');

$pdf = new Fpdi();

$pageCount = $pdf->setSourceFile($filename);

$width = $pdf->GetPageWidth() / 2 - 15;
$height = 0;

$_x = $x = 10;
$_y = $y = 10;

$pdf->AddPage();
for ($n = 1; $n <= $pageCount; $n++) {
    $pageId = $pdf->importPage($n);

    $size = $pdf->useImportedPage($pageId, $x, $y, $width);
    $pdf->Rect($x, $y, $size['width'], $size['height']);
    $height = max($height, $size['height']);
    if ($n % 2 == 0) {
        $y += $height + 10;
        $x = $_x;
        $height = 0;
    } else {
        $x += $width + 10;
    }

    // แบ่ง 4:1
    if ($n % 4 == 0 && $n != $pageCount) {
        $pdf->AddPage();
        $x = $_x;
        $y = $_y;
    }
}

// ไฟล์ใหม่
$pdf->Output('F', 'yyy.pdf');







แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2020-04-15 13:44:51 By : PhrayaDev
 


 

No. 2



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



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


ตอบความคิดเห็นที่ : 1 เขียนโดย : PhrayaDev เมื่อวันที่ 2020-04-15 13:44:51
รายละเอียดของการตอบ ::
... ใส่ความคิดเห็นตรงนี้.......
ขอบคุณมากๆเลยครับ แล้วถ้าจะเอามาต่อกับเอกสารอีกอันละครับ ตอนนี้เป็นแบบนี้อะครับ
h1
h2


โค้ดครับ
<?php
//ไฟล์ต้นฉบับ
$filename = ['1.pdf','1_1.pdf'];

use setasign\Fpdi\Fpdi;

require_once('vendor/setasign/fpdf/fpdf.php');
require_once('vendor/autoload.php');

$pdf = new Fpdi();



foreach ($filename as $filename) {

$pageCount = $pdf->setSourceFile($filename);

$width = $pdf->GetPageWidth() / 2 - 15;
$height = 0;

$_x = $x = 10;
$_y = $y = 10;

$pdf->AddPage();
for ($n = 1; $n <= $pageCount; $n++) {
$pageId = $pdf->importPage($n);

$size = $pdf->useImportedPage($pageId, $x, $y, $width);
$pdf->Rect($x, $y, $size['width'], $size['height']);
$height = max($height, $size['height']);
if ($n % 2 == 0) {
$y += $height + 10;
$x = $_x;
$height = 0;
} else {
$x += $width + 10;
}

// แบ่ง 4:1
if ($n % 4 == 0 && $n != $pageCount) {
$pdf->AddPage();
$x = $_x;
$y = $_y;
}
}

}
// ไฟล์ใหม่
//$pdf->Output('F', 'yyy.pdf');
$pdf->Output('I', 'simple.pdf');

หรือผม loop ผิด 5555 เบรอๆช่วงนี้

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2020-04-15 16:44:55 By : boss3075027
 

 

No. 3



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



สถานะออฟไลน์
Twitter Facebook Blogger

merge/concat (fake/real) pdf ก่อนครับ เช่น

Code (PHP)
use setasign\Fpdi\Fpdi;

require_once('fpdf/fpdf.php');
require_once('fpdi232/src/autoload.php');

// คลาสรวม pdf (แบบเทียม)
class ConcatPdf extends Fpdi
{
    public $files = array();

    public function setFiles($files)
    {
        $this->files = $files;
    }

    public function concat()
    {
        foreach($this->files AS $file) {
            $pageCount = $this->setSourceFile($file);
            for ($pageNo = 1; $pageNo <= $pageCount; $pageNo++) {
                $pageId = $this->ImportPage($pageNo);
                $s = $this->getTemplatesize($pageId);
                $this->AddPage($s['orientation'], $s);
                $this->useImportedPage($pageId);
            }
        }
    }
}

$pdf = new ConcatPdf(); // สร้าง object
$pdf->setFiles(array('file1.pdf', 'file2.pdf', 'file3.pdf')); // เลือกไฟล์ที่จะรวม
$pdf->concat(); // ทำการรวม pdf

$pdf->Output('I', 'concat.pdf');  // ใช้ concat.pdf เป็นไฟล์ input สำหรับทำ 4:1 page

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2020-04-15 17:15:16 By : PhrayaDev
 


 

No. 4



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



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


ตอบความคิดเห็นที่ : 3 เขียนโดย : PhrayaDev เมื่อวันที่ 2020-04-15 17:15:16
รายละเอียดของการตอบ ::
... ใส่ความคิดเห็นตรงนี้.......
ยัง งง การใช้งานอยู่เลยครับ
$width = $pdf->GetPageWidth() / 2 - 15;
$height = 0;

$_x = $x = 10;
$_y = $y = 10;

$pdf->AddPage();
for ($n = 1; $n <= $pageCount; $n++) {
$pageId = $pdf->importPage($n);

$size = $pdf->useImportedPage($pageId, $x, $y, $width);
$pdf->Rect($x, $y, $size['width'], $size['height']);
$height = max($height, $size['height']);
if ($n % 2 == 0) {
$y += $height + 10;
$x = $_x;
$height = 0;
} else {
$x += $width + 10;
}

// แบ่ง 4:1
if ($n % 4 == 0 && $n != $pageCount) {
$pdf->AddPage();
$x = $_x;
$y = $_y;
}
}
ผมเอาตรงนี้ไปใส่ใน class แล้วมันไม่ได้อะครับ

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2020-04-15 17:34:32 By : boss3075027
 


 

No. 5



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



สถานะออฟไลน์
Twitter Facebook Blogger

ถ้ามันยุ่งยาก merge แท้ไปเลยก็ได้ครับ ทำยังไงก็ได้ให้รวม pdf เป็นไฟล์เดียวก่อนแล้วค่อยทำ 4:1 ตาม No.1

อันนี้ก็ได้ (แต่ระวังถ้าทำขาย)
https://github.com/Xitro/FPDF_Merge
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2020-04-15 17:57:18 By : PhrayaDev
 


 

No. 6



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



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


ตอบความคิดเห็นที่ : 5 เขียนโดย : PhrayaDev เมื่อวันที่ 2020-04-15 17:57:18
รายละเอียดของการตอบ ::
... ใส่ความคิดเห็นตรงนี้.......
ได้ละครับ ขอบคุณมากๆนะครับ
พี่ครับๆ ผมถามอีกอย่างครับ
ถ้าจะทำให้เป็น ปรับมุมมองแบบตามภาพนี้ใช้คำสั่งอะไรหรอครับ ผมหาไม่เจอ
testttttt

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2020-04-16 14:40:32 By : boss3075027
 


 

No. 7



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



สถานะออฟไลน์
Twitter Facebook Blogger

ส่วนหัว override Header() method
http://www.fpdf.org/en/tutorial/tuto2.htm

เนื้อหา ถ้าหมายถึง 2:1 (บนล่าง) ประยุกต์ส่วนคำนวณจาก No.1 ครับ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2020-04-16 16:32:59 By : PhrayaDev
 

   

ค้นหาข้อมูล


   
 

แสดงความคิดเห็น
Re : PDF ใน PDF เหมือนเอาไฟล์ PDF ของแต่ละแผ่นมารวมกันแล้วแบ่งเป็น 1 แผ่นมี 4 หน้าอะครับ
 
 
รายละเอียด
 
ตัวหนา ตัวเอียง ตัวขีดเส้นใต้ ตัวมีขีดกลาง| ตัวเรืองแสง ตัวมีเงา ตัวอักษรวิ่ง| จัดย่อหน้าอิสระ จัดย่อหน้าชิดซ้าย จัดย่อหน้ากึ่งกลาง จัดย่อหน้าชิดขวา| เส้นขวาง| ขนาดตัวอักษร แบบตัวอักษร
ใส่แฟลช ใส่รูป ใส่ไฮเปอร์ลิ้งค์ ใส่อีเมล์ ใส่ลิ้งค์ 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 05
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 อัตราราคา คลิกที่นี่