服务器端字体调整

3
我有一个 PHP 文件,可以通过 $_GET 传递自定义名称来“创建”课程证书。
目标是将文件输出到任何可打印格式,并下载所有证书到一个 (.zip) 文件中。
问题在于名称的宽度是动态的,且名称必须与 div 的宽度匹配。
这是一个示例代码:
<html>
    <head>
    </head>
    <body style="background-image: image; background-image-size: 100% 100%; width: 1200px; height: 1200px;">
       <div class="name_1" style="width: 250px; height: 80px; margin-top: 400px; margin-left: 500px;">
            <p><?php echo $_GET['name_1']; ?></p>
       </div>
       <div class="name_2" style="width: 250px; height: 80px; margin-top: 900px; margin-left: 500px;">
            <p><?php echo $_GET['name_2']; ?></p>
        </div>
    </body>

我已经用jQuery实现了动态文本大小调整以适应

宽度。

最大的问题是,我需要逐页加载100多个页面才能获得这种动态文本大小调整效果...

那么,有没有一种方法可以调整所有页面名称并在一个点击中下载所有页面呢?


“match div width” 是什么意思?是将一行缩小以适应宽度,还是多行具有相同的宽度? - Alejandro Iván
@AlejandroIván 一行代码被缩小以适应div宽度。 - Victor Tello
2个回答

1
使用wkhtmltopdf框架,文档在此处,可获取页面截图。它将在页面加载时执行脚本,甚至有参数以延长脚本执行时间。
--javascript-delay (default to 200ms)

你有一个PHP接口,但你可以简单地使用PHP的exec这种方式:

exec("wkhtmltopdf test.html output.pdf")

如果您想创建ZIP库,您可以在这里找到示例。


这是否意味着我必须打开页面才能获取屏幕截图? - Victor Tello
不,这个PHP库在服务器端使用webkit渲染引擎。服务器将“打开”页面,进行渲染并创建PDF。还有一个wkhtmltoimage库,它可以创建图像而不是PDF。它非常好用,甚至可以在页面上使用自定义字体 - 它可以工作! - skobaljic
这不意味着@VictorTello会得到一张渲染图像,而不知道名称是否合适吗? - Marek
他说他已经创建了一个脚本来适应文本到div中:我已经使用jQuery实现了动态文本调整以适应div宽度 - skobaljic
@skobaljic,我在本地测试过了,它可以工作:D!但是我的主机提供商已经停用了shell_exe() - Victor Tello

0

FPDF及其衍生版本有GetStringWidth()方法。如果使用正确的字体,您可以从此方法中获取宽度。调用此方法之前必须使用SetFont()选择字体。已经包括一组标准字体(Arial,Times,Courier,Symbol和ZapfDingbats),如果您的不是其中之一,则必须添加它:http://www.fpdf.org/en/tutorial/tuto7.htm

$string = "This is a text";
$fpdf = new FPDF();
$pdf->SetFont('Arial','B',16);
echo $fpdf->GetStringWidth($string);

$string = "This is a text"; $fpdf = new FPDF(); echo $fpdf->GetStringWidth($string); 输出 0,为什么呢? - Victor Tello

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接