外部ライブラリやユーティリティを使用せずに、(変数から) データを PDF ファイルにエクスポートする簡単な C++ コードを作成する方法を教えてもらえますか?
5 に答える
PDF ファイル形式fprintf
に準拠したファイルを使用してファイルに書き込みます。
具体的には、付録 G を参照してください。いくつかの非常に単純な変換を実行して、読み取り可能な PDF ファイルを生成できる場合があります。
外部ライブラリやユーティリティを使用せずに、データ(変数から)をPDFファイルにエクスポートする簡単なC ++コードを作成する方法を教えてもらえますか?
いいえ。PDFファイルは複雑です。それらを読み書きするには、コードが複雑になります。通常、外部ライブラリを使用してその複雑さを隠すことができますが、それを望まない場合は、コードに複雑さを含める必要があります。そして、それは単純ではありません。
あなたは不可能を求めています。あなたは、自分で複雑なことを何もせずに、そしてあなたのために何か複雑なことをするために他の誰かに頼ることなく、複雑なタスクを実行することを求めています。しかし、誰かがそれをしなければならないでしょう。
PDF ライブラリを使用しない最善の方法は、他のアプリケーション (OpenOffice など) を使用して、サンプル テキストを含む単純な PDF を作成することです。次に、これをボイラー プレートの基礎として使用し、C++ コードで独自のテキストを挿入します。PDF は行指向であるため、テキストの新しい各行を明示的に正しい位置に配置する必要があることに注意してください。
非常に単純な出力以外の場合、PDF 仕様を完全に理解していないと、これはトリッキーになります。
私は現在 ZendPDF を使用しており、テキストとして表示するとこのように見えるテスト pdf ファイルを作成しました。PDFファイル自体のテキスト「これはテストです」を「これはスーパーテストです」に変更すると、最終的なpdfファイルを変更でき、foxitで開きました。したがって、これをコピーし、C++ を使用して文字列を必要なものに置き換えます。そのF1 14 Tfのものをコピーすることで、テキストエディターだけで新しいテキストを表示することもできました。
このテキストを出力するために使用されるphpは
<?php
require("inc/function.inc.php");
// start authorization check
require("inc/authcheckhdr.inc.php");
$pdf = new Zend_Pdf();
// Fetch the first page so you can draw on top of it.
$page = $pdf->pages[0] = $pdf->newPage('A4');
// Set font and text color.
$page->setFont(Zend_Pdf_Font::fontWithName(Zend_Pdf_Font::FONT_HELVETICA), 14);
$page->setFillColor(new Zend_Pdf_Color_HTML('black'));
// Draw some text on top of the page at x,y
$page->drawText('This is a test', 72, 720);
// More drawing commands...
// Save the resulting PDF document. OR
$pdf->save('result.pdf');
// Render the resulting PDF and send it to the browser
$pdfDocument = $pdf->render();
header("Content-Type: application/pdf");
header("Content-Disposition: attachment; filename=result.pdf");
echo $pdfDocument;
?>
pdfファイルは...
%PDF-1.4
%âãÏÓ
1 0 obj
<</Type /Catalog /Version /1.4 /Pages 2 0 R /Names 7 0 R >>
endobj
2 0 obj
<</Type /Pages /Kids [3 0 R ] /Count 1 >>
endobj
3 0 obj
<</Type /Page /LastModified (D:20091231114504-08'00') /Resources <</ProcSet [/Text /PDF ] /Font <</F1 8 0 R >> >> /MediaBox [0 0 595 842 ]
/Contents [4 0 R ] /Parent 2 0 R >>
endobj
4 0 obj
<</Length 50 >>
stream
/F1 14 Tf
0 g
BT
72 620 Td
(This is a test) Tj
ET
/F1 14 Tf
0 g
BT
72 720 Td
(This is a super test) Tj
ET
endstream
endobj
5 0 obj
[]
endobj
6 0 obj
<</Names 5 0 R >>
endobj
7 0 obj
<</Dests 6 0 R >>
endobj
8 0 obj
<</Type /Font /Encoding /WinAnsiEncoding /Subtype /Type1 /BaseFont /Helvetica >>
endobj
xref
0 9
0000000000 65535 f
0000000015 00000 n
0000000091 00000 n
0000000149 00000 n
0000000341 00000 n
0000000441 00000 n
0000000460 00000 n
0000000494 00000 n
0000000528 00000 n
trailer
<</ID [<65386133343365653231383339346131> <64663632306233616663343536616332> ] /Size 9 /Root 1 0 R >>
startxref
625
%%EOF
...外部ライブラリやユーティリティを使用せずに?
それは少し問題です... QT を使用している場合は、それを行うことができます... セットアップは何ですか?