できる限りご説明いたしますので、不明な点がございましたらお気軽にご質問ください。
- PDF から認証情報を作成します。
- 背景画像はすでに紙に印刷されています(A4:横)
- 弊社製品の入力 ([カスタム オプション] > [名前と日付]) と、弊社のデータベースに保存されているクレデンシャル番号の増分から; これらを特定の座標でA4用紙に重ねて、最終製品を自分で印刷します.
通常、これらは 1 日に約 400 ~ 900 個販売されるため、これらすべてを 1 つの印刷可能なドキュメントに生成/追加する結合された PDF シートが必要になります。これらが昨日の注文または今日の注文、または今日の注文を印刷した後の注文からどのように分離されるかは問題ではありません。それは、LASTクレデンシャル番号、または日付/時刻のカットオフなどによる可能性があります. 重複がない限り無視できます。
私が期待したいのは、ユーザーが送信前に資格情報をプレビューできる機能 (JQuery で十分でしょう。入力フィールドからプレビュー画像を更新することを想定していました)、フィルター配列またはリストを使用する機能 (禁止された単語を削除し、最後に、ユーザーが間違いを犯した場合でも修正できるようにします。これは、ツールを使用して直接 PDF を編集する方法です。
先週、少なくともこれを行うための出発点を得ることができるプラグインまたはモジュールを探していました。そうでない場合、これはゼロから作成する必要があるものです。Zetaprints による Web to print を簡単に見ましたが、インストール プロセスが複雑であるだけでなく、約 1.70 ドルの使用ごとの支払いがあり、すぐに利益率に食い込んでしまいます。
現在行うこと これは、OSCommerce で使用していた古いバージョンであり、Magento の同等品に置き換える必要があります。
編集機能のある古いバージョン: http://pastebin.com/pafG0RLZ
編集なしの新しいバージョン: http://pastebin.com/b4a3kim1
これは、何らかの統合が必要な新しいバージョンの物理的なコードです。これはすでに統合が必要な実用的な製品であるため、「理論的な概念」に基づいて私に反対票を投じるのはやめてください.
case "Ordination Credentials":
// hack -jd
include ('class.ezpdf.php');
$pdf =& new Cezpdf('LETTER','landscape');
$pdf->selectFont('./fonts/mtcorsva.afm');
$pdf->ezSetMargins(30,1,30,1);
extract($_GET);
$query = "
SELECT o.date_purchased,
fd.template_fn,
o.customers_name,
op.orders_id,
opa.orders_products_id,
products_name,
op.products_quantity,
field_name,
products_options_values
FROM orders_products AS op
JOIN orders AS o ON o.orders_id = op.orders_id
JOIN fulfillment_doc_products AS fdp ON fdp.product_id = op.products_id
JOIN fulfillment_docs AS fd ON fd.doc_id = fdp.doc_id
JOIN orders_products_attributes AS opa ON opa.orders_products_id = op.orders_products_id
RIGHT JOIN fulfillment_doc_fields AS fdf ON fdf.products_options_name = opa.products_options
AND fdf.doc_products_id = fdp.doc_products_id
WHERE op.orders_id
BETWEEN $in
AND $out
AND fd.doc_id = $doc_id
ORDER BY o.orders_id, products_name, opa.orders_products_id, field_name, products_options_values";
$result = mysql_query(trim($query)) or die("Broke the interwebs.");
while ($query_data = mysql_fetch_array($result)) {
//Standard db output filtering and processing into multi-dimensional array as seen above
$creds[$query_data['orders_products_id']][$query_data['field_name']] = sanitize_db_output($query_data['products_options_values']);
$creds[$query_data['orders_products_id']]['order_number'] = $query_data['orders_id'];
$creds[$query_data['orders_products_id']]['products_quantity'] = $query_data['products_quantity'];
}
$started = false;
foreach( $creds as $opt ) {
if($started) { $pdf->ezNewPage(); } //create new page
$started = true;
$name = ucwords(strtolower($opt['name']));
foreach (array('-', '\'',' Mc') as $delimiter) {
if (strpos($name, $delimiter) == true) {
$name = implode($delimiter, array_map('ucfirst', explode($delimiter, $name)));
}
}
//all caps
foreach (array('Ii', 'Iii') as $delimiter) {
if (strpos($name, $delimiter) == true) {
$name = implode($delimiter, array_map('strtoupper', explode($delimiter, $name)));
}
}
if(strpos($name, ',') !== false) {
foreach (array(', Jr', ', Sr') as $delimiter) {
if (strpos($name, $delimiter) == false) {
$name=implode(" ", array_reverse(explode(',', $name)));
}
}
}
$day = $opt["date-day"];
if (0<>$day) {
if (in_array($day% 100, range(11,13))) {
$day .= 'th';
} else {
switch ( $day % 10 ) {
case 1: $day .= 'st'; break;
case 2: $day .= 'nd'; break;
case 3: $day .= 'rd'; break;
default: $day .= 'th'; break;
}
}
}
$month = $opt["date-month"];
$year = $opt["date-year"];
$ordid = $opt["order_number"];
//create date
if (!isset($yname)) { $yname = "370"; }
if (!isset($ydate)) { $ydate = "289"; }
$pdf->ezSetY($yname); $pdf->ezText($name,28,array('left'=>-35, 'justification'=>'center'));
$pdf->ezSetY($ydate); $pdf->ezText($day,17,array('left'=>-220, 'justification'=>'center'));
$pdf->ezSetY($ydate); $pdf->ezText($month,17,array('left'=>40, 'justification'=>'center'));
$pdf->ezSetY($ydate); $pdf->ezText($year,17,array('left'=>375, 'justification'=>'center'));
$pdf->ezSetY(96); $pdf->ezText($ordid,12,array('left'=>505, 'justification'=>'center'));
}
$pdfcode = $pdf->output();
$file = './tmp/PDF_ordinations.pdf';
if (file_exists($fname)) { unlink($fname); } //start with new file
if (!file_exists($dir)) { mkdir ($dir,0777); } //dir create if not there
$fname = $file;
$fp = fopen($fname,'w');
fwrite($fp,$pdfcode);
fclose($fp);
header('Location:'.$fname);
break;