ABCpdf Reference Guide

ABCpdf .NET™ リファレンスガイド

ABCpdf .NET を使用することにより、動的に Adobe®PDF ドキュメントを作成することができます。また ABCpdf .NET はプリンタ・ドライバを使用しないで非常に高速にドキュメントを PDF へ直接出力することができます。

© 2012 WebSupergoo
Localized by Newtone

このドキュメントの情報に間違いがないよう心がけましたが、このマニュアルまたはここに書かれているソフトウェアの精度または品質を保証するものではありません。

Apple®、 Mac®、Macintosh®、QuickDraw®、QuickTime® は Apple Computer 株式会社の商標です。Windows®、Windows NT®、Visual Basic®、Visual Studio® は米国および/またはその他の国の Microsoft 株式会社の商標です。Adobe®、 Acrobat®、Adobe PDF®、PostScript®、Photoshop® は Adobe Systems 株式会社またはその子会社の商標です。Macromedia®、Flash™ Macromedia Flash™ は米国および/またはその他の国の Macromedia 株式会社の商標または登録商標です。


What is ABCpdf?

ABCpdf .NET について

ABCpdf .NET は AdobePDF のドキュメントを動的に作成する非常に強力なコンポーネントです。

ABCpdf .NET は、C# や Visual Basic.NET などの言語が使用可能です。

ABCpdf .NET は Windows 2000、Windows XP、Windows Server 2003、 Windows Vista、Windows Server 2008、 Windows 7、 Windows 8 で実行することができます。

ABCpdf9J は「.NET Framework 4.0」以降が必要です。


Who is this document for?

このドキュメントについて

このドキュメントは ABCpdf .NET を使用するためのリファレンスガイドです。ここでは ASP.NET または Visual Basic.NET や C# および Internet Information Services(IIS) の基礎知識を有している方を想定しています。


What's Cool?

特徴

ABCpdf は、シンプルですが生産性の高い開発が可能です。加えて高度な機能を使用した開発も行えます。

ABCpdf は PDF ドキュメントの新規作成、読み込み、修正が行えます。また他の PDF ドキュメントからページを追加したり複数のドキュメントをまとめることができます。ディスクを介さずにドキュメントを直接クライアントのWebブラウザに送ることができます。

PDF ドキュメントをさまざまな形式で表すことができます。PDF ドキュメントをさまざまなカラースペースやビット深度のラスター形式 （JPEG、GIF、TIFF、JPEG 2000 など）で出力できます。また、高解像度の印刷処理などの専門分野では EMF、EPS、XPS、SVG、SWF (Flash) といったベクター形式も選択できます。アルファ、圧縮型、複数ページ、異なる水平解像度と垂直解像度を設定するなど、高度な設定も行えます。

PDF ドキュメントに JPEG、GIF、TIFF、BMP、PNG、EXIF、WMF、EMF、JPEG 2000、PS、EPS、XPS、WPF、SVG、SWF （Flash） イメージを追加することができます。また PDF ドキュメントの複数の別の場所からイメージデータを参照することができます。これは透かし(半透明)イメージや頻繁に使用するイメージを追加するには便利です。ABCpdf は PostScript と完全に互換性があります。

XML Paper Specification (XPS) や Encapsulated PostScript (EPS) を完全にサポートしています。 Microsoft XPS でもページの記述やドキュメントの保存方法を提供していますが、現存の PDF スタンダードとの互換性がありません。EPS は印刷で広く使われていますが、PDF との相互運用となると互換性の問題が生じることもあります。ABCpdf は Adobe PDF、Microsoft XPS、EPS の完全な相互互換性をサポートしています。PDF ドキュメントから XPS または EPS、XPS または EPS から PDF に変換すると、ソースドキュメント本来の構造を保存するために慎重に変換ルーチン（カラースペースの保存や埋め込みフォントの保存/変換）が書き込まれます。

Windows Presentation Foundation (WPF) を完全にサポートしています。Microsoft WPF は .NET 3.0 用に開発された新しいグラフィックスのサブシステムで、Windows Vista などのプラットフォームや Silverlight のような軽量な Web ベースシステムにも搭載されています。もちろん、新しいグラフィックスの API 描画に新しい PDF のエクスポート機能も必要なので、ABCpdf は完全な WPF のインポート機能を提供しました。詳しくは、 WPFTable サンプルをご覧ください。

Flash をサポートしています。独自の SWF レンダリングエンジンを書き込みました。Flash に表示される美しく滑らかな図は滑らかさを維持し、PDF にインポートしても解像度に依存しません。また、PDF ドキュメントを本来のベクタ形式の Flash に変換できるように独自の Flash のエクスポートエンジンを書き込みました。

ABCpdf は PDF や HTML の他に、Microsoft Word (.doc)、Microsoft Excel (.xls)、PowerPoint (.ppt)、Rich Text Format (.rtf)、WordPerfect (.wpd)、Lotus 1-2-3 (.wk1)、AutoCAD (.dxf) といったドキュメント形式もサポートしています。（但し、読み込みのみです。注意）

ABCpdf はインデント、カーニング、トラッキング、文字間隔・行間・段落の間隔、均等割り付けなどテキストのレイアウトを細かく制御することができます。ABCpdf は複数の書体を参照したくない場合には、太字や斜体を統合したフォントをサポートします。

ABCpdf は Unicode や外国語をサポートします。従ってどんなプラットフォームでも適切な言語パッケージや Unicode フォントへの参照がおこなわれます。テキストを縦書き/横書きで表します。大きな CJK (中国語、日本語、韓国語)フォントについては、そのサブセットを使用することでメモリーの使用量を少なくしサーバーの負担も少なくします。

ローカル / リモートウェブサイトから HTML / CSS ページをインポートします。HTML の位置決めのサポートというのは、HTML を他のメディアのように好きなところに配置できるということです。HTML のページ化のサポートというのは、HTML をある場所から別の場所に、つまりページや列に関係なく動かせるということです。さまざまなオプションにより HTML のレンダリングプロセスや DOM を完全に制御できます。

HTML スタイルのテキストは、マルチスタイルテキストを簡単に作成したりレイアウトすることができます。テキストボックスのチェーン（連結）のサポートによりテキストをある場所から別の場所に簡単に自動的に流し込むことができます。

回転、拡大、ゆがみ、非対称といった高度な変形処理を行います。つまり、回転させたテキスト、イメージ、画像、すべてを数行のコードだけで描画できます。

ABCpdf はドキュメントのレイアウトや構成方法が色々あります。「表」サンプルは、プログラムで表のレイアウトを行う方法を示しています。WPFTable サンプルは、WPF ベースのコンテンツを取得し、それを PDF に変換する方法を示しています。APCpdf8.Drawing ラッパーの名前空間は、PDF に変換する際に System.Drawing コードを簡単に移植できるように含まれています。XML から PDF への変換方法、タグ付きの PDF 出力につきましては、TaggedPDF サンプルをご覧ください。

ABCpdf は RGB や CMYK、LAB、グレースケールのカラースペースをサポートしています。これらのカラースペースにテキスト、線、 塗りつぶしなどの描画や高品質な印刷を行うことができます。スポットカラーを使ってグレースケールのイメージに色をつけたり、あるカラースペースから別のカラースペースに変換したりすることもできます。

ABCpdf は ICC ベースの RGB、CMYK、LAB イメージを直接インポートします。つまり、直接アプリケーションから高品質で印刷可能な PDF を作成することができます。

ABCpdf は透過処理サポートしています。アルファ値(透明度)を設定することにより、テキストや線、塗りつぶしなどに透明度を設定して描画できます。また透過設定を行ったオブジェクトに対してソフトマスクまたはクロマキーのマスクを設定することができます。 勿論、簡単に GIF などの透明なイメージを描画することもできます。

ABCpdf は暗号化した PDF ドキュメントを作成できます。暗号化キーは 40 ビットから 128 ビット長の設定ができます。

ABCpdf はフィールドやフォームをサポートしておりますので、テンプレートドキュメントのプレースフォルダを使用することによりダイナミックにドキュメントのレイアウトを設定できます。変更されないよう直接 PDF にフィールドをスタンプすることができます。新しい注釈、簡単なテキストフィールドから最新の署名まで何でも作成できます。Comb フィールド（1文字づつ線で区切るフィールド）という新しい機能もサポートしています。

ABCpdf は PDF のコンテンツを注釈付きの SVG に変換できるようになりました。つまり、ページの各要素を識別し、オリジナルの PDF ファイルの演算子にマッピングすることができます。従って、PDF のテキストの検索や置換などを行ったり、ページにある各イメージを識別することができます。

PDFView サンプルでは、さまざまな ABCpdf の機能を紹介しています。PDF ドキュメントを開いたり、表示したり、印刷することができます。PDF 内のテキストやテキストスタイルの編集が可能です。ページの挿入、削除、並べ替えが可能です。ドキュメントの透かしも可能です。このサンプルはフルソースコード付きです 。

ABCpdf は PDF 内のイメージをさらに制御できるようになりました。洗練された高品質なリサンプリングアルゴリズムを使用して、イメージのサイズ変更が行えます。新しいカラースペースを割り当てたり、あるカラースペースから別のカラースペースに変換することができます。CCITT、JPEG、Flate または JPEG 2000 形式への圧縮が可能です。イメージを 1 ビットから別の色深度にリサンプリングすることができます。つまり、PDF 内のイメージ処理に必要なことがサポートされています。

ABCpdf はテキスト、線、その他のオブジェクトを小数点レベルで正確に位置づけするために完全に浮動小数点をサポートしています。

ABCpdf はドキュメントの任意の PDF オブジェクトを更に高度に制御できます。詳細につきましては、加工されていない PDF 構造に直接アクセスしてみてください。

（注意）Microsoft Office や OpenOffice.org などのアプリケーションプログラムをインストールしておく必要があります。OpenOffice.org は GNU Lesser General Public License (LGPL) で無償で配布されています。OpenOffice.org プロジェクトの詳細につきましては、http://www.openoffice.org/ をご覧ください。


What's New?

新機能

ABCpdf 9.0

デバッガ表示属性により、ABCpdf のコーディングやデバッグがより簡単になりました。


Acknowledgements

その他

ABCpdf は下記のオープンソースソフトウェアを使用しています。ABCpdf を配布する場合は、マニュアルなどに下記の文章を記入してください。

Portable Document Format

Adobe Systems Incorporated owns the copyright for the particular data structures and operators and the written specification constituting the interchange format called the Portable Document Format (PDF).

Adobe gives copyright permission for this material to be used for generating, viewing, printing and otherwise manipulating PDF documents. This is subject to certain conditions which are designed to maintain the integrity of the PDF standard.

詳しくは、Adobe PDF Reference 5th Edition を参照してください。

SWF

Adobe Systems Incorporated owns the copyright for the particular data structures and the written specification constituting the interchange format called the SWF File Format.

Adobe gives copyright permission for this material to be used for generating and manipulating SWF files. This is subject to certain conditions which are designed to maintain the integrity of the SWF standard.

詳しくは、Adobe SWF File Format Specification Version 9 を参照してください。

jpeg

This software is based in part on the work of the Independent JPEG Group. 詳しくは、http://www.ijg.org/ を参照してください。

libtiff

A library for processing and manipulating TIFF images. 詳しくは、http://www.libtiff.org/ を参照してください。

Copyright (c) 1988-1997 Sam Leffler
Copyright (c) 1991-1997 Silicon Graphics, Inc.

Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted without fee, provided that (i) the above copyright notices and this permission notice appear in all copies of the software and related documentation, and (ii) the names of Sam Leffler and Silicon Graphics may not be used in any advertising or publicity relating to the software without the specific, prior written permission of Sam Leffler and Silicon Graphics.

THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND, EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.

IN NO EVENT SHALL SAM LEFFLER OR SILICON GRAPHICS BE LIABLE FOR ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.

zlib

A free, general-purpose, legally unencumbered - that is, not covered by any patents - lossless data-compression library. 詳しくは、http://www.gzip.org/zlib/ を参照してください。

Copyright (C) 1995-2002 Jean-loup Gailly and Mark Adler

FreeType

Portions of this software are copyright ｩ 1996-2002 The FreeType Project (www.freetype.org). All rights reserved.

Little cms

Little cms is a fast and efficient color management engine. 詳しくは、http://www.littlecms.com/ を参照してください。Little cms is distributed under the following license.

Copyright (C) 1998-2004 Marti Maria

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

The Legion Of The Bouncy Castle

The Legion of the Bouncy Castle provide a comprehensive cryptography package. 詳しくは、 http://www.bouncycastle.org/ を参照してください。The software is distributed under the following license.

The Bouncy Castle License

Copyright (c) 2000-2004 The Legion Of The Bouncy Castle (http://www.bouncycastle.org)

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

OpenOffice.org

ABCpdf is designed to integrate with OpenOffice.org if it is installed on your system.

OpenOffice.org is a fully-featured open-source office productivity suite available as a free download for major platforms in over 45 supported languages. It is compatible with competing office suites. OpenOffice.org is developed, supported, and promoted by an international community operating from the http://www.openoffice.org/ website. Beginning with the upcoming 2.0 release, OpenOffice.org will store data in the open XML file format adopted by the international standards body OASIS.

Fonts

Selected fonts and glyphs created by BenJamin P. Johnson.

Xerces

This product uses Xerces which is licensed under the Apache License as detailed below. It is not a Derivative Work as it merely links to the interfaces of Xerces.

Apache License
Version 2.0, January 2004
http://www.apache.org/licenses/

TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION

1. Definitions.

"License" shall mean the terms and conditions for use, reproduction, and distribution as defined by Sections 1 through 9 of this document.

"Licensor" shall mean the copyright owner or entity authorized by the copyright owner that is granting the License.

"Legal Entity" shall mean the union of the acting entity and all other entities that control, are controlled by, or are under common control with that entity. For the purposes of this definition, "control" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity.

"You" (or "Your") shall mean an individual or Legal Entity exercising permissions granted by this License.

"Source" form shall mean the preferred form for making modifications, including but not limited to software source code, documentation source, and configuration files.

"Object" form shall mean any form resulting from mechanical transformation or translation of a Source form, including but not limited to compiled object code, generated documentation, and conversions to other media types.

"Work" shall mean the work of authorship, whether in Source or Object form, made available under the License, as indicated by a copyright notice that is included in or attached to the work (an example is provided in the Appendix below).

"Derivative Works" shall mean any work, whether in Source or Object form, that is based on (or derived from) the Work and for which the editorial revisions, annotations, elaborations, or other modifications represent, as a whole, an original work of authorship. For the purposes of this License, Derivative Works shall not include works that remain separable from, or merely link (or bind by name) to the interfaces of, the Work and Derivative Works thereof.

"Contribution" shall mean any work of authorship, including the original version of the Work and any modifications or additions to that Work or Derivative Works thereof, that is intentionally submitted to Licensor for inclusion in the Work by the copyright owner or by an individual or Legal Entity authorized to submit on behalf of the copyright owner. For the purposes of this definition, "submitted" means any form of electronic, verbal, or written communication sent to the Licensor or its representatives, including but not limited to communication on electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, the Licensor for the purpose of discussing and improving the Work, but excluding communication that is conspicuously marked or otherwise designated in writing by the copyright owner as "Not a Contribution."

"Contributor" shall mean Licensor and any individual or Legal Entity on behalf of whom a Contribution has been received by Licensor and subsequently incorporated within the Work.

2. Grant of Copyright License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and distribute the Work and such Derivative Works in Source or Object form.

3. Grant of Patent License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such license applies only to those patent claims licensable by such Contributor that are necessarily infringed by their Contribution(s) alone or by combination of their Contribution(s) with the Work to which such Contribution(s) was submitted. If You institute patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Work or a Contribution incorporated within the Work constitutes direct or contributory patent infringement, then any patent licenses granted to You under this License for that Work shall terminate as of the date such litigation is filed.

4. Redistribution. You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without modifications, and in Source or Object form, provided that You meet the following conditions:

  1. You must give any other recipients of the Work or Derivative Works a copy of this License; and
  2. You must cause any modified files to carry prominent notices stating that You changed the files; and
  3. You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source form of the Work, excluding those notices that do not pertain to any part of the Derivative Works; and
  4. If the Work includes a "NOTICE" text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one of the following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or documentation, if provided along with the Derivative Works; or, within a display generated by the Derivative Works, if and wherever such third-party notices normally appear. The contents of the NOTICE file are for informational purposes only and do not modify the License. You may add Your own attribution notices within Derivative Works that You distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be construed as modifying the License.

You may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of the Work otherwise complies with the conditions stated in this License.

5. Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions.

6. Trademarks. This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor, except as required for reasonable and customary use in describing the origin of the Work and reproducing the content of the NOTICE file.

7. Disclaimer of Warranty. Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License.

8. Limitation of Liability. In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall any Contributor be liable to You for damages, including any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or out of the use or inability to use the Work (including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses), even if such Contributor has been advised of the possibility of such damages.

9. Accepting Warranty or Additional Liability. While redistributing the Work or Derivative Works thereof, You may choose to offer, and charge a fee for, acceptance of support, warranty, indemnity, or other liability obligations and/or rights consistent with this License. However, in accepting such obligations, You may act only on Your own behalf and on Your sole responsibility, not on behalf of any other Contributor, and only if You agree to indemnify, defend, and hold each Contributor harmless for any liability incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability.

XPS

This product may incorporate intellectual property owned by Microsoft Corporation. The terms and conditions upon which Microsoft is licensing such intellectual property may be found at http://go.microsoft.com/fwlink/?LinkId=52369.

XML schemas

Portions of this software may use XML schemas Copyright (c) 2006 DCMI, the Dublin Core Metadata Initiative. These are licensed under the Creative Commons 3.0 Attribution license.

:[diStorm64}:

diStorm64 is an open-source disassembler library for x64, licensed under the BSD License.

:[diStorm64}:
The ultimate disassembler library.
Copyright (c) 2003,2004,2005,2006,2007,2008, Gil Dabah
All rights reserved.

Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:

  • Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
  • Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
  • Neither the name of the diStorm nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

Boost

Boost provides free peer-reviewed portable C++ source libraries.

:Boost Software License - Version 1.0 - August 17th, 2003

Permission is hereby granted, free of charge, to any person or organization obtaining a copy of the software and accompanying documentation covered by this license (the "Software") to use, reproduce, display, distribute, execute, and transmit the Software, and to prepare derivative works of the Software, and to permit third-parties to whom the Software is furnished to do so, all subject to the following:

The copyright notices in the Software and this entire statement, including the above license grant, this restriction and the following disclaimer, must be included in all copies of the Software, in whole or in part, and all derivative works of the Software, unless such copies or derivative works are solely in the form of machine-executable object code generated by a source language processor.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE..

JasPer

This software is based in part on JasPer.

JasPer License Version 2.0

Copyright (c) 2001-2006 Michael David Adams
Copyright (c) 1999-2000 Image Power, Inc.
Copyright (c) 1999-2000 The University of British Columbia

All rights reserved.

Permission is hereby granted, free of charge, to any person (the "User") obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

1. The above copyright notices and this permission notice (which includes the disclaimer below) shall be included in all copies or substantial portions of the Software.

2. The name of a copyright holder shall not be used to endorse or promote products derived from the Software without specific prior written permission.

THIS DISCLAIMER OF WARRANTY CONSTITUTES AN ESSENTIAL PART OF THIS LICENSE. NO USE OF THE SOFTWARE IS AUTHORIZED HEREUNDER EXCEPT UNDER THIS DISCLAIMER. THE SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. NO ASSURANCES ARE PROVIDED BY THE COPYRIGHT HOLDERS THAT THE SOFTWARE DOES NOT INFRINGE THE PATENT OR OTHER INTELLECTUAL PROPERTY RIGHTS OF ANY OTHER ENTITY. EACH COPYRIGHT HOLDER DISCLAIMS ANY LIABILITY TO THE USER FOR CLAIMS BROUGHT BY ANY OTHER ENTITY BASED ON INFRINGEMENT OF INTELLECTUAL PROPERTY RIGHTS OR OTHERWISE. AS A CONDITION TO EXERCISING THE RIGHTS GRANTED HEREUNDER, EACH USER HEREBY ASSUMES SOLE RESPONSIBILITY TO SECURE ANY OTHER INTELLECTUAL PROPERTY RIGHTS NEEDED, IF ANY. THE SOFTWARE IS NOT FAULT-TOLERANT AND IS NOT INTENDED FOR USE IN MISSION-CRITICAL SYSTEMS, SUCH AS THOSE USED IN THE OPERATION OF NUCLEAR FACILITIES, AIRCRAFT NAVIGATION OR COMMUNICATION SYSTEMS, AIR TRAFFIC CONTROL SYSTEMS, DIRECT LIFE SUPPORT MACHINES, OR WEAPONS SYSTEMS, IN WHICH THE FAILURE OF THE SOFTWARE OR SYSTEM COULD LEAD DIRECTLY TO DEATH, PERSONAL INJURY, OR SEVERE PHYSICAL OR ENVIRONMENTAL DAMAGE ("HIGH RISK ACTIVITIES"). THE COPYRIGHT HOLDERS SPECIFICALLY DISCLAIM ANY EXPRESS OR IMPLIED WARRANTY OF FITNESS FOR HIGH RISK ACTIVITIES.

libxml

This software is based in part on libxml.

Except where otherwise noted in the source code (trio files, hash.c and list.c) covered by a similar licence but with different Copyright notices:

Copyright (C) 1998-2002 Daniel Veillard. All Rights Reserved.

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE DANIEL VEILLARD BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

Except as contained in this notice, the name of Daniel Veillard shall not be used in advertising or otherwise to promote the sale, use or other deal- ings in this Software without prior written authorization from him.

Trio Files

* Copyright (C) 1998 Bjorn Reese and Daniel Stenberg.
*
* Permission to use, copy, modify, and distribute this software for any
* purpose with or without fee is hereby granted, provided that the above
* copyright notice and this permission notice appear in all copies.
*
* THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED
* WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
* MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE AUTHORS AND
* CONTRIBUTORS ACCEPT NO RESPONSIBILITY IN ANY CONCEIVABLE MANNER.

Hash.c

* Copyright (C) 2000 Bjorn Reese and Daniel Veillard.
*
* Permission to use, copy, modify, and distribute this software for any
* purpose with or without fee is hereby granted, provided that the above
* copyright notice and this permission notice appear in all copies.
*
* THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED
* WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
* MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE AUTHORS AND
* CONTRIBUTORS ACCEPT NO RESPONSIBILITY IN ANY CONCEIVABLE MANNER.

List.c

* Copyright (C) 2000 Gary Pennington and Daniel Veillard.
*
* Permission to use, copy, modify, and distribute this software for any
* purpose with or without fee is hereby granted, provided that the above
* copyright notice and this permission notice appear in all copies.
*
* THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED
* WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
* MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE AUTHORS AND
* CONTRIBUTORS ACCEPT NO RESPONSIBILITY IN ANY CONCEIVABLE MANNER.

ImageMagick

This product uses ImageMagick (http://www.imagemagick.org/), which is available under the following license:

The legally binding and authoritative terms and conditions for use, reproduction, and distribution of ImageMagick follow:

Copyright 1999-2009 ImageMagick Studio LLC, a non-profit organization dedicated to making software imaging solutions freely available.

1. Definitions.

"License" shall mean the terms and conditions for use, reproduction, and distribution as defined by Sections 1 through 9 of this document.

"Licensor" shall mean the copyright owner or entity authorized by the copyright owner that is granting the License.

"Legal Entity" shall mean the union of the acting entity and all other entities that control, are controlled by, or are under common control with that entity. For the purposes of this definition, "control" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity.

"You" (or "Your") shall mean an individual or Legal Entity exercising permissions granted by this License.

"Source" form shall mean the preferred form for making modifications, including but not limited to software source code, documentation source, and configuration files.

"Object" form shall mean any form resulting from mechanical transformation or translation of a Source form, including but not limited to compiled object code, generated documentation, and conversions to other media types.

"Work" shall mean the work of authorship, whether in Source or Object form, made available under the License, as indicated by a copyright notice that is included in or attached to the work (an example is provided in the Appendix below).

"Derivative Works" shall mean any work, whether in Source or Object form, that is based on (or derived from) the Work and for which the editorial revisions, annotations, elaborations, or other modifications represent, as a whole, an original work of authorship. For the purposes of this License, Derivative Works shall not include works that remain separable from, or merely link (or bind by name) to the interfaces of, the Work and Derivative Works thereof.

"Contribution" shall mean any work of authorship, including the original version of the Work and any modifications or additions to that Work or Derivative Works thereof, that is intentionally submitted to Licensor for inclusion in the Work by the copyright owner or by an individual or Legal Entity authorized to submit on behalf of the copyright owner. For the purposes of this definition, "submitted" means any form of electronic, verbal, or written communication intentionally sent to the Licensor by its copyright holder or its representatives, including but not limited to communication on electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, the Licensor for the purpose of discussing and improving the Work, but excluding communication that is conspicuously marked or otherwise designated in writing by the copyright owner as "Not a Contribution."

"Contributor" shall mean Licensor and any individual or Legal Entity on behalf of whom a Contribution has been received by Licensor and subsequently incorporated within the Work.

2. Grant of Copyright License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and distribute the Work and such Derivative Works in Source or Object form.

3. Grant of Patent License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such license applies only to those patent claims licensable by such Contributor that are necessarily infringed by their Contribution(s) alone or by combination of their Contribution(s) with the Work to which such Contribution(s) was submitted.

4. Redistribution. You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without modifications, and in Source or Object form, provided that You meet the following conditions:

  1. You must give any other recipients of the Work or Derivative Works a copy of this License; and
  2. You must cause any modified files to carry prominent notices stating that You changed the files; and
  3. You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source form of the Work, excluding those notices that do not pertain to any part of the Derivative Works; and
  4. If the Work includes a "NOTICE" text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one of the following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or documentation, if provided along with the Derivative Works; or, within a display generated by the Derivative Works, if and wherever such third-party notices normally appear. The contents of the NOTICE file are for informational purposes only and do not modify the License. You may add Your own attribution notices within Derivative Works that You distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be construed as modifying the License.

You may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of the Work otherwise complies with the conditions stated in this License.

5. Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions.

6. Trademarks. This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor, except as required for reasonable and customary use in describing the origin of the Work and reproducing the content of the NOTICE file.

7. Disclaimer of Warranty. Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License.

8. Limitation of Liability. In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall any Contributor be liable to You for damages, including any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or out of the use or inability to use the Work (including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses), even if such Contributor has been advised of the possibility of such damages.

9. Accepting Warranty or Additional Liability. While redistributing the Work or Derivative Works thereof, You may choose to offer, and charge a fee for, acceptance of support, warranty, indemnity, or other liability obligations and/or rights consistent with this License.

APPENDIX: How to apply the ImageMagick License to your work
To apply the ImageMagick License to your work, attach the following boilerplate notice, with the fields enclosed by brackets "[]" replaced with your own identifying information. (Don't include the brackets!) The text should be enclosed in the appropriate comment syntax for the file format.

Copyright [yyyy] [name of copyright owner]
Licensed under the ImageMagick License (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at

http://www.imagemagick.org/script/license.php

Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.

In addition the following Notice is required to be included by the ImageMagick license:

The ImageMagick logo is copyright Pineapple USA Inc. It is freely distributable, however, modifications (other than resizing) to the logo are not permitted.

----

ImageMagick incorporated a small portion of code from the gsview package to locate Ghostscript under Windows in magick/nt_base.c. The source code is distributed under the following license:

Copyright (C) 2000-2002, Ghostgum Software Pty Ltd. All rights reserved.

Permission is hereby granted, free of charge, to any person obtaining a copy of this file ("Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of this Software, and to permit persons to whom this file is furnished to do so, subject to the following conditions:

This Software is distributed with NO WARRANTY OF ANY KIND. No author or distributor accepts any responsibility for the consequences of using it, or for whether it serves any particular purpose or works at all, unless he or she says so in writing.

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

----

The Base64Decode() and Base64Encode() methods in magick/utility.c is based on source code obtained from OpenSSH. The source code is distributed under the following license:

Copyright (c) 2000 Markus Friedl. All rights reserved.

Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:

  1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
  2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.

THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

----

ImageMagick includes patterns in coders/pattern.c which are derived from XFig and is distributed under the following license:

FIG : Facility for Interactive Generation of figures Copyright (c) 1985-1988 by Supoj Sutanthavibul Parts Copyright (c) 1989-2000 by Brian V. Smith Parts Copyright (c) 1991 by Paul King

Any party obtaining a copy of these files is granted, free of charge, a full and unrestricted irrevocable, world-wide, paid up, royalty-free, nonexclusive right and license to deal in this software and documentation files (the "Software"), including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons who receive copies from any such party to do so, with the only requirement being that this copyright notice remain intact.

----

In November 2002, the GraphicsMagick Group created GraphicsMagick from ImageMagick Studio's ImageMagick source. ImageMagick adopted some of their improvements to existing programs and scripts under the following license:

Copyright (C) 2002 GraphicsMagick Group, an organization dedicated to making software imaging solutions freely available.

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files ("GraphicsMagick"), to deal in GraphicsMagick without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of GraphicsMagick, and to permit persons to whom GraphicsMagick is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of GraphicsMagick.

The software is provided "as is", without warranty of any kind, express or implied, including but not limited to the warranties of merchantability, fitness for a particular purpose and noninfringement. In no event shall GraphicsMagick Group be liable for any claim, damages or other liability, whether in an action of contract, tort or otherwise, arising from, out of or in connection with GraphicsMagick or the use or other dealings in GraphicsMagick.

Except as contained in this notice, the name of the GraphicsMagick Group shall not be used in advertising or otherwise to promote the sale, use or other dealings in GraphicsMagick without prior written authorization from the GraphicsMagick Group.

----

ImageMagick makes use of third-party "delegate" libraries to support certain optional features. These libraries bear their own copyrights and licenses, which may be more or less restrictive than the ImageMagick license.

Mozilla XULRunner

This product uses a modified version of Mozilla XULRunner under the Mozilla Public License, version 1.1.

 MOZILLA PUBLIC LICENSE
 Version 1.1

 ---------------

1. Definitions.

 1.0.1. "Commercial Use" means distribution or otherwise making the
 Covered Code available to a third party.

 1.1. "Contributor" means each entity that creates or contributes to
 the creation of Modifications.

 1.2. "Contributor Version" means the combination of the Original
 Code, prior Modifications used by a Contributor, and the Modifications
 made by that particular Contributor.

 1.3. "Covered Code" means the Original Code or Modifications or the
 combination of the Original Code and Modifications, in each case
 including portions thereof.

 1.4. "Electronic Distribution Mechanism" means a mechanism generally
 accepted in the software development community for the electronic
 transfer of data.

 1.5. "Executable" means Covered Code in any form other than Source
 Code.

 1.6. "Initial Developer" means the individual or entity identified
 as the Initial Developer in the Source Code notice required by Exhibit
 A.

 1.7. "Larger Work" means a work which combines Covered Code or
 portions thereof with code not governed by the terms of this License.

 1.8. "License" means this document.

 1.8.1. "Licensable" means having the right to grant, to the maximum
 extent possible, whether at the time of the initial grant or
 subsequently acquired, any and all of the rights conveyed herein.

 1.9. "Modifications" means any addition to or deletion from the
 substance or structure of either the Original Code or any previous
 Modifications. When Covered Code is released as a series of files, a
 Modification is:
 A. Any addition to or deletion from the contents of a file
 containing Original Code or previous Modifications.

 B. Any new file that contains any part of the Original Code or
 previous Modifications.

 1.10. "Original Code" means Source Code of computer software code
 which is described in the Source Code notice required by Exhibit A as
 Original Code, and which, at the time of its release under this
 License is not already Covered Code governed by this License.

 1.10.1. "Patent Claims" means any patent claim(s), now owned or
 hereafter acquired, including without limitation, method, process,
 and apparatus claims, in any patent Licensable by grantor.

 1.11. "Source Code" means the preferred form of the Covered Code for
 making modifications to it, including all modules it contains, plus
 any associated interface definition files, scripts used to control
 compilation and installation of an Executable, or source code
 differential comparisons against either the Original Code or another
 well known, available Covered Code of the Contributor's choice. The
 Source Code can be in a compressed or archival form, provided the
 appropriate decompression or de-archiving software is widely available
 for no charge.

 1.12. "You" (or "Your") means an individual or a legal entity
 exercising rights under, and complying with all of the terms of, this
 License or a future version of this License issued under Section 6.1.
 For legal entities, "You" includes any entity which controls, is
 controlled by, or is under common control with You. For purposes of
 this definition, "control" means (a) the power, direct or indirect,
 to cause the direction or management of such entity, whether by
 contract or otherwise, or (b) ownership of more than fifty percent
 (50%) of the outstanding shares or beneficial ownership of such
 entity.

2. Source Code License.

 2.1. The Initial Developer Grant.
 The Initial Developer hereby grants You a world-wide, royalty-free,
 non-exclusive license, subject to third party intellectual property
 claims:
 (a) under intellectual property rights (other than patent or
 trademark) Licensable by Initial Developer to use, reproduce,
 modify, display, perform, sublicense and distribute the Original
 Code (or portions thereof) with or without Modifications, and/or
 as part of a Larger Work; and

 (b) under Patents Claims infringed by the making, using or
 selling of Original Code, to make, have made, use, practice,
 sell, and offer for sale, and/or otherwise dispose of the
 Original Code (or portions thereof).

 (c) the licenses granted in this Section 2.1(a) and (b) are
 effective on the date Initial Developer first distributes
 Original Code under the terms of this License.

 (d) Notwithstanding Section 2.1(b) above, no patent license is
 granted: 1) for code that You delete from the Original Code; 2)
 separate from the Original Code; or 3) for infringements caused
 by: i) the modification of the Original Code or ii) the
 combination of the Original Code with other software or devices.

 2.2. Contributor Grant.
 Subject to third party intellectual property claims, each Contributor
 hereby grants You a world-wide, royalty-free, non-exclusive license

 (a) under intellectual property rights (other than patent or
 trademark) Licensable by Contributor, to use, reproduce, modify,
 display, perform, sublicense and distribute the Modifications
 created by such Contributor (or portions thereof) either on an
 unmodified basis, with other Modifications, as Covered Code
 and/or as part of a Larger Work; and

 (b) under Patent Claims infringed by the making, using, or
 selling of Modifications made by that Contributor either alone
 and/or in combination with its Contributor Version (or portions
 of such combination), to make, use, sell, offer for sale, have
 made, and/or otherwise dispose of: 1) Modifications made by that
 Contributor (or portions thereof); and 2) the combination of
 Modifications made by that Contributor with its Contributor
 Version (or portions of such combination).

 (c) the licenses granted in Sections 2.2(a) and 2.2(b) are
 effective on the date Contributor first makes Commercial Use of
 the Covered Code.

 (d) Notwithstanding Section 2.2(b) above, no patent license is
 granted: 1) for any code that Contributor has deleted from the
 Contributor Version; 2) separate from the Contributor Version;
 3) for infringements caused by: i) third party modifications of
 Contributor Version or ii) the combination of Modifications made
 by that Contributor with other software (except as part of the
 Contributor Version) or other devices; or 4) under Patent Claims
 infringed by Covered Code in the absence of Modifications made by
 that Contributor.

3. Distribution Obligations.

 3.1. Application of License.
 The Modifications which You create or to which You contribute are
 governed by the terms of this License, including without limitation
 Section 2.2. The Source Code version of Covered Code may be
 distributed only under the terms of this License or a future version
 of this License released under Section 6.1, and You must include a
 copy of this License with every copy of the Source Code You
 distribute. You may not offer or impose any terms on any Source Code
 version that alters or restricts the applicable version of this
 License or the recipients' rights hereunder. However, You may include
 an additional document offering the additional rights described in
 Section 3.5.

 3.2. Availability of Source Code.
 Any Modification which You create or to which You contribute must be
 made available in Source Code form under the terms of this License
 either on the same media as an Executable version or via an accepted
 Electronic Distribution Mechanism to anyone to whom you made an
 Executable version available; and if made available via Electronic
 Distribution Mechanism, must remain available for at least twelve (12)
 months after the date it initially became available, or at least six
 (6) months after a subsequent version of that particular Modification
 has been made available to such recipients. You are responsible for
 ensuring that the Source Code version remains available even if the
 Electronic Distribution Mechanism is maintained by a third party.

 3.3. Description of Modifications.
 You must cause all Covered Code to which You contribute to contain a
 file documenting the changes You made to create that Covered Code and
 the date of any change. You must include a prominent statement that
 the Modification is derived, directly or indirectly, from Original
 Code provided by the Initial Developer and including the name of the
 Initial Developer in (a) the Source Code, and (b) in any notice in an
 Executable version or related documentation in which You describe the
 origin or ownership of the Covered Code.

 3.4. Intellectual Property Matters
 (a) Third Party Claims.
 If Contributor has knowledge that a license under a third party's
 intellectual property rights is required to exercise the rights
 granted by such Contributor under Sections 2.1 or 2.2,
 Contributor must include a text file with the Source Code
 distribution titled "LEGAL" which describes the claim and the
 party making the claim in sufficient detail that a recipient will
 know whom to contact. If Contributor obtains such knowledge after
 the Modification is made available as described in Section 3.2,
 Contributor shall promptly modify the LEGAL file in all copies
 Contributor makes available thereafter and shall take other steps
 (such as notifying appropriate mailing lists or newsgroups)
 reasonably calculated to inform those who received the Covered
 Code that new knowledge has been obtained.

 (b) Contributor APIs.
 If Contributor's Modifications include an application programming
 interface and Contributor has knowledge of patent licenses which
 are reasonably necessary to implement that API, Contributor must
 also include this information in the LEGAL file.

 (c) Representations.
 Contributor represents that, except as disclosed pursuant to
 Section 3.4(a) above, Contributor believes that Contributor's
 Modifications are Contributor's original creation(s) and/or
 Contributor has sufficient rights to grant the rights conveyed by
 this License.

 3.5. Required Notices.
 You must duplicate the notice in Exhibit A in each file of the Source
 Code. If it is not possible to put such notice in a particular Source
 Code file due to its structure, then You must include such notice in a
 location (such as a relevant directory) where a user would be likely
 to look for such a notice. If You created one or more Modification(s)
 You may add your name as a Contributor to the notice described in
 Exhibit A. You must also duplicate this License in any documentation
 for the Source Code where You describe recipients' rights or ownership
 rights relating to Covered Code. You may choose to offer, and to
 charge a fee for, warranty, support, indemnity or liability
 obligations to one or more recipients of Covered Code. However, You
 may do so only on Your own behalf, and not on behalf of the Initial
 Developer or any Contributor. You must make it absolutely clear than
 any such warranty, support, indemnity or liability obligation is
 offered by You alone, and You hereby agree to indemnify the Initial
 Developer and every Contributor for any liability incurred by the
 Initial Developer or such Contributor as a result of warranty,
 support, indemnity or liability terms You offer.

 3.6. Distribution of Executable Versions.
 You may distribute Covered Code in Executable form only if the
 requirements of Section 3.1-3.5 have been met for that Covered Code,
 and if You include a notice stating that the Source Code version of
 the Covered Code is available under the terms of this License,
 including a description of how and where You have fulfilled the
 obligations of Section 3.2. The notice must be conspicuously included
 in any notice in an Executable version, related documentation or
 collateral in which You describe recipients' rights relating to the
 Covered Code. You may distribute the Executable version of Covered
 Code or ownership rights under a license of Your choice, which may
 contain terms different from this License, provided that You are in
 compliance with the terms of this License and that the license for the
 Executable version does not attempt to limit or alter the recipient's
 rights in the Source Code version from the rights set forth in this
 License. If You distribute the Executable version under a different
 license You must make it absolutely clear that any terms which differ
 from this License are offered by You alone, not by the Initial
 Developer or any Contributor. You hereby agree to indemnify the
 Initial Developer and every Contributor for any liability incurred by
 the Initial Developer or such Contributor as a result of any such
 terms You offer.

 3.7. Larger Works.
 You may create a Larger Work by combining Covered Code with other code
 not governed by the terms of this License and distribute the Larger
 Work as a single product. In such a case, You must make sure the
 requirements of this License are fulfilled for the Covered Code.

4. Inability to Comply Due to Statute or Regulation.

 If it is impossible for You to comply with any of the terms of this
 License with respect to some or all of the Covered Code due to
 statute, judicial order, or regulation then You must: (a) comply with
 the terms of this License to the maximum extent possible; and (b)
 describe the limitations and the code they affect. Such description
 must be included in the LEGAL file described in Section 3.4 and must
 be included with all distributions of the Source Code. Except to the
 extent prohibited by statute or regulation, such description must be
 sufficiently detailed for a recipient of ordinary skill to be able to
 understand it.

5. Application of this License.

 This License applies to code to which the Initial Developer has
 attached the notice in Exhibit A and to related Covered Code.

6. Versions of the License.

 6.1. New Versions.
 Netscape Communications Corporation ("Netscape") may publish revised
 and/or new versions of the License from time to time. Each version
 will be given a distinguishing version number.

 6.2. Effect of New Versions.
 Once Covered Code has been published under a particular version of the
 License, You may always continue to use it under the terms of that
 version. You may also choose to use such Covered Code under the terms
 of any subsequent version of the License published by Netscape. No one
 other than Netscape has the right to modify the terms applicable to
 Covered Code created under this License.

 6.3. Derivative Works.
 If You create or use a modified version of this License (which you may
 only do in order to apply it to code which is not already Covered Code
 governed by this License), You must (a) rename Your license so that
 the phrases "Mozilla", "MOZILLAPL", "MOZPL", "Netscape",

 "MPL", "NPL" or any confusingly similar phrase do not appear in your
 license (except to note that your license differs from this License)
 and (b) otherwise make it clear that Your version of the license
 contains terms which differ from the Mozilla Public License and
 Netscape Public License. (Filling in the name of the Initial
 Developer, Original Code or Contributor in the notice described in
 Exhibit A shall not of themselves be deemed to be modifications of
 this License.)

7. DISCLAIMER OF WARRANTY.

 COVERED CODE IS PROVIDED UNDER THIS LICENSE ON AN "AS IS" BASIS,
 WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
 WITHOUT LIMITATION, WARRANTIES THAT THE COVERED CODE IS FREE OF
 DEFECTS, MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE OR NON-INFRINGING.
 THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE COVERED CODE
 IS WITH YOU. SHOULD ANY COVERED CODE PROVE DEFECTIVE IN ANY RESPECT,
 YOU (NOT THE INITIAL DEVELOPER OR ANY OTHER CONTRIBUTOR) ASSUME THE
 COST OF ANY NECESSARY SERVICING, REPAIR OR CORRECTION. THIS DISCLAIMER
 OF WARRANTY CONSTITUTES AN ESSENTIAL PART OF THIS LICENSE. NO USE OF
 ANY COVERED CODE IS AUTHORIZED HEREUNDER EXCEPT UNDER THIS DISCLAIMER.

8. TERMINATION.

 8.1. This License and the rights granted hereunder will terminate
 automatically if You fail to comply with terms herein and fail to cure
 such breach within 30 days of becoming aware of the breach. All
 sublicenses to the Covered Code which are properly granted shall
 survive any termination of this License. Provisions which, by their
 nature, must remain in effect beyond the termination of this License
 shall survive.

 8.2. If You initiate litigation by asserting a patent infringement
 claim (excluding declatory judgment actions) against Initial Developer
 or a Contributor (the Initial Developer or Contributor against whom
 You file such action is referred to as "Participant") alleging that:

 (a) such Participant's Contributor Version directly or indirectly
 infringes any patent, then any and all rights granted by such
 Participant to You under Sections 2.1 and/or 2.2 of this License
 shall, upon 60 days notice from Participant terminate prospectively,
 unless if within 60 days after receipt of notice You either: (i)
 agree in writing to pay Participant a mutually agreeable reasonable
 royalty for Your past and future use of Modifications made by such
 Participant, or (ii) withdraw Your litigation claim with respect to
 the Contributor Version against such Participant. If within 60 days
 of notice, a reasonable royalty and payment arrangement are not
 mutually agreed upon in writing by the parties or the litigation claim
 is not withdrawn, the rights granted by Participant to You under
 Sections 2.1 and/or 2.2 automatically terminate at the expiration of
 the 60 day notice period specified above.

 (b) any software, hardware, or device, other than such Participant's
 Contributor Version, directly or indirectly infringes any patent, then
 any rights granted to You by such Participant under Sections 2.1(b)
 and 2.2(b) are revoked effective as of the date You first made, used,
 sold, distributed, or had made, Modifications made by that
 Participant.

 8.3. If You assert a patent infringement claim against Participant
 alleging that such Participant's Contributor Version directly or
 indirectly infringes any patent where such claim is resolved (such as
 by license or settlement) prior to the initiation of patent
 infringement litigation, then the reasonable value of the licenses
 granted by such Participant under Sections 2.1 or 2.2 shall be taken
 into account in determining the amount or value of any payment or
 license.

 8.4. In the event of termination under Sections 8.1 or 8.2 above,
 all end user license agreements (excluding distributors and resellers)
 which have been validly granted by You or any distributor hereunder
 prior to termination shall survive termination.

9. LIMITATION OF LIABILITY.

 UNDER NO CIRCUMSTANCES AND UNDER NO LEGAL THEORY, WHETHER TORT
 (INCLUDING NEGLIGENCE), CONTRACT, OR OTHERWISE, SHALL YOU, THE INITIAL
 DEVELOPER, ANY OTHER CONTRIBUTOR, OR ANY DISTRIBUTOR OF COVERED CODE,
 OR ANY SUPPLIER OF ANY OF SUCH PARTIES, BE LIABLE TO ANY PERSON FOR
 ANY INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES OF ANY
 CHARACTER INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOSS OF GOODWILL,
 WORK STOPPAGE, COMPUTER FAILURE OR MALFUNCTION, OR ANY AND ALL OTHER
 COMMERCIAL DAMAGES OR LOSSES, EVEN IF SUCH PARTY SHALL HAVE BEEN
 INFORMED OF THE POSSIBILITY OF SUCH DAMAGES. THIS LIMITATION OF
 LIABILITY SHALL NOT APPLY TO LIABILITY FOR DEATH OR PERSONAL INJURY
 RESULTING FROM SUCH PARTY'S NEGLIGENCE TO THE EXTENT APPLICABLE LAW
 PROHIBITS SUCH LIMITATION. SOME JURISDICTIONS DO NOT ALLOW THE
 EXCLUSION OR LIMITATION OF INCIDENTAL OR CONSEQUENTIAL DAMAGES, SO
 THIS EXCLUSION AND LIMITATION MAY NOT APPLY TO YOU.

10. U.S. GOVERNMENT END USERS.

 The Covered Code is a "commercial item," as that term is defined in
 48 C.F.R. 2.101 (Oct. 1995), consisting of "commercial computer
 software" and "commercial computer software documentation," as such
 terms are used in 48 C.F.R. 12.212 (Sept. 1995). Consistent with 48
 C.F.R. 12.212 and 48 C.F.R. 227.7202-1 through 227.7202-4 (June 1995),
 all U.S. Government End Users acquire Covered Code with only those
 rights set forth herein.

11. MISCELLANEOUS.

 This License represents the complete agreement concerning subject
 matter hereof. If any provision of this License is held to be
 unenforceable, such provision shall be reformed only to the extent
 necessary to make it enforceable. This License shall be governed by
 California law provisions (except to the extent applicable law, if
 any, provides otherwise), excluding its conflict-of-law provisions.
 With respect to disputes in which at least one party is a citizen of,
 or an entity chartered or registered to do business in the United
 States of America, any litigation relating to this License shall be
 subject to the jurisdiction of the Federal Courts of the Northern
 District of California, with venue lying in Santa Clara County,
 California, with the losing party responsible for costs, including
 without limitation, court costs and reasonable attorneys' fees and
 expenses. The application of the United Nations Convention on
 Contracts for the International Sale of Goods is expressly excluded.
 Any law or regulation which provides that the language of a contract
 shall be construed against the drafter shall not apply to this
 License.

12. RESPONSIBILITY FOR CLAIMS.

 As between Initial Developer and the Contributors, each party is
 responsible for claims and damages arising, directly or indirectly,
 out of its utilization of rights under this License and You agree to
 work with Initial Developer and Contributors to distribute such
 responsibility on an equitable basis. Nothing herein is intended or
 shall be deemed to constitute any admission of liability.

13. MULTIPLE-LICENSED CODE.

 Initial Developer may designate portions of the Covered Code as
 "Multiple-Licensed". "Multiple-Licensed" means that the Initial
 Developer permits you to utilize portions of the Covered Code under
 Your choice of the NPL or the alternative licenses, if any, specified
 by the Initial Developer in the file described in Exhibit A.

EXHIBIT A -Mozilla Public License.

 ``The contents of this file are subject to the Mozilla Public License
 Version 1.1 (the "License"); you may not use this file except in
 compliance with the License. You may obtain a copy of the License at
 http://www.mozilla.org/MPL/

 Software distributed under the License is distributed on an "AS IS"
 basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the
 License for the specific language governing rights and limitations
 under the License.

 The Original Code is ______________________________________.

 The Initial Developer of the Original Code is ________________________.
 Portions created by ______________________ are Copyright (C) ______
 _______________________. All Rights Reserved.

 Contributor(s): ______________________________________.

 Alternatively, the contents of this file may be used under the terms
 of the _____ license (the "[___] License"), in which case the
 provisions of [______] License are applicable instead of those
 above. If you wish to allow use of your version of this file only
 under the terms of the [____] License and not to allow others to use
 your version of this file under the MPL, indicate your decision by
 deleting the provisions above and replace them with the notice and
 other provisions required by the [___] License. If you do not delete
 the provisions above, a recipient may use your version of this file
 under either the MPL or the [___] License."

 [NOTE: The text of this Exhibit A may differ slightly from the text of
 the notices in the Source Code files of the Original Code. You should
 use the text of this Exhibit A rather than the text found in the
 Original Code Source Code for Your Modifications.]

In compliance with the license, the source code required to produce the modified version of Mozilla Firefox binaries used in this product can be obtained from the product's Web page.

ExplorerCanvas

Modern browsers like Firefox, Safari, Chrome and Opera support the HTML5 canvas tag to allow 2D command-based drawing. ExplorerCanvas brings the same functionality to Internet Explorer. ExplorerCanvas is available under the Apache License detailed below.

 Apache License
 Version 2.0, January 2004
 http://www.apache.org/licenses/

 TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION

 1. Definitions.

 "License" shall mean the terms and conditions for use, reproduction,
 and distribution as defined by Sections 1 through 9 of this document.

 "Licensor" shall mean the copyright owner or entity authorized by
 the copyright owner that is granting the License.

 "Legal Entity" shall mean the union of the acting entity and all
 other entities that control, are controlled by, or are under common
 control with that entity. For the purposes of this definition,
 "control" means (i) the power, direct or indirect, to cause the
 direction or management of such entity, whether by contract or
 otherwise, or (ii) ownership of fifty percent (50%) or more of the
 outstanding shares, or (iii) beneficial ownership of such entity.

 "You" (or "Your") shall mean an individual or Legal Entity
 exercising permissions granted by this License.

 "Source" form shall mean the preferred form for making modifications,
 including but not limited to software source code, documentation
 source, and configuration files.

 "Object" form shall mean any form resulting from mechanical
 transformation or translation of a Source form, including but
 not limited to compiled object code, generated documentation,
 and conversions to other media types.

 "Work" shall mean the work of authorship, whether in Source or
 Object form, made available under the License, as indicated by a
 copyright notice that is included in or attached to the work
 (an example is provided in the Appendix below).

 "Derivative Works" shall mean any work, whether in Source or Object
 form, that is based on (or derived from) the Work and for which the
 editorial revisions, annotations, elaborations, or other modifications
 represent, as a whole, an original work of authorship. For the purposes
 of this License, Derivative Works shall not include works that remain
 separable from, or merely link (or bind by name) to the interfaces of,
 the Work and Derivative Works thereof.

 "Contribution" shall mean any work of authorship, including
 the original version of the Work and any modifications or additions
 to that Work or Derivative Works thereof, that is intentionally
 submitted to Licensor for inclusion in the Work by the copyright owner
 or by an individual or Legal Entity authorized to submit on behalf of
 the copyright owner. For the purposes of this definition, "submitted"
 means any form of electronic, verbal, or written communication sent
 to the Licensor or its representatives, including but not limited to
 communication on electronic mailing lists, source code control systems,
 and issue tracking systems that are managed by, or on behalf of, the
 Licensor for the purpose of discussing and improving the Work, but
 excluding communication that is conspicuously marked or otherwise
 designated in writing by the copyright owner as "Not a Contribution."

 "Contributor" shall mean Licensor and any individual or Legal Entity
 on behalf of whom a Contribution has been received by Licensor and
 subsequently incorporated within the Work.

 2. Grant of Copyright License. Subject to the terms and conditions of
 this License, each Contributor hereby grants to You a perpetual,
 worldwide, non-exclusive, no-charge, royalty-free, irrevocable
 copyright license to reproduce, prepare Derivative Works of,
 publicly display, publicly perform, sublicense, and distribute the
 Work and such Derivative Works in Source or Object form.

 3. Grant of Patent License. Subject to the terms and conditions of
 this License, each Contributor hereby grants to You a perpetual,
 worldwide, non-exclusive, no-charge, royalty-free, irrevocable
 (except as stated in this section) patent license to make, have made,
 use, offer to sell, sell, import, and otherwise transfer the Work,
 where such license applies only to those patent claims licensable
 by such Contributor that are necessarily infringed by their
 Contribution(s) alone or by combination of their Contribution(s)
 with the Work to which such Contribution(s) was submitted. If You
 institute patent litigation against any entity (including a
 cross-claim or counterclaim in a lawsuit) alleging that the Work
 or a Contribution incorporated within the Work constitutes direct
 or contributory patent infringement, then any patent licenses
 granted to You under this License for that Work shall terminate
 as of the date such litigation is filed.

 4. Redistribution. You may reproduce and distribute copies of the
 Work or Derivative Works thereof in any medium, with or without
 modifications, and in Source or Object form, provided that You
 meet the following conditions:

 (a) You must give any other recipients of the Work or
 Derivative Works a copy of this License; and

 (b) You must cause any modified files to carry prominent notices
 stating that You changed the files; and

 (c) You must retain, in the Source form of any Derivative Works
 that You distribute, all copyright, patent, trademark, and
 attribution notices from the Source form of the Work,
 excluding those notices that do not pertain to any part of
 the Derivative Works; and

 (d) If the Work includes a "NOTICE" text file as part of its
 distribution, then any Derivative Works that You distribute must
 include a readable copy of the attribution notices contained
 within such NOTICE file, excluding those notices that do not
 pertain to any part of the Derivative Works, in at least one
 of the following places: within a NOTICE text file distributed
 as part of the Derivative Works; within the Source form or
 documentation, if provided along with the Derivative Works; or,
 within a display generated by the Derivative Works, if and
 wherever such third-party notices normally appear. The contents
 of the NOTICE file are for informational purposes only and
 do not modify the License. You may add Your own attribution
 notices within Derivative Works that You distribute, alongside
 or as an addendum to the NOTICE text from the Work, provided
 that such additional attribution notices cannot be construed
 as modifying the License.

 You may add Your own copyright statement to Your modifications and
 may provide additional or different license terms and conditions
 for use, reproduction, or distribution of Your modifications, or
 for any such Derivative Works as a whole, provided Your use,
 reproduction, and distribution of the Work otherwise complies with
 the conditions stated in this License.

 5. Submission of Contributions. Unless You explicitly state otherwise,
 any Contribution intentionally submitted for inclusion in the Work
 by You to the Licensor shall be under the terms and conditions of
 this License, without any additional terms or conditions.
 Notwithstanding the above, nothing herein shall supersede or modify
 the terms of any separate license agreement you may have executed
 with Licensor regarding such Contributions.

 6. Trademarks. This License does not grant permission to use the trade
 names, trademarks, service marks, or product names of the Licensor,
 except as required for reasonable and customary use in describing the
 origin of the Work and reproducing the content of the NOTICE file.

 7. Disclaimer of Warranty. Unless required by applicable law or
 agreed to in writing, Licensor provides the Work (and each
 Contributor provides its Contributions) on an "AS IS" BASIS,
 WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
 implied, including, without limitation, any warranties or conditions
 of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
 PARTICULAR PURPOSE. You are solely responsible for determining the
 appropriateness of using or redistributing the Work and assume any
 risks associated with Your exercise of permissions under this License.

 8. Limitation of Liability. In no event and under no legal theory,
 whether in tort (including negligence), contract, or otherwise,
 unless required by applicable law (such as deliberate and grossly
 negligent acts) or agreed to in writing, shall any Contributor be
 liable to You for damages, including any direct, indirect, special,
 incidental, or consequential damages of any character arising as a
 result of this License or out of the use or inability to use the
 Work (including but not limited to damages for loss of goodwill,
 work stoppage, computer failure or malfunction, or any and all
 other commercial damages or losses), even if such Contributor
 has been advised of the possibility of such damages.

 9. Accepting Warranty or Additional Liability. While redistributing
 the Work or Derivative Works thereof, You may choose to offer,
 and charge a fee for, acceptance of support, warranty, indemnity,
 or other liability obligations and/or rights consistent with this
 License. However, in accepting such obligations, You may act only
 on Your own behalf and on Your sole responsibility, not on behalf
 of any other Contributor, and only if You agree to indemnify,
 defend, and hold each Contributor harmless for any liability
 incurred by, or claims asserted against, such Contributor by reason
 of your accepting any such warranty or additional liability.

 END OF TERMS AND CONDITIONS

 APPENDIX: How to apply the Apache License to your work.

 To apply the Apache License to your work, attach the following
 boilerplate notice, with the fields enclosed by brackets "[]"
 replaced with your own identifying information. (Don't include
 the brackets!) The text should be enclosed in the appropriate
 comment syntax for the file format. We also recommend that a
 file or class name and description of purpose be included on the
 same "printed page" as the copyright notice for easier
 identification within third-party archives.

 Copyright [yyyy] [name of copyright owner]

 Licensed under the Apache License, Version 2.0 (the "License");
 you may not use this file except in compliance with the License.
 You may obtain a copy of the License at

 http://www.apache.org/licenses/LICENSE-2.0

 Unless required by applicable law or agreed to in writing, software
 distributed under the License is distributed on an "AS IS" BASIS,
 WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 See the License for the specific language governing permissions and
 limitations under the License.

Mhook

Part of this software uses the Mhook library.

Copyright (c) 2007-2008, Marton Anka Portions Copyright (c) 2007, Matt Conover

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

Other

Portions of this software are Copyright (c) 1985, 1986 The Regents of the University of California. All rights reserved.


.NET Essentials

.NET での基本的な使用

DLLs

ABCpdf .NET 8J は、次のコンポーネントから構成されています。

ABCpdf.dll：
.NET アプリケーション と ABCpdf9-32.dll / ABCpdf9-64.dll の間に位置する .NET コンポーネントです。

ABCpdf9-32.dll と ABCpdf9-64.dll：
32ビット及び 64 ビット用の PDF を処理する中核エンジンです。WebSupergooの特許である 「Direct to PDF」 技術が含まれており、マルチスレッド環境で高性能に動作します。

PrintHook32.dll と PrintHook64.dll：
ABCpdf が MS Office ドキュメントが扱えるように Microsoft XPS Document Writer を使用するものです。

インストールにより、基本的な DLL コンポーネントとそのコピー先フォルダの関係は以下のようになります。尚、作成したアプリケーションを配布する場合は、パスが通ってあれば任意のフォルダーにコピーすることができます。

[ABCpdf9J 32ビット版のインストール]

ABCpdf.dll： <インストールフォルダ> \Common のフォルダー
ABCpdf9-32.dlll： <インストールフォルダ>\Common のフォルダー
PrintHook32.dlll： <インストールフォルダ>\Common のフォルダー
PrintHook64.dlll： <インストールフォルダ>\Common のフォルダー

32ビットWindows の場合
ABCpdf9-32.dlll： C:\Windows\System32 のフォルダー
PrintHook32.dlll： C:\Windows\System32 のフォルダー

64ビットWindowsの場合
ABCpdf9-32.dlll： C:\Windows\SysWOW64 のフォルダー
PrintHook32.dlll： C:\Windows\SysWOW64 のフォルダー
PrintHook64.dlll： C:\Windows\System32 のフォルダー

[ABCpdf9J 64ビット版のインストール]

ABCpdf.dll： <インストールフォルダ> \Common のフォルダー
ABCpdf9-64.dlll： <インストールフォルダ>\Common のフォルダー
PrintHook64.dlll： <インストールフォルダ>\Common のフォルダー
PrintHook32.dlll： <インストールフォルダ>\Common のフォルダー

32ビットWindows の場合
（使用できません。）

64ビットWindowsの場合
ABCpdf9-64.dlll： C:\Windows\System32 のフォルダー
PrintHook64.dlll： C:\Windows\System32 のフォルダー
PrintHook32.dlll： C:\Windows\SysWOW64 のフォルダー

Refs

プロジェクトを作成する場合は、ABCpdf の参照をそのプロジェクトに埋め込む必要があります。

埋め込み方法

  1. 「ソリューションエクスプローラ」の「参照設定」のところでマウスを右クリックし、ポップアップメニューから「参照の追加」を選択します。
  2. 「.NET」タブから「abcpdf8」を選択します。
  3. OKボタンを押します。

Names

ABCpdf には、4 つのネームスペースがあり、下記のようにして参照します。

[C#]
using WebSupergoo.ABCpdf9;
using WebSupergoo.ABCpdf9.Objects;
using WebSupergoo.ABCpdf9.Atoms;
using WebSupergoo.ABCpdf9.Operations;

[Visual Basic]
Imports WebSupergoo.ABCpdf9
Imports WebSupergoo.ABCpdf9.Objects
Imports WebSupergoo.ABCpdf9.Atoms
Imports WebSupergoo.ABCpdf9.Operations

ABCpdf9 のネームスペースにはページのレイアウトに使うオブジェクトが含まれています。ほとんどの場合、必要なのはこのネームスペースだけです。

Objects ネームスペースは追加した内容に対し操作したり、アクセスしたりします。これは、複雑な処理に使用されます。

Atoms ネームスペースは PDF データに低いレベルでアクセスします。これが必要なければ、このネームスペースを使用することはありません。

Operations ネームスペースは複数のパラメータとコールバックとともに複雑な命令を実行します。

Example

下記のサンプルコードは、ABCpdf のライセンスの情報を表示します。

[C#]
Doc doc = new Doc();
Response.Write("License: " + doc.License + "<br>");

[Visual Basic]
Dim doc As New Doc()
Response.Write("License: " & doc.License & "<br>")

Security

セキュリティーが設定された状態で ASP.NET が作動していると、ユーザはファイルの作成や書き込みはできません。

ASP.NET のコードから PDF ファイルを保存する場合は、保存先ディレクトリーに書き込み許可を設定する必要があります。


Simple Example

簡単なサンプル

Intro

PDF ドキュメントは簡単な手順で作成できます。最初に ABCpdf のドキュメントオブジェクトを作成し、次にそのオブジェクトにテキスト、イメージやグラフィックスを追加します。

すべての項目は、現在の Page と現在の Rect に追加されます。 別のページや別の領域に描画する場合には Page や Rect の値を変更します。デフォルトのページは最初のページで、デフォルトの描画領域は全ページです。

開発時に FrameRect メソッドを使用することにより、現在のページと現在の描画領域を取得することができます。

項目を追加する度に、オブジェクト ID が生成されます。このオブジェクト ID を使用して、オブジェクトのプロパティを取得したり変更したりします。

Code

下記のコードは、簡単な PDF ドキュメントを作成します。

最初に ABCpdf のドキュメントオブジェクトを作成し、次にフォントのサイズとテキストを設定し、最後に指定した場所に保存します。

[C#]
Doc theDoc = new Doc();
theDoc.FontSize = 96;
theDoc.AddText("Hello World");
theDoc.Save(Server.MapPath("simple.pdf"));
theDoc.Clear();

[Visual Basic]
Dim theDoc As Doc = New Doc()
theDoc.FontSize = 96
theDoc.AddText("Hello World")
theDoc.Save(Server.MapPath("simple.pdf"))
theDoc.Clear()

Results

simple.pdf


Coordinate Spaces

座標空間

General

ABCpdf は Adobe PDF の座標系を使用しています。この座標系の原点 (0,0) はドキュメントの左下です。また座標の単位はポイントで 72 ポイントは 1 インチとなります。

PDF の座標系は下から上へ、一方 Windows の座標系は上から下へ進みますので注意してください。もし違う座標系を使用する場合はドキュメントの Units、TopDown や Transform プロパティを使用してください。

ABCpdf は領域の中の位置をあらわす場合は XPoint オブジェクトを使用し、現在の描画範囲のような領域やページのサイズをあらわす場合は XRect オブジェクトを使用します。

Doc.Rect は最も重要なプロパティで、すべての処理がこのプロパティで行われます。 ドキュメントにテキストを追加すると、テキストは Doc.Rect プロパティの中に追加されます。また四角形を描画したり四角形の枠を設定したりする場合、Doc.Rect プロパティの中で処理が行われます。イメージを追加する時には Doc.Rect プロパティの領域に合わせてスケーリングされます。

ABCpdf のデフォルトのドキュメントの大きさは 612 X 792 ポイントです。(8.5 X 11 インチ)

Example

下記のコードは、ページに四角形を描画します。四角形の左下の位置は 100、200 ポイント、四角形の幅は 400 ポイントで高さは 500 ポイントです。 四角形の場所がよく確認できるように、ページにグリッドを描画しています。

[C#]
Doc theDoc = new Doc();
theDoc.AddGrid();
theDoc.Color.String = "255 0 0";
theDoc.Width = 10;
theDoc.Rect.Position(100, 200);
theDoc.Rect.Width = 400;
theDoc.Rect.Height = 500;
theDoc.FrameRect();
theDoc.Save(Server.MapPath("coordinates.pdf"));

[Visual Basic]
Dim theDoc As Doc = New Doc()
theDoc.AddGrid()
theDoc.Color.String = "255 0 0"
theDoc.Width = 10
theDoc.Rect.Position(100, 200)
theDoc.Rect.Width = 400
theDoc.Rect.Height = 500
theDoc.FrameRect()
theDoc.Save(Server.MapPath("coordinates.pdf"))

coordinates.pdf


Upgrading

アップグレード

Basics

旧バージョンの ABCpdf から ABCpdf 9 に変更する場合は新しい名前空間を設定してください。最小限のコードの変更で ABCpdf の新機能を使用することができます。

以下を

[C#]
using WebSupergoo.ABCpdf8;
[Visual Basic]
Imports WebSupergoo.ABCpdf8

次のように置き換えるだけです。

[C#]
using WebSupergoo.ABCpdf9;
[Visual Basic]
Imports WebSupergoo.ABCpdf9

Changes

ABCpdf 9 は旧バージョンと完全に互換性があります。中核となるエンジンを大幅に変更しましたが、旧バージョンとの互換性を保持しています。

ABCpdf 9 では、テキスト抽出を大幅に改良しました。旧式のメソッドをお使いの場合はコードを更新する必要があります。詳しくは、Doc.GetText メソッドをご覧ください。同様に、テキストに応じたページ生成や使用するエンコードも変わりました。旧バージョンでは常に UCS-2 エンコードを使用していましたが、ABCpdf 9 ではページで使われている文字に応じて標準の ASCII か UTF-8 を使用します。


Core Objects

基本オブジェクト

Base

Adobe Portable Document Format (PDF) ファイルは多くのオブジェクトからできています。これらのオブジェクトはページや、リソース、イメージの描画命令の実行順序やドキュメントが要求する多くのコンポーネントです。

すべてのオブジェクトにはユニークな ID と Type があります。階層構造になっているドキュメントのルートは Root でアクセスできます。

ID は 1 から番号がつけられますが、0 の時は ABCpdf の内部で使用される空のオブジェクトをあらわします。また ID が -1 の時は、ドキュメントの終端をあらわします。

基本の情報タイプを使用すると、ドキュメントの中ですべてのオブジェクトを使用することができます。オブジェクトの情報を取得するには GetInfo メソッドを使用し、オブジェクトのプロパティを変更するには SetInfo メソッドを使用します。すべてのオブジェクトは下記に示す基本のプロパティをサポートしています。

さらに基本のプロパティに加えて、特定のオブジェクトは別の型のプロパティもサポートしています。

基本オブジェクト情報の型

情報名 | GetInfo | SetInfo | 説明
ID |  |  | オブジェクトの ID theDoc.GetInfo(theID, "ID") のコードはオブジェクト IDが theID のオブジェクトをあらわします。この Object ID は常にユニークです。
Type |  |  | オブジェクトの型 オブジェクトの型をあらわす 4 文字のコードです。また異なるオブジェクトの型は異なるプロパティを持ちます。
Active |  |  | このプロパティは履歴情報として使用されます。 この値は常に 1 です。
Value |  |  | オブジェクトのコンテンツで PDF ドキュメントに含まれます。 オブジェクトのコンテンツは非常に大きくなったり特殊文字を含んでいる場合があるので注意してください。 詳細については、オブジェクト パスの説明を参照してください。
/Label |  |  | PDF 辞書の中のオブジェクトは名称で参照できます。 ほとんどの PDF オブジェクトは辞書になっています。辞書には/で始まるユニークな名称が付けられている多くのエントリがあります。GetInfo や SetInfo のメソッドにユニークな名称を設定することにより、その名称が付けられているエントリにアクセスできます。なお、名称は大文字、小文字を区別します。 詳細については、 オブジェクト パスの説明を参照してください。
Count |  |  | ドキュメント中の最大のオブジェクト ID このプロパティは、Object ID 0 として使用されます。
License |  |  | 現在のライセンス このプロパティは、Object ID 0 として使用されます。 ライセンスを取得すると、現在のライセンスの記述を返します。ライセンスの設定ではライセンスキーのインストールを行います。
ABCpdfVersion |  |  | 現在の ABCpdf のバージョンを表す文字列 このプロパティは、Object ID 0 として使用されます。


Specific Objects

他のオブジェクト

情報の型はオブジェクトの型によって決まります。詳しくは、基本オブジェクトを参照してください。

Catalog オブジェクト

型名 | GetInfo | SetInfo | 説明
Type |  |  | 常に "cata" です。
Pages |  |  | Pages オブジェクトの ID 。 Pages オブジェクトはドキュメントの全ページの参照を保持しています。
Outlines |  |  | Outline オブジェクトの ID 。 Outline オブジェクトはドキュメント構造を保持しています。
Field Count |  |  | ドキュメントの中のフィールド数です。
Field N |  |  | 指定した番号の Field オブジェクトの ID 。 例えば、フィールド番号が3のオブジェクトの ID を取得する場合は下記のように記述します。 GetInfo(thePagesID, "Field 3") ページに表示されているフィールドのみが返されます。一般的にはこれらは Annotation オブジェクトになります。
Field Name |  |  | 指名した Field オブジェクトの ID。 例えば、"address.town" というフィールド名のオブジェクト ID を取得する場合は下記のように記述します。 GetInfo(thePagesID, "Field address.town") フィールド名を参照しているのか、値を参照しているのか曖昧な場合には、名前をシングルクォーテションかダブルクォーテションで囲んでください。 注意：PDF の仕様ではフルネームは一意である必要がありません。最初に合致したフィールドの ID が返されます。 ページに表示されているフィールドのみが返されます。一般的にはこれらは Annotation オブジェクトになります。
Field IDs |  |  | ドキュメントの全フィールドのオブジェクト ID をコンマで区切ったリスト。 ツリー状のフィールドを調べるのは効率の悪い方法です。全フィールド ID のリストを取得し、必要に応じてこれらを使用するほうが便利です。 ページに表示されているフィールドのみが返されます。一般的にはこれらは Annotation オブジェクトになります。
Field Names |  |  | ドキュメントの中の全フィールド名（フルネーム）をコンマで区切ったリスト。 ツリー状のフィールドを調べるのは効率の悪い方法です。全フィールド名のリストを取得し、必要に応じてこれらを使用するほうが便利です。 ページに表示されているフィールドのみが返されます。一般的にはこれらは Annotation オブジェクトになります。

Pages オブジェクト

型名 | GetInfo | SetInfo | 説明
Type |  |  | 常に "pages" です。
Page Count |  |  | ドキュメントの中のページ数。
Page N |  |  | 指定したページのオブジェクト ID 。 例えば、ページ番号が 3 のオブジェクト ID を取得する場合は下記のように記述します。 GetInfo(thePagesID, "Page 3")

Page オブジェクト

型名 | GetInfo | SetInfo | 説明
Type |  |  | 常に "page" です。
Content Count |  |  | ページに表示されているオブジェクトの数。
Content N |  |  | 指定した番号の Content オブジェクトの ID 。 例えば、ページ中の 2 番目の オブジェクト ID を取得する場合は下記のように記述します。 GetInfo(thePageID, "Content 2")
Annot Count |  |  | ページに表示されている注釈の数。
Annot N |  |  | 指定した番号の Annot オブジェクトの ID 。 例えば、ページ中の2番目の注釈のオブジェクト ID を取得する場合は下記のように記述します。 GetInfo(thePageID, "Annot 2")
Rotate |  |  | 表示する時のページの回転角度。 通常、横向きのページを表示する時に右側が上に来るように回転させるために使用します。回転角度は 0、90、180、270 度です。

Empty オブジェクト

型名 | GetInfo | SetInfo | 説明
Type |  |  | 常に "empt" です。
Count |  |  | ドキュメントの中のオブジェクト数。

Outline オブジェクト

型名 | GetInfo | SetInfo | 説明
Type |  |  | 常に "outl" です。

Font オブジェクト

型名 | GetInfo | SetInfo | 説明
Type |  |  | 常に "font" です。
FontBBox |  |  | フォントの境界ボックスを定義する四角形。値は 1/1000 単位です。これは、原点に置かれた、すべての字形を入れる最も小さい四角形です。
Widths abc |  |  | 提供される文字幅。 例えば、"a" から "c" までの文字列の幅を取得するには次のように記述します。 GetInfo(theFontID, "widths abc") 幅はコンマで区切られたリストとして返されます。 値は 1/1000 単位です。例えば、24 ポイントで書かれた幅 600 の文字は、幅が 14.4 ポイントのように見えます。600 / 1000 * 24 = 14.4
LineSpacing |  |  | テキストの行間。OpenType フォントでは、OS2 テーブルの fsSelection ビット 7 を重視して行間が計算されます。最近の Windows アプリケーションのみ、この計算を行います。サンプルは、WPF ベースのアプリケーションか MS Word 2007 （数式エディタのみ） になります。旧式のアプリケーションでは、行間を別に計算しなければならない場合があります。 Ascent - Descent - 1000 この Ascent と Descent は下記の通り定義されます。-1000 は ABCpdf の内部処理用です。 値は 1/1000 単位です。
Ascent |  |  | フォントのアセント（ベースラインからフォント全体で一番高いところまでの距離）。OpenType フォントでは、これは OS2 テーブルの usWinAscent 値です。 値は 1/1000 単位です。
Descent |  |  | フォントのディセント（フォント全体で一番低いところからベースラインまでの距離）。OpenType フォントでは、これは記号を変えた OS2 テーブルの usWinDescent 値です。 値は 1/1000 単位で、通常負の値です。
Ascender |  |  | フォントのアセンダ（b や d などのエックスハイトより上の部分）。OpenType フォントでは、これは OS2 テーブルの sTypoAscender 値です。 値は 1/1000 単位です。
Descender |  |  | フォントのディセンダ（q や p などのベースラインより下の部分）。OpenType フォントでは、これは OS2 テーブルの sTypoDescender 値です。 値は 1/1000 単位で、通常負の値です。
LineGap |  |  | フォントの行間。OpenType フォントでは、これは OS2 テーブルの sTypoLineGap 値です。 値は 1/1000 単位で、通常負の値です。

Bookmark オブジェクト

型名 | GetInfo | SetInfo | 説明
Type |  |  | 常に "book" です。

Stream オブジェクト

型名 | GetInfo | SetInfo | 説明
Type |  |  | 常に "strm" です。
Stream |  |  | ストリームのオリジナルデータ。このデータは圧縮されたり暗号化されたりすることがあります。
Compress |  |  | まだ圧縮されていない場合、ストリームを圧縮します。
Decompress |  |  | ストリームを解凍します。
ClearDecompress |  |  | キャッシュされたり解凍されたデータをクリアします。詳しくは、StreamObject.ClearCachedDecompressed をご覧ください。

PixMap オブジェクト

型名 | GetInfo | SetInfo | 説明
Type |  |  | 慣例として常に "jpeg" です。しかし、これは、Pixmap が JPEG フォーマットに含まれるということではありません。
Stream |  |  | ストリームのオリジナルデータ。このデータは圧縮されたり暗号化されたりすることがあります。
Width |  |  | Pixmap のピクセルの幅。
Height |  |  | Pixmap のピクセルの高さ。
Components |  |  | Pixmap を構成するカラーコンポーネントの数。 グレースケールイメージは1つのコンポーネント、RGB は 3つのコンポーネント、CMYK は 4つのコンポーネントから構成されています。
ColorSpace |  |  | Pixmap のカラースペースのオブジェクトの ID。
Alpha |  |  | イメージに設定するアルファ値。 この値は 0 (透明) から 255 (不透明)までとなります。この範囲以外の値は無効となりアルファ値が無効となります。
Chromakey |  |  | イメージに対して透明色や色の範囲を設定します。 各カラーコンポーネントに対して2つの値を設定します。全カラーコンポーネントを指定した範囲で無効にするとその色は描画されません。 例： 白色を RGB の透明に設定する場合： SetInfo(theID, "Chromakey", "255 255 255 255 255 255") 白色に近い色を使用する場合： SetInfo(theID, "Chromakey", "250 255 250 255 250 255")
Grayscale |  |  | RGB カラーイメージをグレースケールに変換します。マスクを使用する場合に便利です。

Image オブジェクト

型名 | GetInfo | SetInfo | 説明
Type |  |  | 常に "imag" です。
Rect |  |  | 描画項目の領域を定義する四角形。 この四角形は PDF の座標系で表されます。
Stream |  |  | ストリームのオリジナルデータ。このデータは圧縮されたり暗号化されたりすることがあります。
XObject |  |  | イメージデータを格納している XObject のオブジェクトの ID 。

Text オブジェクト

型名 | GetInfo | SetInfo | 説明
Type |  |  | 常に "text" です。
Rect |  |  | 描画項目の領域を定義する四角形。 この四角形は PDF の座標系で表されます。
Stream |  |  | ストリームのオリジナルデータ。このデータは圧縮されたり暗号化されたりすることがあります。
EndPos |  |  | オブジェクトの中のすべてのテキストが描画された後の次の文字の挿入位置。
Characters |  |  | 描画された文字数。
Lines |  |  | 描画されたテキストの行数。
Truncated |  |  | このプロパティは設定したテキストの描画状態を表します。テキストが切り詰められていればこの値は 1 となり、そうでない時は 0 となります。 切り詰められたテキストオブジェクトだけが AddHtml メソッドを使用してつなげることができます。切り詰められていないテキストオブジェクトをつなごうとしても ID 0 が返されます。
Prev |  |  | HTML のチェーンの中の前のオブジェクト。 オブジェクトがチェーンの一部でない(またはチェーンの先頭にある)場合、ID 0 が返されます。

Line オブジェクト

型名 | GetInfo | SetInfo | 説明
Type |  |  | 常に "line" です。
Stream |  |  | ストリームのオリジナルデータ。このデータは圧縮されたり暗号化されたりすることがあります。
Rect |  |  | 描画項目の領域を定義する四角形。 この四角形は PDF の座標系で表されます。

Annotation オブジェクト

型名 GetInfo SetInfo 説明
Type

常に "anno" です。

Subtype

注釈の型。

これは 'Text'、'Link'、'Widget'、または Adobe PDF Specification の Section 8.4.5 記載されている型となります。

Contents

表示されている注釈のテキスト。

注釈の Subtype がテキストを表示しない場合、このフィールドには注釈のテキストの代わりの説明が含まれます。

Name

この注釈に関連付けられているフォームのフィールドのフルネーム。

注意： PDF の仕様ではフルネームは一意でなくても結構です。

Page

この注釈を配置したドキュメントページの ID。

Rect

ページの注釈の位置や領域を定義する四角形。

下記は、既存の注釈の上に四角形を描画するプログラムの例です。

d.Page = d.GetInfo(theID, "Page")
d.Rect = d.GetInfo(theID, "Rect")
d.FillRect

FieldType

この注釈に関連付けられているフォームのフィールドの型。

利用可能なフィールド型：

  • "Pushbutton"
  • "Checkbox"
  • "Radio"
  • "Text"
  • "List"
  • "Combo"
  • "Signature"
  • "Unknown"

詳しくは Adobe PDF Specification の Section 8.6.3 を参照してください。

FieldValue

この注釈に関連付けられているフォームのフィールドの値。

このプロパティでフォームのフィールドに値を代入したり参照したりできます。

FieldOptions で説明してあるように、CheckBox や RadioButton の値は "Off" か "On" です。

Text フィールドにはどんな値でも設定できます。

FieldOptions で説明してあるように、ComboBox や ListBox のオプション（値）は限定されています。

Pushbutton や Signature には値がありません。

FieldOptions

この注釈に関連付けられているフォームのフィールドのオプション。

通常は FieldValue プロパティを使用して値を設定します。Text フィールドのようなフィールドにはどんな値でも設定できます。Checkbox や ListBox などその他のフィールドのオプションは限定されています。このオプションでフィールドに使用可能なオプションがわかります。

CheckBox や RadioButton にチェックが付けられていない時は常に "Off" です。このプロパティでチェックの状態を取得/設定できます。

ComboBox や ListBox のオプションはコンマで区切った設定が有効となります。

Pushbutton、Signature、Text フィールドにオプションはありません。

FT

この注釈に関連付けられているフォームのフィールドの有効な "/FT" 値。

この値は親のオブジェクトで定義されることがあるので、このオブジェクトに直接定義された "/FT" 値と異なることがあります。

Ff

この注釈に関連付けられているフォームのフィールドの有効な "/Ff" 値。

この値は親のオブジェクトで定義されることがあるので、このオブジェクトに直接定義された "/Ff" 値と異なることがあります。

View オブジェクト

型名 | GetInfo | SetInfo | 説明
Type |  |  | 常に "wemf" です。
Stream |  |  | ストリームのオリジナルデータ。このデータは圧縮されたり暗号化されたりすることがあります。
Rect |  |  | 描画項目の領域を定義する四角形。 この四角形は PDF の座標系で表されます。
Width |  |  | イメージの幅(ポイント値）
Height |  |  | イメージの高さ(ポイント値）
ContentWidth |  |  | HTML イメージの全体の幅（ピクセル単位）。 HTML を追加する時、一度に1ページしか描画されません。PDF にページが設定される前に、このプロパティで HTML の幅を確認できます。 この値は、通常 ScrollWidth と非常に近い値になります。
ContentHeight |  |  | HTML イメージの全体の高さ（ピクセル単位）。 HTML を追加する時、一度に1ページしか描画されません。PDF にページが設定される前に、このプロパティで HTML の高さを確認できます。 この値は、通常 ScrollHeight と非常に近い値になります。
ScrollWidth |  |  | HTML イメージのスクロール幅（ピクセル単位）。 HTML 内のスクリプトを使用して取得したのと同じスクロール幅になります。
ScrollHeight |  |  | HTML イメージのスクロールの高さ（ピクセル単位）。 HTML 内のスクリプトを使用して取得したのと同じスクロールの高さになります。
PageOffset |  |  | HTML イメージの上端から現在ページの上端までの縦方向のオフセット値 (ピクセル単位）。
PageWidth |  |  | 描画されている HTML イメージ部分の幅（ピクセル単位）。
PageHeight |  |  | 描画されている HTML イメージ部分の高さ（ピクセル単位）。
Truncated |  |  | このプロパティは描画しきれない HTML のページがあるかを通知します。 描画しきれない HTML ページがある時は 1、そうでない時は 0 となります。
ItemCount |  |  | このオブジェクトに表示されている項目数。
ScriptReturn |  |  | OnLoadScript の戻り値。
Text |  |  | このオブジェクトに表示されているテキスト。 テキストは、必ずしも読み込み順ではなくレイアウト順になります。
URL |  |  | 描画されたページの URL 。

Graphics State オブジェクト

型名 | GetInfo | SetInfo | 説明
Type |  |  | 常に "grst" です。

ColorSpace オブジェクト

型名 | GetInfo | SetInfo | 説明
Type |  |  | 常に "cols" です。
Space |  |  | カラースペースの種類。
Name |  |  | カラースペースに関連付けられている名前（例：スポットカラーの名前）。
ICCProfile |  |  | ICC カラープロファイルに関連付けられているオブジェクトの ID 。

ICCProfile オブジェクト

型名 | GetInfo | SetInfo | 説明
Type |  |  | 常に "iccp" です。
Stream |  |  | ストリームのオリジナルデータ。このデータは圧縮されたり暗号化されたりすることがあります。

Object Stream オブジェクト

型名 | GetInfo | SetInfo | 説明
Type |  |  | 常に "obst" です。
Stream |  |  | ストリームのオリジナルデータ。このデータは圧縮されたり暗号化されたりすることがあります。

XRef オブジェクト

型名 | GetInfo | SetInfo | 説明
Type |  |  | 常に "xref" です。
Stream |  |  | ストリームのオリジナルデータ。このデータは圧縮されたり暗号化されたりすることがあります。

Gecko View オブジェクト

型名 | GetInfo | SetInfo | 説明
Type |  |  | 常に "cact" です。
Stream |  |  | ストリームのオリジナルデータ。このデータは圧縮されたり暗号化されたりすることがあります。


Object Paths

オブジェクトパス

ドキュメントの中の PDF オブジェクトを直接操作するには GetInfo や SetInfo メソッドを使用します。しかし、これらのメソッドを使用するには Adobe PDF に関する知識が必要になります。

通常、ABCpdf はドキュメントが矛盾しないように管理しています。SetInfo メソッドに Dictionary、Value または Path を設定して使用することにより、柔軟にドキュメントを処理することができます。しかし注意してこのメソッドを使用しないとドキュメントを壊す場合があります。

詳しくは、PDF Reference を参照してください。

Dictionaries

辞書の場合、特定の辞書のエントリを指定して置換や挿入を行うことができます。（辞書のエントリは"/"で始まります。）例えば、注釈の型を変更する場合は下記のコードを使用します。

theDoc.SetInfo(theID, "/Subtype", "(Stamp)")

Values

オブジェクト全体を置換する場合 "Value" セレクタを使用します。ただしこの場合、新しいオブジェクトの型と古いオブジェクトの型が同一である必要があります。(数字を文字列に置換することはできません。)

theDoc.SetInfo(theID, "Value", "<< /Font /Helvetica /Size 10 >>")

Paths

記述をつなげて完全なパスを作ることができます。辞書のエントリは "/" で始まるエントリ名で指定します。配列は参照する項目のインデックスを [] で囲んで指定します。(インデックスは 0 から始まります)

"MediaBox" の配列の最初の項目を返すコード例です。

theDoc.GetInfo(theID, "/MediaBox[0]")

オブジェクトの親の "Count" エントリを返すコード例です。

theDoc.GetInfo(theID, "/Parent/Count")

References

特定のオブジェクトの参照を検索する場合や、特定のオブジェクトを直接参照したい場合、パスの中でアスタリスクを使用してオブジェクトを参照しないようにします。そのオブジェクトが参照を表す場合は参照先のデータを取得し、そうでない場合は、演算子は無視されます。

例えば、下記のコードはドキュメントの最初のページのストリームを取得します。

theDoc.GetInfo(theDoc.Root, "/Pages*/Kids*[0]*/Contents")

SetInfo

パスで指定した値を挿入するには、SetInfo を使用します。またパスに識別子を追加することにより挿入するオブジェクトの型を指定できます。

オブジェクトの型 | 説明
:Bool | Boolean 値
:Name | 名前の値
:Num | 数値
:Text | 文字列
:Ref | オブジェクトへの間接参照
:Rect | 四角形 内部では数型値配列として四角形は保持されていますが、このショートカットとして使用できます。
:Del | 特別なエントリ オブジェクトの挿入はできませんが、パスで指定したオブジェクトを削除できます。
:Text[Hex*NoBreak] | 「Hex」 は、テキストスタイルを16進数にコード化することを表します。「NoBreak」 指定子は、改行なしにすることを表します。「*」 は、デリミタです。文字を Unicode 文字列ではなくバイト文字列として解釈することを表す 「byte」 指定子も利用可能です。これらの設定が使われるのは稀で、通常は必要ありません。

下記のコードは、ページの注釈の配列に注釈を挿入する例です。

"/Annots" という名前 の Page エントリを検索します(存在しない場合は作成します) 。そしてこのエントリは配列を参照し、配列の先頭に参照アトムを挿入します。

theDoc.SetInfo(theDoc.Page, "/Annots[0]:Ref", theID)

反対に、配列の最後に注釈を挿入する場合は、配列のインデックスを記述しないでおきます。

theDoc.SetInfo(theDoc.Page, "/Annots[]:Ref", theID)

また、配列の末尾から項目を配置していくこともできます。末尾を指定する場合は -1 を、末尾から二番目の場合は -2 を...という具合に使用します。

theDoc.GetInfo(theDoc.Page, "/Annots[-1]:Ref")

次は、辞書が含まれている "/Font" というエントリを取得する例です。この辞書には配列を含んでいる "/Names" という要素を持っています。また配列の先頭に "/Helvetica" という Name オブジェクトを挿入します。

theDoc.SetInfo(theID, "/Font/Names[0]:Name", "Helvetica")

GetInfo

パスで指定した値を取得するには GetInfo を使用します。取得する値のフォーマットは PDF ファイルに出力されるものとまったく同じになります。文字列に識別子を追加することにより、他のフォーマットを指定できます。

フォーマット名 | 説明
:ID | オブジェクトの参照に関連付けられたオブジェクト ID 通常、オブジェクトの参照は拡張フォーマットで返されます。(例 23 0 R) しかし、オブジェクト ID に追加するだけなら、このフォーマットの指定子を使用してオブジェクト ID (例 23)だけ取得します。
:Obj | オブジェクトの値 オブジェクトの値が返される前に、すべての間接参照を解決するために使用されます。これは、オブジェクト参照ではなく常にオブジェクトの値を取得します。
:Text | 名前か文字列のテキスト 名前や文字列は PDF に出力される前に、色々な方法でエンコードされます。テキストのフォーマットの指定子はデコードされた値を確実に返します。
:Num | 数値の値 参照されたオブジェクトが数値でない場合、何も返されません。
:Rect | 四角形のオブジェクトのための Rect 文字列 Rect は配列として処理されます。Rect のフォーマットを指定することにより XRect オブジェクトに直接設定できる文字列を取得します。
:Count | 配列の中の項目の数 Count は配列の項目でなく、配列の中の項目の数を返す特別な指定子です。
:Keys | 辞書のためのキー キーはコンマで区切られた、辞書中のエントリ名のリスト。

下記のコードは、CropBox ページの Rect を返します。

theDoc.GetInfo(theID, "/CropBox:Rect")


XML to PDF

XML から PDF

Base

XML テンプレートも明らかに1つの方法ですがこれには問題があるので、ABCpdf は敢えて XML ベースにしませんでした。

主な理由は、PDF ドキュメントの作成がインタラクティブであるからです。テキストがどれくらい追加されるかは用意し終わるまではわからないというのはよくあることです。テキストをある欄から別の欄へと流れるように表示させたり、テキストを追加するために新規ページを作成しなければならなかったり、フォントサイズを小さくしてテキストをすべて収めるようにしなければならないことがあります。こういった決断は XML 形式で記述するのは非常に困難です。

ABCpdf のような製品を使用して XML ベースの PDF ジェネレータを作成するのは簡単ですがその逆は不可能です。ですから、ABCpdf を使用してテンプレートベースのドキュメントを作成することができます。XML ベースのソリューションを使用してインタラクティブなコードを実装したいと思ってもそれはできません。

ABCpdf を使用した XML から PDF への変換例につきましては、ABCpdf の Tagged PDF サンプルをご覧ください。XML から PDF に変換する方法だけでなく、ドキュメントにセマンティックタグを追加する方法も紹介しています。


Manual Installation

インストールとライセンス キー

手動で ABCpdf をインストールするには、下記のファイルが必要となります。

ファイル名 | 説明
ABCpdf.dll | .NET から呼ばれるアセンブリ。 セットアッププログラムを実行すると、このファイルは下記のディレクトリにコピーされます。 32ビットStandard版： %ProgramFiles%\WebSupergoo\ABCpdf .NET 9J STD\Common\ 32ビットProfessional版： %ProgramFiles%\WebSupergoo\ABCpdf .NET 9J PRO\Common\ 64ビット版： %ProgramFiles%\WebSupergoo\ABCpdf .NET 9J x64\Common\ 作成したアプリケーションを配布する場合は、 このファイルをアプリケーションと同じディレクトリにコピーしてください。
ABCpdf9-32.dll | 32 ビット用の ABCpdf の中核エンジンです。 PDF を処理する DLLファイルです。このファイルは下記のディレクトリにコピーされます。 32ビット版 Windows にインストールする場合： C:\Windows\System32 64ビット版Windows にインストールする場合： C:\Windows\SysWOW64 作成したアプリケーションを配布する場合は、このファイルをアプリケーションと同じディレクトリにコピーしてください。
ABCpdf9-64.dll | 64 ビット用のABCpdf の中核エンジンです。 PDF を処理するDLLファイルです。このファイルは下記のディレクトリにコピーされます。 32ビット版 Windows にインストールする場合： インストールできません。 64ビット版Windowsにインストールする場合： C:\Windows\System32 作成したアプリケーションを配布する場合は、このファイルをアプリケーションと同じディレクトリにコピーしてください。
PrintHook32.dll | XpsAny ReadModule を使用するために必要なコンポーネント。 このファイルは、Microsoft XPS Document Writer を使用してさまざまな形式のファイルをインポートすることができます。 通常、このファイル は ABCpdf9-32.dll と同じディレクトリにコピーします。 この ファイル は 32-bit 版 Windows 用です。
PrintHook64.dll | XpsAny ReadModule を使用するために必要なコンポーネント。 このファイルは、Microsoft XPS Document Writer を使用してさまざまな形式のファイルをインポートすることができます。 この ファイル は 32-bit 版 Windows と 64-bit 版 Windows 用です。
ABCGecko.dll XULRunner （ディレクトリ） | Gecko HTML エンジンを使用するために必要なコンポーネント。 この DLL は bin ディレクトリにコピーしてください。 この DLL は ABCpdf が Gecko HTML エンジンにアクセスするために使用するインターフェイスですが、Gecko HTML エンジンそのものではありません。このエンジンは、「XULRunner」 というフォルダにあり、ABCGecko.dll と同じディレクトリになければなりません。 この機能を使用する場合は、ABCGecko.dll と同じディレクトリに XULRunner フォルダをコピーしてください。

IIS など制限のかかった許可環境に手動でインストールし、MSHtml エンジンを使って HTML を変換するような場合に、レジストリを確認しなければならない場合があります。HKEY_USERS\.DEFAULT\Software\Microsoft\Windows NT\CurrentVersion\Devices のレジストリ キーにプリンタのエントリが設定されているはずです。Microsoft XPS Document Writer はこの必要条件を満たしています。このキーにプリンタのエントリが設定されていない場合は、HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\Devices からコピーできます。このキーに何も設定されていないと、IIS で ABCpdf を使用する時に HMSHtml エンジンでエラーが発生します。

ファイルの配布例

ファイルは下記のように方法１か方法２で配布してください。

1．32ビットアプリケーションプログラムの場合
・32ビットWindowsにインストールする場合
 方法1－ABCpdf.dll ： アプリケーションプログラムと同じディレクトリ
ABCpdf9-32.dll ： アプリケーションプログラムと同じディレクトリ
PrintHook32.dll ： アプリケーションプログラムと同じディレクトリ
方法2－ABCpdf.dll ： アプリケーションプログラムと同じディレクトリ
ABCpdf9-32.dll ： C:\Windows\System32
PrintHook32.dll ： C:\Windows\System32
 ・64ビットWindowsにインストールする場合
 方法1－ABCpdf.dll ： アプリケーションプログラムと同じディレクトリ
ABCpdf9-32.dll ： アプリケーションプログラムと同じディレクトリ
PrintHook32.dll ： アプリケーションプログラムと同じディレクトリ
PrintHook64.dll ： アプリケーションプログラムと同じディレクトリ
方法2－ABCpdf.dll ： アプリケーションプログラムと同じディレクトリ
ABCpdf9-32.dll ： C:\Windows\SysWOW64
PrintHook32.dll ： C:\Windows\System32
PrintHook64.dll ： C:\Windows\System32
PrintHook32.dll ： C:\Windows\SysWOW64
PrintHook64.dll ： C:\Windows\SysWOW64

2．64ビットアプリケーションプログラムの場合
・32ビットWindowsにインストールする場合
 64ビットアプリケーションプログラムは32ビットWindowsでは実行できません。
 ・64ビットWindowsにインストールする場合
方法1－ABCpdf.dll ： アプリケーションプログラムと同じディレクトリ
ABCpdf9-64.dll ： アプリケーションプログラムと同じディレクトリ
PrintHook32.dll ： アプリケーションプログラムと同じディレクトリ
PrintHook64.dll ： アプリケーションプログラムと同じディレクトリ
方法2－ABCpdf.dll ： アプリケーションプログラムと同じディレクトリ
ABCpdf9-64.dll ： C:\Windows\System32
PrintHook32.dll ： C:\Windows\System32
PrintHook64.dll ： C:\Windows\System32
PrintHook32.dll ： C:\Windows\SysWOW64
PrintHook64.dll ： C:\Windows\SysWOW64

（注意）
 64ビットWindowsのシステムフォルダにインストールする場合
PrintHook32.dll と PrintHook64.dll の２つのファイルを C:\Windows\System32 と C:\Windows\SysWOW64 の各ディレクトリにコピーしてください。

ライセンスの認証

ABCpdf をエンドユーザー様の実行環境で動作させるには、下記のようにライセンスの認証を行う必要があります。ライセンスの認証を行うには

  1. ABCpdfNET9JP(S, x64JP).msi インストールプログラムを実行。
    ・・・エンドユーザー様がライセンスをお持ちの場合
  2. 付属の「PDFSettings.exe」でライセンスキーを登録する方法
    ・・・エンドユーザー様がライセンスをお持ちの場合
    本処理は、Administrator権限で1回だけ実行してください。 複数回実行しても内部的には何も行いません。
  3. プログラムで行う方法（下記のコード例）
    ・・・開発会社様が開発ライセンスと再配布ライセンスをお持ちの場合
    ・・・開発会社様が開発ライセンスと配布先数分のライセンスをお持ちの場合

のいずれかを行ってください。

注意１： 開発会社様とは別にエンドユーザー様が別途ライセンスをお持ちの場合は、エンドユーザー様はそのライセンス数内で自由に運用できるので１，２，３のどの方法でも結構です。

注意２：エンドユーザー様がライセンスをお持ちでない場合は、３の方法だけが可能です。

注意３：開発会社様が開発ライセンスだけをお持ちの場合は、開発したアプケーションを配布することはできません。

ライセンスを確認するコード例

[C#]
using WebSupergoo.ABCpdf9;

MessageBox.Show(XSettings.License) ;

または

Doc theDoc = new Doc();
MessageBox.Show(theDoc.License);
[Visual Basic]
Imports WebSupergoo.ABCpdf9

MessageBox.Show(XSettings.License )

または

Dim theDoc As Doc = New Doc()
MessageBox.Show(theDoc.License)

ライセンス情報をレジストリに書き込まないコード例
この場合、ライセンス情報がレジストリに設定されないためインストールされるライセンスは一時的なものです。
この方法は、ABCpdfのライセンスがお客様のアプリケーションにのみ有効となり、ライセンスを保持していない第三者の作成したアプリケーションについては無効となります。
通常はこの方法をお勧めいたします。

[C#]
using WebSupergoo.ABCpdf9;

XSettings.InstallRedistributionLicense("ライセンスキー");
[Visual Basic]
Imports WebSupergoo.ABCpdf9

XSettings.InstallRedistributionLicense("ライセンスキー")

ライセンス情報をレジストリに書き込むコード例
この場合、ライセンス情報がレジストリに設定されますのでライセンスは常に有効となります。
この方法は、ABCpdfのライセンスがお客様のアプリケーションに有効となると同時に、ライセンスを保持していない第三者の作成したアプリケーションにも有効となります。
特殊な場合を除きこの方法はお勧めいたしません。

[C#]
using WebSupergoo.ABCpdf9;

Doc theDoc = new Doc();
theDoc.SetInfo(0, "License", "ライセンスキー");

または

XSettings.License = "ライセンスキー";
[Visual Basic]
Imports WebSupergoo.ABCpdf9

Dim theDoc As Doc = New Doc()
theDoc.SetInfo 0, "License", "ライセンスキー"

または

XSettings.License = "ライセンスキー"

ライセンスキーはユーザ登録後に弊社より送付いたします。

ユーザ登録時の会社名（個人登録の場合は登録者名）は、ABCpdfで作成したPDFファイルの「文章のプロパティ」－「詳細情報」に表示されます。


Fonts and Languages

フォントと言語

Base

下記の基本的なフォントはすべてのシステムで使用可能です。

基本的なフォントを使用すればドキュメントのサイズが小さくなり、すべてのシステムで動作が可能です。しかしこれらの基本的なフォントは日本語、中国語や韓国語はサポートしていません。

  • Times-Roman
  • Times-Bold
  • Times-Italic
  • Times-BoldItalic
  • Helvetica
  • Helvetica-Bold
  • Helvetica-Oblique
  • Helvetica-BoldOblique
  • Courier
  • Courier-Bold
  • Courier-Oblique
  • Courier-BoldOblique
  • Symbol
  • ZapfDingbats

これらのフォントを参照するには AddFont メソッドを使用します。

Embed

埋め込みフォント

Doc.EmbedFont メソッドは、PDF ドキュメントに日本語などの言語を追加するのに最も効率的で信頼できる方法です。しかし著作権などの問題で使用するフォントが再配布できるか確認する必要があります。

ABCpdf には著作権のあるフォントを不注意に埋め込まないようにするオプションがありますが、これに頼り過ぎないでください。フォントを埋め込む際に、これらフォントの著作権への理解が非常に重要です。PDF ドキュメントに埋め込むフォントに対して責任を持つ必要があります。

大きなフォントを埋め込む時は一般的にそのサブセットを選択します。全体のフォントを埋め込むよりそのサブセットを埋め込むほうが、小さな PDF ドキュメントを作成すると共に高速に表示できます。

フォントの埋め込みは Doc.EmbedFont メソッドを使用します。

下記は、有効な言語と文字方向の組み合わせです。

言語 | 水平 | 垂直 | 説明
"Latin" |  |  | デフォルトの西ヨーロッパ言語
"Unicode" |  |  | Unicode を使用する場合
"Korean" |  |  | 韓国語
"Japanese" |  |  | 日本語
"ChineseS" |  |  | 簡体字 (Simple Chinese)
"ChineseT" |  |  | 繁体字 (Traditional Chinese)

Refs

参照フォント

Doc.AddFont メソッドを使用することにより小さな PDF ドキュメントを作成できます。しかし日本語などの言語については、Adobe Acrobat の最新のバージョンを必要とし、かつ適切な言語パックをインストールする必要があります。もしこれらが無いと、ドキュメントの表示ができずエラーが発生します。

フォントの参照は Doc.AddFont のメソッドを使用します。

下記は、有効な言語と文字方向の組み合わせです。

言語 | 水平 | 垂直 | 説明
"Latin" |  |  | デフォルトの西ヨーロッパ言語
"Unicode" |  |  | Unicode を使用する場合
"Korean" |  |  | 韓国語 - 適切な Adobe Acrobat 言語パックが必要です。
"Japanese" |  |  | 日本語 - 適切な Adobe Acrobat 言語パックが必要です。
"ChineseS" |  |  | 簡体字 (Simple Chinese) - 適切な Adobe Acrobat 言語パックが必要です。
"ChineseT" |  |  | 繁体字 (Traditional Chinese) - 適切な Adobe Acrobat 言語パックが必要です。

Type 1

通常 Mac プラットフォームを扱う際に Type 1 フォントを追加または埋め込む必要がある場合があります。他のフォントとまったく同じように、Doc.EmbedFont メソッドや Doc.AddFont メソッドを使用してこれを行うことができます。

Type 1 フォントは限られた字体を含んでおり、使用できる言語は ”ラテン語” だけです。

TrueType フォントと違って、あらかじめ PDF に埋め込まれ、Doc.Read メソッドを使用して読み込まれている Type 1 フォントを再利用できます。

ドキュメントにあらかじめ埋め込まれているフォントにアクセスするには、’フォント’型のオブジェクトを検出するオブジェクトを検索してください。そのオブジェクト ID を Doc.Font プロパティに割り当ててください。標準の (WinAnsiEncoding) Type 1 フォントだけがこのように使用できるので注意してください。

PDF に埋め込まれたフォント名を取得する場合、下記のコードを使用してそのフォントの PostScript 名を取得してください。

theDoc.GetInfo(theID, "/BaseFont:Name")

問題

ABCpdf は、有効な TrueType フォントまたは Type 1 (PostScript) フォントを使用できます。

特定のフォントにアクセスできない場合、ABCpdf のフォントプロテクト機能を無効にしてみてください。

ABCpdf にはフォントのキャッシュがあります。これは、ABCpdf が新しくインストールされたフォントを認識するには、ABCpdf を使用しているプロセスを再スタートする必要があ ります。

他には、フォントファイルのパスを AddFont メソッドまたは EmbedFont メソッドに渡すことができます。これはフォントファイルを自動的に読み込みます。ABCpdf は適切な位置にあるフォントに依存するので、これを行った後でそのフォントファイルを移動しないでください。

許可は、ASP や ASP.NET などの限られたアカウントのアクセスを制限する個別のフォントファイルにある場合があります。

TrueType フォントは標準的ではない場合があります。これは、 (TrueTypeフォントを認識しない) ABCpdf や (PDFに埋め込まれたフォントを使用しない)Acrobat で問題になり得ます。しかし、このような問題は比較的に頻度が少なく、バーコードなど一般的でないフォントに限られます。


Fields and Forms

フィールドとフォーム

Basics

対話的なフォームを使用している Web サイトがたくさんあります。これらは Web フォーム や eForm、AcroForms、電子フォームなどの名前で呼ばれています。

HTMLだけでなく、PDFでもこれらの対話的なフォームを作成することができます。利用者にとっては、これらのフォームは普通の PDF ドキュメントのようなものですが、テキストボックスやボタンなどWebでよく見られる対話的な要素を含んでいます。

実際、eForm (PDF で作成した対話的なフォーム) は HTML フォームとほとんど同じ要素をサポートしているとともに、Web サーバへ内容をサブミットするHTMLフォームと同じ機構もサポートしています。

Fields

PDF の eForm を作成する人は通常 HTML フォームの経験があるので、PDF でフォームを作成する方法と HTML でフォームを作成する方法との間にある微妙な違いのために戸惑う場合があります。

HTML ではフォームは Web ページの一部で、HTML フォームの各フィールドは視覚的な外観をもっています。(非描画のフィールドも例外的にあります) 従って、フィールドの概念とページに描画される外観は、ほとんど同じです。

PDF の eForm は、フィールドの概念と外観を分けています。

ドキュメントの各ページには目に見える注釈があります。また多くの異なるタイプの注釈がありますが、eForm のフィールドで使用されるものとしては Widget と呼ばれるものがあります。Widget には、PDF リーダが Widget をページに正しく描画するためのプロパティがあります。

各ドキュメントには、全ドキュメントにおよぶフィールドのツリー構造があります。各フィールドは名前と完全修飾名(フルパスのような)があります。それによりツリーのトップのレベルからそのフィールドへたどりつくことができます。ツリーのリーフの部分には、ページ上に見える Widget があります。なお、PDF にとって完全な名前はユニークである必要はありません。

従って PDF の場合、フィールドと Widget はそれぞれ特徴のある独立したものです。PDF ドキュメントで見えるものはフィールドと思われがちですが実際はWidget です。

Widget には名前や識別子がありません。それは識別子を持つフィールドに関連しているだけです。同様にフィールドはページの場所には存在しません。それは特定のページ上の特定の場所に存在する Widget に関連しているだけです。

ABCpdf はこれらの違いを隠蔽しています。名前でフィールドを問い合わせると、フィールドに関連した Widget が返されます。この Widget によって、ページ数やページの大きさに基づいた物理的な場所がわかります。同様に ABCpdf は、Widget に関係したフィールドを見つけ、そのフィールド名を返します。

Why?

PDF の eForm が便利な理由として、PDF のテンプレートの中にプレースフォルダを保持することです。

もし ABCpdf とともに使用するドキュメントテンプレートがあると、Acrobat を使用して項目を挿入したいところで PDF にフォームのフィールドを挿入することができます。また ABCpdf で自動的にこれらのフィールドの位置を見つけ、そこに項目を挿入することができます。

もし後で項目を多少移動したくなった場合、Acrobat の PDF を開いてそのフィールドを移動するだけです。

詳しくは eForm のプレースホルダ を参照してください。

Creation

ツールメニューにある Advanced Editing ツールを使用して、Acrobat でフォームを編集できます。

しかし、Forms メニューまたはツールバーからアイテムを選択した場合、Acrobat ではなく Adobe Designer でのフォームの編集になります。

Adobe Designer は Acrobat Pro のアプリケーションで、PDF を出力媒体として使用します。しかし、この Designer が操作するということは、Designer で作成されたフォームは Acrobat で作成されたフォームとは根本的に違うということになります。

例えば、Acrobat が作成したフォームは背景とフィールドを含みます。フィールドは背景とは個別に処理されます。

Adobe Designer が作成したフォームにはこの区別がなく、フィールドの指定には個別のデータ保存を使用します。PDF 内容は単なるこのフィールド指定の表示表現です。根本的なフィールド指定は PDF に埋め込まれた XML 処理から構成されます。

Designer ドキュメントは PDF ドキュメントなので、PDF 内容を追加する標準の ABCpdf メソッドを使用してドキュメントに内容を追加できます。しかしドキュメントを開くと、Designer が個別のフィールド指定を使用して PDF を再作成するので、その内容は多分 Designer 内で削除されます。

同様に、PDF 出力は単なる個別のフィールド指定の表示表現なので、フィールドと背景は互いに結合されます。従って、ABCpdf を使用してフィールドを削除して、枠が後ろに残る場合があります。

フォームを変更する場合、一般的に Designer よりも Acrobat が作成したフォームで操作する方が簡単です。


Image Handling

イメージの処理

Basics

ABCpdf はオリジナルの解像度でイメージを埋め込みます。イメージは異なるサイズで描画されますが、基本的なイメージは同じです。もし印刷時にイメージの粒子が粗く見える時は解像度の大きなイメージが必要となります。

横 300 ピクセル縦 600 ピクセルのイメージを 300 dpi で綺麗に印刷しようとすれば、印刷範囲を横 1 インチ縦 2 インチ以上の四角形に設定することはできません。また 75 dpi でスクリーンに描画する時は、その範囲を横 4 インチ縦 8 インチの四角形に設定することができます。

Modes

イメージを描画するには下記の 2 つの方法があります。

1 番目は、パススルーモードを使用して Doc オブジェクトにイメージを直接追加します。Doc.AddImageFile、Doc.AddImageData はパススルーモードで動作します。

2 番目は、ドキュメントに Image オブジェクトを追加する前に、間接モードで Image オブジェクトの中にデータを描画します。Doc.AddImageObject メソッドは間接モードで実行されます。

一般的に JPEG イメージはパススルーモードで、他のイメージは間接モードで追加します。

パススルーモード

イメージフォーマットによっては、パススルーモードの方が優れている場合があります。

もしイメージが復元と再圧縮が必要でない場合、パススルーモードの方が高速に処理されます。これは特に TIFF イメージに適用されます。

また、圧縮してある JPEG イメージはそのまま使用するので、復元の必要がないためパススルーモードを使用します。

イメージはカラープロファイルとともにそれらのカラースペースに挿入されます。これにより確実に色の再現を行います。

間接モード

間接モードにはパススルーモードより多くの利点があります。

Image オブジェクトにイメージが描画される時イメージが完全に復元されるので、この段階でイメージのエラーが発見されます。イメージが壊れることはめずらしくありませんし、もしデータが挿入される前にそのエラーを検出しなければ PDF は壊れる可能性があります。

イメージの色が補正されているので、カラープロファイルを埋め込む必要がなくファイルサイズが小さくなります。

Colors

カラースペースには様々な方法がありますが、最も一般的なものは RGB や CMYK です。RGB は文字どおりディスプレイ上に赤、緑、青の点の発光で描画されます。また CMYK はシアン、マゼンタ、黄色と黒色の合計値で印刷用に用いられます。

これらの値は目に見える色といつも同じとは限りません。モニタにもいろいろあるので、そこに描画される RGB のイメージは同じでもモニタによって違う色で描画されることがあります。同様に CMYK もプリンタや用紙によって色が違ってくることがあります。

International Color Consortium (ICC) は色に関する仕様を定義し、ICC カラープロファイルはオリジナルの色データを補完することを目的としています。従って、CMYK イメージを扱う場合、イメージの意図した色のカラープロファイルも一緒に指定する必要があります。これにより出力装置に合わせた色の補正が可能になります。

柔軟性と正確な色を保持するため、オリジナルのイメージデータとそれに基づいた ICC プロファイルとを保持することが重要です。これはイメージをパススルーモードで扱う時に可能です。

ABCpdf は RGBTIFF、CMYK TIFF、LAB TIFF、グレースケール JPEG、RGB カラー JPEG、CMYK カラー JPEG を扱うことができます。これはつまりどんな色でも ABCpdf から直接 PDF に設定できます。加えてどんな ICC プロファイルでも適切に保存されるので、いろいろな出力に応じて正確に色が補正されます。

Comp

Image オブジェクトは普通 Flate 圧縮を使用します。これは PNG イメージに使用されているものと同じ方法で、オリジナルイメージの品質を落とさないロスレス形式です。

しかしイメージが白黒2値の時は、ABCpdf は圧縮効率のよい CCITT G4 (FAX形式) 圧縮を使用します。


HTML Styled Text

HTML 形式テキスト

Basics

ABCpdf は、一連の HTML の機能をサポートします。これによりドキュメントのデザインが簡単になり、必要なコードの量も少なくてすみます。

ここで提供されている機能は HTML の仕様をすべて満たしているのではなく、スタイルテキストに必要とされているような限られた仕様をサポートしています。しかし、HTML にはないスタイルの要素を正確に制御できるように HTML の機能を拡張しています。

Chars

ABCpdf では Unicode をサポートしているので、英語から日本語や韓国語など多国語の HTML テキストを扱うことができます。

通常、文字構成要素は標準の HTML で、Latin 1 字体を使用します。例えば、'&#153;' は商標記号と同じです。

また、16進数や8進数文字構成要素も指定できます。例えば、'&#65;' や '&#x0041;' や '&#o0101;' はすべて小文字の 'a' と同じです。16進数や8進数文字構成要は Unicode 文字で表現されると考えられます。

ほとんどの場合、これはまったく違いがありませんが、 character 127 は Latin 1 と Unicode 文字とでは異なるので注意が必要です。例えば、Latin 1 のcharacter 153 商標記号は、Unicode では 8482 になります。

ハイフンを使用する場合、ソフトハイフン文字 ('&shy;') を使用できます。この文字は非表示で、合理的に改行できるテキストのポイントを表します。

Tags

AddHtml メソッドを使用してドキュメントに HTML を追加することができます。ABCpdf は以下のタグと属性をサポートしています。

  • <Head>
  • <Body>
  • <BR>
  • <P>
  • <H1> to <H6>
  • <List>
  • <UL>
  • <OL>
  • <LI>
  • <A>
  • <B>
  • <I>
  • <U>
  • <Strike>
  • <Sup>
  • <Sub>
  • <Font>
  • <StyleRun>
  • <BlockQuote>
  • <Pre>

<Head>

文書のヘッダ情報を表します。

属性はありません。

<Body>

文書の本体を表します。 これは stylerun の一種で、stylerun と同じ属性を持っています。また、以下の属性もあります。

属性 | 説明
link | リンクの色を設定します。 色は一般的に RGB の16進数(例 color="#FF0000")や色の名前(例 color="red")で設定します。 またグレースケールの色を設定する場合は、1つのコンポーネントだけを設定します(例 color="#80")。CMYK の場合は4つのコンポーネントを設定します(例 color="#10203040")。CMYK の範囲は0から100までなので、16進数にする場合は00から64まで デフォルトは RGB の青色です。

<BR>

改行します。

属性はありません。

<P>

段落(パラグラフ)を表します。これは stylerun の一種で、stylerun と同じ属性を持っています。また、以下の属性もあります。

属性 | 説明
align | 行揃え位置を指定します。デフォルトは左詰です。 left(左揃え)、right(右揃え)、center(中央揃え)、justify(両端揃え)が設定できます。 この属性を設定することは、Doc.HPos この属性を設定することは、Doc.HPos や XTextStyle.Justification のプロパティを設定することと同じです。
break | 段落の改行のスタイルを設定します。この属性には以下のような属性ヒントをもとに改行を制御します。 "keepwithnext" は後に続く段落は改行されません(例：break= keepwithnext)。 "breakbefore" は後に続く段落は改行されます（例：break=breakbefore）。
spacebefore | 通常、段落の前に縦方向のスペースがあります。 この属性を 0 に設定するとこのスペースはなくなります。
spaceafter | 通常、段落の後に縦方向のスペースがあります。 この属性を 0 に設定するとこのスペースはなくなります。

<H1> to <H6>

見出しを付けます。これは段落の一種で、段落と同じ属性を持っています。

<List>

リスト項目を表します。これは段落 の一種で、段落と同じ属性を持っています。また、以下の属性もあります。

属性 | 説明
itemindent | マーカの左側からテキストまでの間隔。この値は現在の単位系で設定されます。 この値を変更することにより、マーカとテキストの間隔を設定できます。 デフォルトの値は、マーカの種類とテキストサイズに基づいて動的に決まります。
markerindent | テキストの現在の左位置からの、マーカの左位置のインデント。この値は現在の単位系で設定されます。 このプロパティを変更することにより、リストの中のマーカのインデントの距離を変更できます。 デフォルトの値は、マーカの種類とテキストサイズに基づいて動的に決まります。
start | リストの最初の項目の開始番号を指定。 これは、順番があるマーカを指定したときだけ使用されます。 デフォルトの値は、1 です。
type | 使用するマーカの種類を指定。 順番があるマーカはリストの項目ごとに増えていきます。数字や大文字や小文字のアルファベットまたはローマ数字が使用できます。(例 数字:type= 1, ローマ数字:type= i type=I, アルファベット:type=a type=A, 設定なし:type = none) 順番がないマーカはリストのどの項目も同じです。この場合、小丸ポイント(type=disk)、中空の小丸ポイント(type=circle)、四角(type=square)が設定できます。 デフォルトは小丸ポイント(type=disk)です。

<UL>

ul は Unordered List (順番がないリスト)の略です。Unordered list はリストの種類で、list タグと同じ属性を持っています。デフォルトのマークは小丸ポイントです。

<OL>

ol は Ordered List (順番があるリスト)の略です。Ordered list はリストの種類で、list タグと同じ属性を持っています。デフォルトのマーカは数字です。

<LI>

li は List Item の略です。下記の属性を持っています。

属性 | 説明
value | 項目番号を指定します。 次の項目はこの値の次の番号になります。
type | 使用するマーカの種類を指定。 list タグと同じ属性を使用できます。

<A>

a はアンカー (Anchor) の略です。

ハイパーリンクとして指定したページにジャンプします。アンカーは stylerun の一種で、stylerun と同じ属性を持っています。また、下記の属性も持っています。

属性 | 説明
href | ジャンプ先のアドレス（URL）

ハイパーリンクは通常青い下線付きのテキストです。body の link 属性、またはアンカータグ本体の stylerun 属性を使用してこのスタイルをオーバーライドすることができます。

<B>

b は太字 (Bold) の略です。<b>～</b> で囲まれたテキストを太字にします。

ABCpdf は適した太字フォントを参照します。参照できない場合は XTextStyle.Bold プロパティを使用して太字を生成します。

属性はありません。

<I>

<i> は斜体文字(Italic)の略です。<i>～</i> で囲まれたテキストを斜体文字で表示します。

ABCpdf は適した斜体文字を参照します。参照できない場合は XTextStyle.Italic プロパティを使用して斜体文字を生成します。

属性はありません。

<U>

u は Under-line (下線)の略です。<u>～</u> で囲まれたテキストに下線がひかれます。結果は XTextStyle.Underline プロパティと同じです。

属性はありません。

<Strike>

strike は strike-through (打ち消し線)の略です。結果は XTextStyle.Strike プロパティと同じです。

属性はありません。

<Sup>

sup は SUPerscript (上付き)の略です。

属性はありません。

<Sub>

sub は SUBscript (下付き)の略です。

属性はありません。

<Font>

<font>～</font> で囲まれた文字のフォント、大きさ、色など指定します。フォントは stylerun の一種で、stylerun タグと同じ属性を持っています。また下記の属性も持っています。

属性 | 説明
size | フォントのサイズを指定します。 1～7 の数値を指定します(例：size=6)。size="+1" や size="-1" のように、現在のフォントサイズに対する相対値を指定することもできます。プラス(+)を指定する場合はダブルクォーテーションで囲むようにしましょう。 文字の大きさを選ぶには fontsize 属性を使用してください。
color | フォントの色を指定します。 通常、色は16進法による RGB 値(例：color="#FF0000")か、その色名(例：color=red")で指定します。 ひとつのコンポーネント(例：color="#80")を指定してグレースケールにすることができます。4つのコンポーネント(例：color="#10203040")を指定して CMYK 色にすることもできます。 色文字列の終わりにスラッシュと16進法の値を追加することにより、独自の色のアルファ値を指定できます(例：egcolor="#10203040/C0")。 色を指定しない場合は、'none' を指定します（例：color= 'none'）。 この属性はストロークと塗りつぶしの色に設定します。
color-stroke | ストロークの色。 この属性により、塗りつぶしの色とは別の色にすることができます。
color-fill | 塗りつぶしの色。 この属性により、ストロークの色とは別の色にすることができます。
csid | カラースペースを指定します。 この属性は前回の呼び出した AddColorSpaceFile または AddColorSpaceSpot で取得したオブジェクト ID を取得します。 この属性はストロ－クと塗りつぶしのカラースペースを設定します。
csid-stroke | ストロークのカラースペース。 この属性により、塗りつぶしのものとは別のカラースペースにすることができます。
csid-fill | 塗りつぶしのカラースペース。 この属性により、ストロークのものとは別のカラースペースにすることができます。
face | フォントを指定します。 候補のフォント名をカンマ(,)で優先順に並べておくと、その中にブラウザで表示可能なものがあればそれが使用されます。
embed | face 属性によって追加されたフォントを埋め込むのか参照するのかを指定します。 詳しくは EmbedFont メソッドを参照してください。デフォルトは false です。
language | face 属性によって追加されたフォントを埋め込む時に使用する言語を指定します。 詳しくは EmbedFont メソッドを参照してください。デフォルトは Latin です。
protection | face 属性によって追加されたフォントを埋め込む時にフォントプロテクト機能を適用します。 詳しくは EmbedFont メソッドを参照してください。デフォルトは true です。
font-family | フォントファミリーを指定します。 この値は face 属性と同じように処理します。
font-style | フォントのスタイルを指定します。 この属性は oblique、italic または normal を取得できます。デフォルトは Normal です。 注意： 現在 ABCpdf は oblique と italic を区別しません。
font-weight | フォントの太さ（ウェイト）を指定します。 この属性は 100 (細) から 900 (太) までの値を取得します。 また、あらかじめ定義されている値（normal、bold、bolder、lighter）も取得できます。 デフォルトは normal （400） です。 注意： 現在 ABCpdf は400以下のフォントウェイトを設定できません。
rendering-mode | テキストのレンダリングモードを指定します。値は次の通りです。 0 テキストの塗りつぶし（デフォルト） 1 テキストのストローク 2 テキストを塗りつぶしてからストローク 3 テキストの塗りつぶしもストロークもなし（非表示） 4 テキストを塗りつぶし、クリッピングするためにパスに追加 5 テキストをストロークし、クリッピングするためにパスに追加 6 テキストを塗りつぶしてからストロークし、クリッピングするためにパスに追加 7 クリッピングするためにテキストをパスに追加 注意： 一般的には、レンダリングモードよりもアウトラインスタイルの方が使用されます。

<StyleRun>

stylerun は現在のスタイルを変更します。下記の属性を持っています。

属性 説明
pid

活字書体を指定します。

この属性は前回呼び出した AddFont または EmbedFont で取得したオブジェクト ID を使用します。
fontsize

フォントサイズを指定します。

この属性は XTextStyle.Size プロパティを設定することと同じです。
charspacing

文字の間隔を指定します。

この属性は XTextStyle.CharSpacing プロパティを設定することと同じです。
wordspacing

単語の間隔を指定します。

この属性は XTextStyle.WordSpacing プロパティを設定することと同じです。
justification

両端揃えを指定します。

この属性は XTextStyle.Justification プロパティを設定することと同じです。
hpos

水平方向の位置を指定します。

この属性は Doc.HPos プロパティを設定することと同じです。
bold

太字にします。

この属性は XTextStyle.Bold プロパティを設定することと同じです。
italic

斜体にします。

この属性は XTextStyle.Italic プロパティを設定することと同じです。
underline

下線をつけます。

この属性は XTextStyle.Underline プロパティを設定することと同じです。
strike

打ち消し線をつけます。

この属性は XTextStyle.Strike プロパティを設定することと同じです。
strike2

二重打ち消し線をつけます。

この属性は XTextStyle.Strike2 プロパティを設定することと同じです。
outline

輪郭をつけます。

この属性は XTextStyle.Outline プロパティを設定することと同じです。
linespacing

行間を定義します。

この属性は XTextStyle.LineSpacing プロパティを設定することと同じです。
paraspacing

段落の間隔を定義します。

この属性は XTextStyle.ParaSpacing プロパティを設定することと同じです。
leftmargin

左マージンを定義します。

この属性は XTextStyle.LeftMargin プロパティを設定することと同じです。
indent

インデントを定義します。

この属性は XTextStyle.Indent プロパティを設定することと同じです。
fixedwidth

固定幅を定義します。

各 style run には幅があります。この幅は一般的にテキストの文字サイズによって決まります。

ある状況においては、style run 全体に固定幅を割り当てるほうが便利です。これはテキストの行揃えや箇条書きで使用されます。
textrise

テキストの上付き/下付きを指定します。

正の値はテキストを上付きにします。負の値はテキストを下付きにします。textrise の距離は現在の単位で測定されます。
annots

関連付ける注釈を指定します。

ハイパーリンクを挿入するには、リンク注釈を使用します(例：annots='link:http://www.google.com/')。

ドキュメントの他ページへのリンクを挿入するには、 移動注釈を使用することができます(例：annots='goto:3')。この数はページ数を表しています。テキストを挿入する時点で移動先のページがなければならないので注意してください。

本文のメモを挿入するには、テキスト注釈を使用します(例：annots='text:A note to be inserted')。

テキストのマークアップにハイライト、波線、下線、打ち消し線の注釈を使用できます（例：annots='highlight:some contents'）。

その他の注釈には、（コロンの後に）本文の内容が書かれている物もありますが、リンクや移動注釈にはありません。しかし、"contents:" を使ってリンクや移動注釈に（非表示の）本文の内容を記述して、後で Doc.GetInfo や Annotation.Contents を使って簡単に確認できます（例：annots='link:http://www.google.com/;contents:alternative description'）。
dir

デフォルトの表示方向を定義します。

ヘブライ語やアラビア語などのようなテキストはデフォルトの表示方向に置換されます。

段落の表示方向は左から右方向 (dir= ltr)、右から左方向 (dir= rtl)、または指定なし(dir= none)を指定できます。指定なしを指定すると、前回のバージョンとの互換性のために ABCpdf のデフォルトの左から右のレイアウトになります。
canbreakafter

改行する文字を指定します。

通常、ABCpdf はスペースなど特定の文字の後にのみ改行します。このパラメータを使用して改行を表す文字を指定できます。例えば、ハイフンやアンダースコアの後で改行する場合は、canbreakafter='-_' を使用します。
breakengine

デフォルトの改行エンジンです。

改行エンジンはどのポイントで改行するかを定義します。

Uniscribe (例：breakengine=uniscribe) 、Unicode (例：breakengine=unicode)、またはデフォルトの自動 (例：breakengine=auto) 改行エンジンを指定できます。

自動の場合、Windows XP や 2003 のインストールには Uniscribe エンジンが使用され、Windows NT や 2000 には Unicode エンジンが使用されます。
wrap

行を折り返します。デフォルトは true です。

折り返しをオフ（false）にすると、描画領域からはみ出たテキスト行は切り詰められます。
transform

テキスト変換。

この値の書式は、XTransform.String と同じです。デフォルト値は identity です。この属性は、rotate 属性よりも優先されます。オプションで 'fixed' の後に数値を設定して（例：transform='fixed 2 0 0 2 0 0'）、変換の基準点を固定できます。

第一進行方向は、右方向（デフォルトの進行方向）になります。第二進行方向は、新しい行がオフセットされる方向（つまり、改行で相殺される方向）になります。

基準点が固定されていなくて、例えば入れ子のタグや改行のせいで StyleRun がバラバラになってしまうと、各スタイルに対して個別に変換が行われます。第一進行方向が横方向ではない場合、各スタイルは元のベースラインから始まるので結果は明らかに違ってしまいます。

基準点が固定されていると変換の基準点が StyleRun の先頭に固定されるので、各スタイル（それ自身は変換されずに）がその前のスタイルの末尾から始まっているかのように表示されます。

第二進行方向は、変換の傾きに関係なく常に第一進行方向に対して直角です。（これは変換の基準点が固定されていて、StyleRun に複数行のスタイルが設定されていないと意味がありません。）

装飾（下線や打消し線）は、四角形のまま変形されることなく正確な位置に設定されます。
rotate

テキストの回転を指定します。

反時計回りで度数を設定します。デフォルトはゼロです。この属性は、transform 属性が設定されている場合は無視されます。transform 属性で説明したように、'fixed' の後に数値を設定して（例：rotate='fixed 30'）、変換の基準点を固定できます。
ascender

アセンダのデフォルトサイズを指定します。

PDF の仕様ではテキストをベースラインから書くことになっているので、テキストをボックスの中に収めるには、ベースラインから文字の上端までの高さの分だけ下に移動させる必要があります。この高さは一般的にアセンダハイトとして知られています。

ABCpdf は独自のメソッドを使用してフォントのアセンダハイトを決めますが、この属性を使用するとそのメソッドをオーバーライドして独自の値を設定できます。これは、グリフの上端にではなくベースラインにテキストを書く場合に便利です。

アセンダの値はフォントの高さの1/1000の値になります。一般的な値は800です。

<BlockQuote>

<blockquote>～</blockquote> で囲まれた文章が、引用文であることを明示します。

下記の属性を持っています。

属性 | 説明
leftindent | 引用文を左にインデントします。 間隔は現在の単位で測定されます。デフォルトは 36 ポイントです。
rightindent | 引用文を右にインデントします。 間隔は現在の単位で測定されます。デフォルトは 36 ポイントです。

<Pre>

整形済みのテキストを表します。スペースや改行を使用できます。


Other Coordinate Spaces

他の座標空間

Basics

ABCpdf は標準の PDF 座標空間 を使用しています。

この原点はドキュメントの左下です。距離はポイント単位で上方向と右方向に進みます。

Windows では普通、縦方向の座標は上から下へ進みますので、この違いが時々混乱を招きます。AddGrid メソッドはこの種の問題を解決するのに役にたちます。

抽象的な座標空間はレイアウトを簡単にしますが、PDF に埋め込まれている基本的なページのレイアウトを削除します。このため標準の PDF 座標空間を使用すべきです。

もし違う座標系を使用する場合はドキュメントの Units、TopDown や Transform プロパティを使用してください。これらには微妙な違いがあります。

Units

ドキュメントの Units および TopDown プロパティにより、mm または cm のような単位系を使用することができます。さらに座標系を下から上ではなく上から下へ逆に設定することができます。

これらのプロパティは、レイアウトを簡単にするために抽象的な考え方を可能にします。しかし基本的な単位系やページのレイアウトはそのままです。

AddText や FrameRect のようなページレイアウトの命令を実行すると、ドキュメントにそのオブジェクトが挿入される前に、抽象的な座標値が PDF の座標値に変換されます。

ほとんどのレイアウトの作業では、その変換は無視できます。しかし、低レベルで PDF を扱ったり、Transforms を使用したりする場合は注意が必要です。

たとえば FrameRect メソッドを実行し、返されたオブジェクトからオリジナルのコンテンツストリームを取得します。取得されたストリームに含まれる座標値は、PDF の座標系で現在の座標系ではありません。

ドキュメントの変換命令は、PDF の座標系で行われます。たとえば、原点の中心で回転処理を行う場合、その原点はドキュメントの左下にあり左上ではありません。

Transform

Transforms は PDF の基本的なものです。Transforms は ABCpdf による抽象的なものではなく、PDF の座標系を変換するための PDF ドキュメントの中に挿入されている描画命令です。

たとえば縮尺の変換で、ポイントではなく mm でページのレイアウトを指定する場合、FrameRect メソッドを呼び、返されたオブジェクトからオリジナルのコンテンツストリームを取得します。この取得したストリームの座標値はポイントでなくmmです。

この transforms は便利ですが理解するのに難しい処理です。

たとえば、座標空間を反転し縮尺の変更を行いそして回転を行うと、座標系は左下方向からのポイントでなく左上方向からの mm になります。

多くのグラフィックオブジェクト(直線や四角形)は正しく描画されますが、イメージとテキストは上下逆さまに描画されます。


Registry Keys

レジストリ キー

ABCpdf のプロパティはレジストリ キーを使用して動作を制御することができます。

通常、この機能を使用する必要はありませんが、使用する場合は注意が必要です。

レジストリの設定値は以下の場所に保存されます。

HKEY_LOCAL_MACHINE\SOFTWARE\WebSupergoo\ABCpdfNET\9

プロパティ名 | 型 | 規定値 | オーバーライド可能 | 説明
TempDirectory STRING ""

ABCpdf が使用するテンポラリ ディレクトリです。

この値を設定して ABCpdf が使用するテンポラリ ディレクトリの位置をオーバーライドできます。
V3Compatible DWORD 0 [false]

1 の場合、ABCpdf のバージョン3 のレイアウトアルゴリズムと完全な互換性を保持します。
V4Compatible DWORD 0 [false]

1 の場合、ABCpdf のバージョン4 のレイアウトアルゴリズムと完全な互換を保持します。

V5Compatible DWORD 0 [false]

1 の場合、ABCpdf のバージョン5 のレイアウトのアルゴリズムと完全な互換を保持します。

DisableCCITT DWORD 0 [false]

0 の場合、ABCpdf は CCITT 圧縮を使用して白黒イメージを圧縮します。

Flate 圧縮でイメージを圧縮する場合は、この値を 1 に設定してください。
InsertJPEGsDirect DWORD 1 [true]

1 の場合、ドキュメントに直接 JPEG イメージが挿入されます。なお、この場合イメージの品質を落とさずにファイルサイズを小さくすることができます。

しかし、ABCpdf の旧バージョンの出力とは少し異なります。

互換性を持たせるには、この値を 0 に設定してください。
RenderDelay DWORD 0

HTML レンダリングは2段階（情報収集段階と作成段階）必要な場合があります。

旧バージョンとの互換性の理由から、この2段階の間に遅延を挿入できます。この値はミリ秒単位で設定されます。
AutoDeleteHTML DWORD 1 [true]

使用後に HTML のテンポラリファイルを自動的に削除します。

通常、この値を変更する必要はありません。
LogErrors DWORD 0 [false]

0の場合、アプリケーションイベントログにエラーを書き込みません。
AutoRecover DWORD 0 [false]

ABCpdf は重大なエラーを自動的には復旧しません。

これは通常 0 に設定されています。エラーの復旧がうまくいく場合とそうでない場合があります。
LogOperations | DWORD | 0 [false] | 使われていません。
MaxOperationTime | DWORD | 1000 | 使われていません。
LogDirectory | STRING | "%SystemRoot%\Temp\" | 使われていません。
LogMaxFileSize | DWORD | 0xFFFF | 使われていません。
LogAsserts DWORD 1 [true]

1 の場合、実行時の一貫性チェックが有効になります。

一貫性チェックに失敗すると、アプリケーション イベント ログにエラーが書き込まれます。
LogAssertsMax | DWORD | 5 | アサーションがエラーを書き込む最大回数。アプリケーション イベント ログの過剰使用を避けるために、小さい値を設定します。
ClearoutSize DWORD 1000

起動時に ABCpdf のテンポラリ ディレクトリを確認します。使われていない項目数が多い場合、そのディレクトリはクリアされます。

この設定は、クリアする前にディレクトリに残しておける最大項目数を定義します。
OneStageRender DWORD 1 [true]

このプロパティは旧バージョンとの互換性のために残されています。
LoadType1Fonts | DWORD | 1 [true] | Type 1 フォントを使用します。
WriteVersionNumber | DWORD | 1 [true] | ABCpdf のバージョンを PDF に組み込みます。
SetInfoProps DWORD 1 [true]

ドキュメント単位でレジストリ キーをオーバーライドします。

レジストリ キーをオーバーライドするには、SetInfo を使用して ID にゼロを設定し、そのキー名を割り当てます。

例：

theDoc.SetInfo(0, "UseScript", "1")

なお、このようにオーバーライドできるのは、「オーバーライド可能」の欄に印が付いているキーだけなので注意してください。
CheckSaveRestore DWORD 1 [true]

一部の PDF は Adobe ドキュメントの構成規約に一致しません。詳細は、Adobe PDF Specification の 4.3.1 を参照してください。

適合ドキュメントは、描画開始時にグラフィックスを保存し、描画後に再保存してください。こうすることで描画処理がそれぞれ別々になります。

不適合ドキュメントは変換でき、グラフィックスを簡単に元に戻せない状態に変更できます。コンテンツを追加すると、追加した状態で処理されます。

このキーは ABCpdf が自動的に不適合ドキュメントを検出し修正するかどうかを定義します。
AnnotBorder DWORD 0

PDF ドキュメントに追加された注釈のデフォルトの枠幅。

このプロパティは SetInfo メソッドでアクセスできます。レジストリ キーで設定はできません。

LargeDocumentSize DWORD 2,000

HTML を描画するために、バイナリ サーチ ツリーを作成する時の大きさ。

大きなドキュメントの場合、HTML を描画するにはリニア サーチ ツリーよりバイナリ サーチ ツリーの方がはるかに効果的です。

小さなドキュメントの場合、バイナリ サーチ ツリーを作成するには時間がかかるので、リニア サーチ ツリーの方が適しています。

このプロパティは、ABCpdf がリニア サーチ ツリーからバイナリ サーチ ツリーに切り替わる時期を HTML オブジェクトのフラグメントの数で定義します。オブジェクトのフラグメントの数は PDF の複雑さにかなり依存しますが、1ページ当たりのフラグメント数が数百では切り替わりません。
DisableFilters DWORD 1 [true]

HTML フィルタを自動的に無効にします。

HTML フィルタはベクターベースではなく、ラスターベースなので、HTML から PDF への変換処理を妨害します。このため、無効にするようにしています。

このプロパティは SetInfo メソッドでアクセスできます。レジストリ キーで設定はできません。
JPEGThreshold DWORD 256

JEPG 圧縮が行われるときの閾値。

非圧縮イメージを PDF に追加する時に、ABCpdf はそのイメージから JPEG 圧縮（非可逆）か可逆圧縮を使用するかを判断します。

ABCpdf はイメージの色数を調べ、この閾値より色数が大きいと連続階調と判断して JPEG 圧縮を行います。グレースケールイメージの閾値はカラーイメージの半分です。

このプロパティは SetInfo メソッドでアクセスできます。レジストリ キーで設定はできません。
UnloadInterval DWORD 0

スクリーンの色数が変更されたら、MSHTML をアンロードするかを定義します。

妥当な値は 0 (MSHTML をアンロードしない) から 10 (スクリーンのプロパティが変更された後、すこししてアンロードする) までの値になります。

このプロパティは SetInfo メソッドでアクセスできます。レジストリキーで設定はできません。

MakeURLsUnique DWORD 1 [true]

ページのキャッシュが無効の場合、URL を一意にします。７文字のランダムな大文字の名前と７文字のランダムな大文字の値を持つ URL パラメータが URL に追加されます。これは、クエリーを含んでいる URL や末尾にスラッシュの付いていないパスを持った URL に適用されます。

キャッシュは ABCpdf の外で起こることがあります。URL を一意にすると、ページを強制的に更新することができます。
Preflight DWORD 1

別のドキュメントからページを追加する時に、追加先のドキュメントに含まれているオブジェクトの確認を行います。

動的に作成される PDF の中に、部分的に作成されたオブジェクトを挿入することができます。2つのドキュメントを結合する時には、その新しい組み合わせが確実にうまくいくように、部分的に作成されたオブジェクトは完成していなければなりません。

例えば、ドキュメントにサブセットのフォントとテキストを追加する場合、テキストを追加するに従って文字リストが作成されていきます。ドキュメントを保存する時点で、実用的なフォントのサブセットが作成されるようフォントオブジェクトと文字リストを結合しておかなければなりません。このフォントは部分的に作成されたオブジェクトの例です。

通常、既存の PDF テンプレートからドキュメントを読み込む場合、そのドキュメントには部分的に作成されたオブジェクトは含まれません。部分的に作成されたオブジェクトが含まれるのは、ドキュメントが壊れている場合、あるいはテキストを追加している場合だけです。

このプロパティをゼロ以外の値にすると、ABCpdf は追加先のドキュメントに含まれているすべてのオブジェクトの確認を行います。追加先のドキュメントに間接オブジェクトが多数含まれている場合、このプロセスにかなり時間がかかります。
Refactor DWORD 1

保存時に余分なオブジェクトを削除します。

PDF に重複したオブジェクトが設定されることがあります。これらを削除することで PDF ドキュメントのサイズを小さくすることができます。

このプロパティが True の場合、ABCpdf は任意の重複オブジェクトを削除します。ドキュメントに間接オブジェクトが多数含まれている場合、このプロセスに多くのメモリと時間がかかります。

あるドキュメントを別のドキュメントに追加する場合、2以外の0ではない値を設定すると部分的なリファクタリングになります（その場合、循環参照を起こす不要なオブジェクトが削除されない可能性があります）。しかし、これは少し時間が短縮されます。値を2にすると、完全なリファクタリングになります。ファイルまたはメモリに保存する場合、0ではない値にすると完全なリファクタリングになります。
PagesMaxKids DWORD 20

ページツリーのリーフノード以外の子の最大数。2以下の場合、ページツリーのバランスがとれません。

ページツリーはページ順を設定します。ページツリーを使って、ページ番号でページを検索したり、ページ ID でページ番号を識別します。これらの処理の計算時間は O（PagesMaxKids×log PageCount/log PagesMaxKids) で、このプロパティ値が小さいほど操作は速くなります。

値が3以上の場合、（ページを追加するか、ページかリーフ以外のノード（1 Pages オブジェクト）を削除するかして）最初にページツリーを変更した時に、ツリー全体のバランスがとれます。親ノードを PagesMaxKids の子よりも多くするためにページを追加したり、（ルート以外の）親ノードを PagesMaxKids/2 の子よりも少なくする（または (PagesMaxKids + 1)/2 の子の階よりも少なくする）ためにページまたはリーフ以外のノードを削除すると、部分的にページツリーのバランスがとれます。このプロパティ値が小さい方がツリーのバランスがとれます。
BgImageVertProximity DWORD 480

（HTML インポートの場合）ABCpdf は背景イメージと前景イメージを別々に扱います。例えば、通常、背景イメージをページ全体に分割することはできますが、前景イメージをこのように分割することはできません。

そのため、ABCpdf はさまざまな方法で前景イメージなのか背景イメージなのかを判断しようとします。

同じイメージが HTML の範囲内に何度も表示された場合、ABCpdf はそれを背景イメージと見なします。

このプロパティは ABCpdf が反復イメージ（背景イメージ）を検出するために、背景イメージ上の垂直方向の距離（厚さ）をピクセル単位で定義します。
BgImageMinRepeat DWORD 5

（HTML インポートの場合）ABCpdf は背景イメージと前景イメージを別々に扱います。例えば、通常、背景イメージをページ全体に分割することはできますが、前景イメージはこのように分割できません。

そのため、ABCpdf はさまざまな方法で前景イメージなのか背景イメージなのかを判断しようとします。

同じイメージが HTML の範囲内に何度も表示された場合、ABCpdf はそれを背景イメージと見なします。

このプロパティの値を超えたら ABCpdf がそのイメージを背景イメージだと見なす反復回数を定義します。
NarrowBgImageMaxWidth DWORD 80

（HTML インポートの場合）ABCpdf は背景イメージと前景イメージを別々に扱います。例えば、通常、背景イメージをページ全体に分割することはできますが、前景イメージはこのように分割できません。

そのため、ABCpdf はさまざまな方法で前景イメージなのか背景イメージなのかを判断しようとします。

イメージがかなり縦長で幅が狭い場合、ABCpdf はそれを背景イメージだと見なします。

このプロパティは、その最大幅を定義します。

NarrowBgImageMinHeight DWORD 480

（HTML インポートの場合）ABCpdf は背景イメージと前景イメージを別々に扱います。例えば、通常、背景イメージをページ全体に分割することはできますが、前景イメージはこのように分割できません。

そのため、ABCpdf はさまざまな方法で前景イメージなのか背景イメージなのかを判断しようとします。

イメージがかなり縦長で幅が狭い場合、ABCpdf はそれを背景イメージだと見なします。

このプロパティは、最小の高さを定義します。
CheckBgImages DWORD 0 [false]

（HTML インポートの場合）まだ背景イメージの読み込みが終っていなくても、Windows が ABCpdf に終了したと通知することがあります。

このオプションは ABCpdf が任意の背景イメージを強制的に読み込むよう指定できます。
HTMLBottomExtraMargin DWORD 30

（HTML インポートの場合）HTML ページの描画時に ABCpdf が下マージンに追加する余分なマージンを変更します。インターネット エクスプローラでの生成問題のせいで、HTML ページを少し高くする必要があります。その後、この余分なマージンは切り取られるので、最終的な PDF は変わりません。

しかし、そのページの下部に相対位置が割り当てられているオブジェクトが含まれている場合、そのオブジェクトは削除されたりズレたりする場合があります。このような問題を回避するには、このプロパティを 0 にするか、小さい値を設定してください。
HostWebBrowser DWORD 1 [true]

XHtmlOptions.HostWebBrowser の初期値。
CharWidthRatioMin DWORD 700

EMF または HTML コンテンツのインポート時に、EMF から PDF への最小文字幅を1/1000単位で指定します。

文字幅がこのプロパティ値から ChartWidthRatioMax までの文字は、フォントが置き換えられるので PDF の文字幅になります。この範囲外の文字は特別な方法で配置されるので、指定された通りに配置されます。
CharWidthRatioMax DWORD 1400

EMF または HTML コンテンツのインポート時に、EMF から PDF への最大文字幅を1/1000単位で指定します。

（EMF と PDF の）文字幅が CharWidthRatioMin からこのプロパティ値までの範囲内の文字は、フォントが置き換えられるので PDF の文字幅になります。この範囲外の文字は特別な方法で配置されるので、指定された通りに配置されます。
FlashPreviewTime DWORD 0

Flash （SWF） ムービーを含んでいる HTML が PDF ドキュメントに追加されると、ABCpdf はそのムービーのプレビューイメージを作成します。

プレビューは Flash がインストールされていない場合に見るもので、PDF の印刷時に使用されるものです。通常、それは Acrobat 以外のビューアを使用して PDF を開く場合に見るものです。

この値は、ABCpdf の旧バージョンで SWF のラスターをインポートするために使用され、SWF のベクタインポートの FlashPreviewWaitTime と同義で使用されます。

ムービーの初期化時に、ムービーの開始時間（ミリ秒単位）を指定できます。

ムービーに、再生方法を変えてしまうスクリプトが含まれていることがあります。例えば、スクリプトによって、5秒再生した後で現在のフレームが最初のフレームにリセットされる場合があるので、プレビュー時間を１０秒に設定して再生されるはずだったものが全く別のものになることがあります。
FlashPreviewWaitTime DWORD 2000

Flash （SWF） ムービーを含んでいる HTML が PDF ドキュメントに追加されると、ABCpdf はそのムービーのプレビューイメージを作成します。

プレビューは Flash がインストールされていない場合に見るもので、PDF の印刷時に使用されるものです。通常、それは Acrobat 以外のビューアを使用して PDF を開く場合に見るものです。

このプロパティはプレビュー前の再生されるまでの遅延時間（ミリ秒単位）を定義します。

ムービーに、再生方法を変えてしまうスクリプトが含まれていることがあります。例えば、スクリプトによって、5秒再生した後で現在のフレームが最初のフレームにリセットされる場合があるので、プレビューを１０秒に設定して再生されるはずだったものが、全く別のものになることがあります。
FlashPreviewDPI DWORD 96

Flash （SWF） ムービーを含んでいる HTML が PDF ドキュメントに追加されると、ABCpdf はそのムービーのプレビューイメージを作成します。

プレビューは Flash がインストールされていない場合に見るもので、PDF の印刷時に使用されるものです。通常、それは Acrobat 以外のビューアを使用して PDF を開く場合に見るものです。

この値は、ABCpdf の旧バージョンで SWF のラスターをインポートするために使用され、SWF のベクタインポートには使われません。

このプロパティはプレビューを作成するための解像度（1インチあたりの画素数）を定義します。
RenderNoBitmap DWORD 0 [false]

EMF / EPS ファイルの生成にのみ使用します。

EMF / EPS ファイルの生成時、透明度を検出するためにビットマップの生成が無効になります。EMF / EPS 形式は PDF と違って、透明度も非標準の重ね合わせモードもサポートしていないので、予想もしない結果を引き起こす可能性があります。

このプロパティは SetInfo メソッドでアクセスできます。レジストリ キーで設定はできません
RenderNoDisplayList DWORD 0 [false]

ビットマップ ファイルの生成に使用します。

解像度の高い / 背景をアンチエイリアスにしたビットマップの生成時に、pdf のレンダリング オブジェクトをディスプレイ リストに格納します。そのビットマップはいくつものセクションに分けられ、ディスプレイ リストは各セクションに生成されます。

一部の pdf （非常に複雑な pdf ファイル）では、このディスプレイ リストがかなり大きくなってしまい（メモリの消費量が大きくなり）、場合によってはそれぞれの pdf オブジェクトを格納するのではなく、イメージをまるごと置いて直接そのイメージに pdf オブジェクトを作成するほうがよい場合もあります。

このプロパティは SetInfo メソッドでアクセスできます。レジストリ キーで設定はできません。

RenderTextAsText DWORD 1 [true]

テキストを EMF などのベクタ形式に出力する場合に使用します。

True の場合、テキスト自体はファイルに出力されます。False の場合、ベクタに変換されてからファイルに出力されます。

True の場合、ファイルが小さくなります。False の場合、出力ファイルは大きくなりますが、フォントに依存しません。テキストのように見えるものすべてが実際にテキストだとは限りませんし、テキストとして抽出されることもあります。

このプロパティは SetInfo メソッドでアクセスできます。レジストリ キーで設定はできません。
RenderEmfType DWORD 1

EMF の生成に使用します。

EMF の出力型は次の通りです。

  • 0 - EmfOnly
  • 1 - EmfPlusOnly
  • 2 - EmfPlusDual

EmfPlusDual の場合、EMF と EMF+ の両方のエントリが出力に含められます。これはかなり互換性がありますが、ファイルの大きさも倍になります。

このプロパティは SetInfo メソッドでアクセスできます。レジストリ キーで設定はできません。
NeverClipAppearances DWORD 1 [true]

テキストフィールドの見た目を定義します。

ドキュメントに、テキストの高さよりも小さいテキストフィールドが含まれている場合があります。この場合の選択肢は2つです。1つは、希望するテキストサイズを保存し、そのテキストをクリッピングする。もう1つは、フィールドの高さに合うようにテキストのサイズを小さくする。

デフォルトの場合、テキストサイズを小さくします。しかし、状況に応じてこの設定を変更してオーバーライドしてください。
CheckDisplaySettings DWORD 0

ある操作をしながら画面解像度を変更すると、一部の MSHTML のバージョンが正しく動作しなくなることがあります。画面の大きさを小さくすると、HTML の右側がクリッピングされてしまうことがあります。

画面解像度の変更は一般的なことではないので、これが問題になるのは稀ですが、一部のリモートアクセス アプリケーションは制御できないような方法で画面設定を変更することがあります。つまり、遠隔的にサーバにログする人がウェブアプリケーションなど長い間稼動しているプロセスでこのような問題を引き起こす場合があります。

このような問題が起こった時にこのレジストリ キーを使用して ABCpdf を制御できます。オプションは次の通りです。

  • 0 - 画面の変更を無視する。
  • 1 - 「表示設定が変更されました」という例外を出す。現在のパッケージを循環処理して問題を解決するために使用できます。
  • 2 - 画面設定を元に戻し、できない場合は例外を出す。
RenderInstallFonts DWORD 0

EMF の生成時の組み込みフォントのインストールを制御します。

デフォルトでは、Rendering.GetData メソッドを使って EMF を生成する場合、フォントはメモリにインストールされ、Doc.Clear メソッドが呼び出されるまで使用できます。つまり、EMF をプリンタにスプールして、フォントを正しく表示できるということです。

デフォルトでは、Rendering.Save メソッドを使って EMF を保存する場合、組み込みフォントはインストールされず、システムで取得できない任意のフォントについてはテキストはポリゴンで表します。これは ABCpdf のプロセス以外で EMF ファイルを表示する時にメモリにあるフォントを利用できないからです。従って、そういったフォントを使っているテキストは Windows によるフォントの置き換え対象となります。

メモリに組み込みフォントをインストールしないようにするには、Rendering.GetData メソッドを呼び出す場合でも、この値を 0xFFFFFFFF に設定してください。これにより組み込みフォントのテキストはポリゴンで表されるので、生成は遅くなり、出力は大きくなります。

常にフォントをインストールするには、Rendering.Save メソッドを呼び出している時でも、この値を 1 に設定してください。これにより生成は速くなり、出力は小さくなります。しかし、ABCpdf のプロセス以外で EMF ファイルを表示すると、組み込みフォントが正しく表示されない場合があります。
PrintHookLog DWORD or STRING 0

%SystemRoot%\Temp を使って PrintHook ライブラリのログを有効にするにはこの値を 1 に、フォルダを使ってログを有効にするにはフォルダのパスを設定してください。

PrintHook ライブラリはファイルを XPS に出力するために使用されます。XPS は ImportAny の操作で PDF に変換されます。デバッグ目的でログファイルを有効にしてもらう場合があります。

ログファイルは、spy_<PID>.txt という名前になります。

64 ビット OS では、32 ビットの処理を切断するためにこの値を 32 ビットのレジストリのセクション （Wow6432Node） にも設定する必要があります。
PrintHookShow DWORD 0

Operations.ImportAny() で起動したアプリケーション（主に Office プリケーション）を表示するには、この値を 1 に設定してください。非表示にするにはこの値を 0 にするか削除してください。

Office アプリケーションを使ってドキュメントを XPS ファイルに出力してから PDF に変換します。これらのアプリケーションは時々さまざまなポップアップに引っかかるので、それらが何をしているのか把握しておくと役立つことがあります。

この機能には制限があって、別のユーザーアカウントで実行したアプリケーションを表示できない場合があるので注意してください。通常、これは Web サーバーのプロセスで Office アプリケーションを実行している場合に起こります。
URLPolicies STRING "0x1608 0x03"

マシンの所定の場所にデフォルトの URL のセキュリティ ポリシーをオーバーライドできます。このレジストリ キーを使用してセキュリティ設定を開いたり、ロックダウンすることができます。

文字列は、スペースで区切られたリストの一連の URL アクション（例：URLACTION_HTML_META_REFRESH） やポリシー（例：URLPOLICY_DISALLOW） です。この種のアクションやポリシーに適した値は Microsoft のウェブサイトにあります。この設定のデフォルト値は meta-refresh タグを無効にします。

既存のセキュリティ設定は理由があって設定されているので、取り扱いは慎重に行ってください。
TrustedSites STRING ""

通常、HTML の DOM へのクロスドメイン アクセスは許可していません。つまり、1つのドメインに Frameset 要素が1つ、別のドメインに複数の Frame がある場合、ABCpdf はどの Frame にも適切な幅や高さを定義することができません。

この種の問題を理想的に解決するには、MSHTML が確実にこの種のクロスドメイン スクリプトを許可するよう同じドメインにページを移動するか、Frameset 内でそのドメインを参照してください。これを行えない場合は、信頼済みサイトを指定できます。信頼済みサイトの URL の1つから始まるページ URL はどれも特別な信用が与えられます。

URL のリストは、スペースで区切られます。
例：
http://www.google.com/ http://www.microsoft.com/ http://www.yahoo.com/

既存のセキュリティ設定は理由があって設定されているので、取り扱いは慎重に行ってください。
BypassDeviceIcc DWORD 0

PDF によっては、黒いオブジェクトを正しく処理しないカラープロファイルを含んでいるものがあります。

入力カラースペースが CMYK ICC で出力がデバイス CMYK の場合、または入力カラースペースが Gray ICC ベースで出力がデバイス CMYK の場合、このオプションでプロファイル変換を無視することができます。
SignatureSizeMultiplier DWORD 2 これは、Abcpdf が署名の /Contents フィールドに割り当てるバッファサイズを定義できます。

これは低レベルの設定です。ABCpdf が署名付きのメッセージを保持するのに十分なバッファサイズではないというエラーが発生した場合、手動でこの乗数を増やすことができます。
SVGDrawInvisible DWROD 0 [false] このフラグは、PDF に変換する時に非表示の SVG 要素を透明なオブジェクトとして描画するかを定義します。非表示の SVG 要素は、visibility を false に設定したり、stroke-opacity や fill-opacity が 0 に設定すると、線の描画や塗りつぶしはおこないません。

PDF の透明度が大半の PDF リーダーの生成モードを根本的に変える可能性があるので、プレゼンテーションのためには非表示のオブジェクトを描画しない（デフォルト）ことが一番です。
XPSExportWMPImages DWORD 1 [true] このフラグは、変換された XPS ドキュメントでの Windows Media Photo (WMP/JPEG XR) イメージの使用に関する ABCpdf の方針を制御します。このフラグが設定された場合、ABCpdf は場合によっては PNG よりも WMP の使用を選択します。

WMP 形式は、透明度だけでなく可逆圧縮や非可逆圧縮を処理できる万能な形式です。多くの場合、作成された XPS ドキュメントのファイルサイズを小さくすることができます。

しかし、Silverlight など一部のコンパクトな .NET ランタイム環境では WMP イメージのデコードをサポートしていません。そのような環境で XPS ドキュメントを使用しなければならない場合、このフラグをオフにできます。

CMYK などのカラースペースのイメージは、XPS ドキュメントでは常に WMP で表さなければなりません。そのような場合にドキュメントが決して WMP を使用しないようにするには、エクスポート前に RGB かグレースケールに変換しておかなければなりません。
MSOfficeShow DWORD 0 [false]
True にすると、MSOffice の読み取りモジュールを使用する時に MSOffice アプリケーション ウィンドウが表示されます。これは、トラブルシューティングに役立ちます。
HtmlProcessPoolSize DWORD 10
IE9 で Gecko HTML エンジンや MSHtml などのアウトオブプロセスを使用して HTML を生成する場合、ABCpdf はワーカプロセスのプールを保持します。この値は ABCpdf が生成可能な最大プロセス数を指定します。

デフォルト値は Web サーバなどのマルチスレッド環境のために最適化されます。アプリケーションがマルチスレッドを使わずに HTML を生成する場合は、この値を減らしてシステムリソースを確保することができます。
MSHtmlBootstrap DWORD 0 この設定は、ABCpdf が MSHTML のブートに使用する方法を定義します。この設定は、システムに IE9 以上がインストールされている場合にのみ使用されます。
  • 0 - ABCpdf は必要なレジストリ設定を HKCU レジストリ群に書き込みます。IIS アプリケーションの場合、「ユーザープロファイルの読み込み」が可能である必要があります。
  • 1 - MSHtml はアウトオブプロセスをホストし、ABCpdf は互換性を良くするために IE8 の DLL を読み込もうとします。これには、システムに特定の IE8 の DLL が必要です。
  • 2 - ABCpdf は現在の実行プロセス内で必要な設定を行おうとします。これは、「ユーザープロファイルの読み込み」不可の場合、もしくはレジストリ群にアクセスをもたない場合に使用できます。
PreferDcomLaunch
 DWORD 0 [false]
これは MSOffice の読み取りモジュールのための設定です。

Windows の DcomLaunch サービスを使用して MSOffice のアプリケーションプロセスを作成したい場合は True に設定してください。これは主に Classic ASP で MSOffice の読み取りモジュールを使用するために必要です。Classic ASP で MSOffice の読み取りモジュール用のシステムを用意するための詳細については、WebSupergoo 社のサポートページを参照してください。
AddLinksToIDs
 DWORD 1 [true]

この設定は、AddLinks が True の時にドキュメントの HTML の生成スピードを上げるために使用できます。

HTML ページ内のフラグメントのリンクはアンカー名か要素の ID を参照できます。ですから、LinkPages メソッドを使用するにはそのページの ID をすべて把握しておかなければなりません。これは、ID 付きの要素を多く含んでいるページに大幅なオーバーヘッドをもたらす可能性があります。

LinkPages メソッドを使わないのであれば、このプロパティを False に設定しておくと安全です。実際このプロパティを False に設定しても、この要素のサブセットに使われるオーバーヘッドはわずかなので ABCpdf はアンカー名や ID を追跡します。
AddImagePolicy
 DWORD 0 [default]

この設定は、HTML に含まれているイメージをドキュメントに追加する方法を定義します。

0 の場合、ImageQuality を指定していなければ、すべてのイメージを直接追加します。これは確実に JPEG イメージの品質やサイズを保ち、正しい透過度で PNG イメージを追加し、メモリーの使用量を最小限になります。

このプロパティを 1 に設定すると、イメージは間接的に挿入されます。HTML レンダリングエンジンを使用してイメージを解凍し、再圧縮してから PDF に追加されます。
EmfDeviceName STRING ""

EMF を作成する時に、デフォルト画面から標準設定が取得されます。
When an EMF is created the standard settings are taken from the default screen.

場合によっては、別の画面またはデバイス（プリンタなど）から標準設定を取得できる方が望ましいことがあります。

このプロパティでデフォルトの EMF 設定に使用するデバイス名を指定できます。

このプロパティは SetInfo メソッドでアクセスできます。レジストリ キーで設定はできません。
ForceUpdateAppearances DWORD 0 [false]

通常、ABCpdf はフィールドの見た目を更新しないようにします。これは、アプリケーションによってフィールドの見た目を生成する方法が異なるので、更新することによって変わってしまう可能性があるからです。

これらの変更は、ピクセルレベルで移動し恐らくテキストの折り返しが変わるので、かなりわかりづらくなる可能性があります。しかし、フィールドの見た目の生成に関する仕様がないため、外観ストリームを生成し直す場合、この種の微妙な変化は避けられません。

Acrobat は、NeedsAppearances フラグが設定されている PDF のフィールドの外観ストリームを常に生成し直します。これは上述したような微妙な変化はありますが、これはインタラクティブに行われるのであまり問題にはならないようです。

PDF 作成ソフトによっては、不正な外観ストリームを含んだ PDF 文書を作成する物もあります。Acrobat はフィールドの外観ストリームを生成し直すので PDF を正しく表示します。ABCpdf は PDF があればそれは正しい物であって不正なものは含んでいないだろうと考えます。

この場合、Acrobat の動作を真似て強制的に外観ストリームを更新したい場合があります。そのような場合にこのフラグで指定することができます。


Corrupt Documents

正しくないドキュメント

Intro

時には正しくないドキュメントや標準的でない PDF ドキュメントがあります。

この場合、ドキュメントの描画が間違った位置や大きさになったりして、正しく描画されません。

この原因として、ドキュメントの MediaBox が標準でない場合とページの内容が標準でない場合があります。

この問題が起きた場合、まず AddGrid メソッドを使用してください。

MediaBox

ほとんどの PDF ドキュメントの大きさは原点を基準にした MediaBox で定義されます。たとえば "0 0 612 792" です。

しかし、"-612 -792 0 0" のような値も一般的ではありませんが間違ってはいません。

このような値を確認するのは Read メソッドを使用して MediaBox プロパティを取得します。

MediaBox の値が一般的でない場合ページの外に描画されるので、MediaBox に描画位置の設定を正しく行う必要があります。

CropBox
MediaBox はページの領域を定義しますが、同じような動作をするものとして CropBox があります。

CropBox は目に見える領域を定義します。ページが表示されたり印刷される時にこの領域でクリッピングされます。

Acrobat で PDF を表示する時、MediaBox でなく CropBox で定義されたページの領域が表示されます。

通常は CropBox と MediaBox は同じです(表示の領域や位置など)。しかし違う場合がありますが、この時は描画されるものがクリッピングされて見えないようになります。

MediaBox と CropBox の関係の他に、TrimBox や BleedBox の関係もあります。詳しくは PDF Reference の Section 4.3.1 の説明を参照してください。


HTML / CSS Rendering

HTML / CSS の処理

Intro

ABCpdf は HTML と CSS をサポートします。

AddImageUrl メソッドを使用して HTML のページを個別に処理できます。

AddImageToChain メソッドと AddImageUrl メソッドを併用して HTML をマルチページ PDF に変換することもできます。

Method

HTML はドキュメントの構造や外観を明記し、ブラウザに正確な処理とレイアウトを表示します。一方、PDF はドキュメントの外観の様子を指定し、その内容の意味は無視します。このように HTML と PDF は基本的に違います。

HTML はドキュメントの外観をよりよくコントロールするための変更が加えられてきました。一方、PDF はドキュメントの意味を有効にするための変更が加えられてきました。しかし、この2つの仕様は全く異なった概念に基づいているので、互いにコンバートすることは困難です。

ABCpdf は PDF に追加するために （Microsoft のインターネットエクスプローラで使われている） MSHTML エンジンまたは （Mozilla Firefox で使われている） Gecko エンジンを使用して HTML を解析したり前処理したりできます。これはかなり正確な HTML 表現を提供します。基本的な生成エンジンの動作や機能に違いがあるため、HTML エンジンを替える時に生成された出力に違いが生じてしまいます。エンジンの特性に関する詳細については、Engine、ForMSHtml、 ForGecko プロパティを参照してください。

Cache

ABCpdf は使用した URL のキャッシュを5分間だけ保持します。

AddImageUrl や AddImageHtml を呼び出す時にキャッシュを無効にするには DisableCache パラメータを True に設定します。

別の場所にページがキャッシュされている場合があります。例えば、Windows は個々のページのリソースをキャッシュする場合があります。また、プロキシサーバーは全ページをキャッシュする場合があります。

ページがキャッシュされる一般的な理由は、ページがこのページのキャッシュを認める http ヘッダー情報を送っているからです。インターネットエクスプローラの HTML エンジンは、特定の Web ページをキャッシュするよう要求します。その場合はまず IEWatch などのツールを使用してそのコンテンツの有効期限のヘッダーを表示してください。まさに、IIS の 管理コンソールにあるコンテンツの有効期限の設定を調整するだけでこの問題を解決できます。

URL のページをその都度レンダリングするには、URL を次のように変更します。

http://www.microsoft.com/?dummy=1
http://www.microsoft.com/?dummy=2
http://www.microsoft.com/?dummy=3

これらはすべて同じページ (www.microsoft.com) のレンダリングを行いますが、URL が違うのでその都度、確実にレンダリングされます。

Caveats

URL のページをレンダリングすることができます。

ページをレンダリングする際に、そのページを ABCpdf で再読込しなければなりません。これはクライアントから現在のページを表示しているからです。ABCpdf はサーバ上で実行するので、そのページは別のセッションにあります。

従って、通常はページ内でクッキー、セッション状態またはフォームのサブミットに依存することはできません。そのページは指定する URL だけに依存しなければなりません。

セッション状態に依存しなければならない場合、クッキーなしのセッションを使用するか、特定の一意の ID の下にそのセッション情報を保存し、URL からその ID を渡し、サーバ側のコードからその情報を取得することができます。

ユーザ認証を使用している場合、ABCpdf の HTML のオプションにログオン名とパスワードを設定する必要があります。SSL または HTTPS 接続に関連すると思われる問題はユーザ名やパスワードの設定で解決されることがあります。詳細は、LogonName プロパティを参照してください。

Size

画面の解像度は一般的に 96 dpi です。つまり、モニタに HTMLページを表示する場合、Windows は 96 dpi で表示します。

画面解像度と PDF の 72 dpi の解像度との違いは HTML の方が画面に表示するよりも印刷文書の方が大きく表示されるということです。

両方とも同じサイズで表示する場合は、これを補正するために 72/96(0.75) のスケールを適用する必要があります。

例えば、Width パラメータに値 800 を割り当てて Web ページをレンダリングする場合、両方とも同じサイズで表示するには Rect の幅を 600 に設定する必要があります。

DPI

PDF ドキュメントの大部分はベクトルがベースになっています。PDF ドキュメントは解像度に依存しないので、本当は 1 dpi も持っていません。 PDF で唯一ラスタベースになっているのはイメージの部分です。

HTML のほとんどの要素（テキスト、線）はベクトルベースなので解像度には依存しません。

Web ページでレンダリングされるイメージの解像度は複雑です。イメージタグで参照されるイメージが 300 の正方形だとします。Doc.Rect の幅が AddImageUrl に渡す幅と同じなら、これは 72 dpi でレンダリングされます。しかしこれらの2つの値の比率を変更することにより、そのイメージはスケーリングされるので解像度も変更されます。

この 300 の正方形がイメージタグで高さと幅が 150 に設定されている場合、デフォルトの解像度は2倍になります。

Breaks

ABCpdf はヒューリスティックのセットを使って、改ページの位置を決めます。page-break-before、page-break-after、page-break-inside の CSS スタイルを使用して、改ページを更に制御できます。

改ページの要素は見えていなければなりません。例えば、

<div style="page-break-before:always">&nbsp;</div>

この div タグは見えるので、改ページされます。

<div style="page-break-before:always"></div>

この div タグは見えないので、改ページされません。

役立ち情報 改ページスタイルのデバッグについて

改ページが思い通りにいかない場合があります。この種のタグは非表示なので、正しく適用したかが非常にわかりづらいからです。簡単な解決法の1つとしては、表示可能なスタイルを使用してデバッグすることです。

例えば、"page-break-inside: avoid" スタイルと一緒に右側の枠のスタイルも適用してください。そうすることで要素がどこにあるかを正確に把握できます。枠が右側に表示されない場合は、HTML に何か問題があるということがわかるはずです。

Snapshot

現在の URL のスクリーンショットを撮りたい場合があります。

大抵は、SERVER_NAME の値、URL、QUERY_STRING サーバ変数を使用して現在のページの URL を取得することができるはずです。HTTP_REFERER (sic) サーバ変数を使用して前のページの URL を取得することができるはずです。

他には、HttpResponse.Filter プロパティを使用するか、そのページの Render メソッドをオーバーライドして現在のページの HTML を取得できます。AddImageHtml メソッドを使用してこの HTML を ABCpdf に表示することができます。相対リンクを使用して HTML がリソースを参照する場合、ABCpdf に表示する前に HTML に <BASE> タグを挿入してください。

このような操作を行う場合、再帰的に ABCpdf を実行しないでください。これを行うとエンドレスループに陥り、ABCpdf が実用的なイメージを返せなくなります。


SVG のサポート

Intro

ABCpdf は SVG Tiny のサブセット機能をサポートしています。

SVG Tiny の全ての機能をサポートしていない理由は、いくつかの機能は PDF と同等の機能を実装することが困難であるからです。しかし、ドキュメントの扱いを共通にするために、一部 SVG Tiny 以外の機能もサポートしています。

Content

PDF は基本的にはスタティックなメディアです。

ABCpdf スタティックなコンテンツのインポートをサポートします。

しかし、アニメーションやビデオ、スクリプトなどダイナミックな SVG のコンテンツはインポートしません。

Text

ABCpdf は SVG の外部参照フォントをサポートします。

しかし、絵文字のパスを定義したタグを使用している SVG の埋め込みフォントがありますが、ABCpdf はこの種の埋め込みフォントはサポートしません。

テキストのスタイルによっては、PDF での表現が困難な場合があります。この場合できる限り近い表現にします。

Links

リンクはアンカーエレメントと共にテキストエレメントでサポートされます。

内部ドキュメントのリンクは現在サポートしていません。

Gradients

SVG ではグラデーションの終了色の不透明度の設定が可能ですが、PDF では設定できません。

そこで、ABCpdf は透明の終了色を明るいソリッドの終了色で代用します。

CSS

CSS はSVG Tiny の一部ではありませんが、ABCpdf は簡素化した CSS システムをサポートします。

非常に多くの SVG ドキュメントはシンプルな CSS のセレクターを使用しているので、この機能は便利です。

ABCpdf は内部のスタイルシートでシンプルな型のセレクターをサポートします。ABCpdf はローカルドライブにある外部のスタイルシートをサポートします。

しかし、ABCpdf はスタイルシートを解析する時、"import" と "media" の CSS のディレクティブをスキップします。


Common Tasks

サンプルコード

ヘルプで、テキストの追加、複数の領域にまたがってテキストを設定、イメージの描画 など一般的な操作方法を示したサンプルコードを多数紹介しています。

主要オブジェクトのメソッドやプロパティにサンプルコードがございますので、AddText メソッドや AddImageFile メソッドなどの使用法につきましては、サンプルコードをご覧ください。

また、HTML ページの作成、 HTML をマルチページ PDF に変換する、透かし、PDF ドキュメントの追加、他の PDF ドキュメントのページを別の PDF ドキュメントのページに描画する方法 などの処理もサンプルコードで紹介しています。

ライブのサンプルにつきましては、ABCpdf をインストールすると含まれるウェブサイトのサンプルをご覧ください。


Text Flow Example

複数の領域にまたがってテキストを設定

複数の領域にまたがってテキストを設定することができます。 下記のコードは、複数のページ間にテキストを設定する例ですが、同一ページにおいて、複数の領域間にテキストを設定することもできます。

Setup

最初に、変数を定義して、テキストを設定します。

[C#]
int theID = 0;
string theText = "Gallia est omnis divisa in partes tres, quarum unam incolunt Belgae, aliam Aquitani, tertiam qui ipsorum lingua Celtae, nostra Galli appellantur. Hi omnes..."; //
本来はもっと長いテキストを設定します。

[Visual Basic]
Dim theID As Integer = 0
Dim theText As String = "Gallia est omnis divisa in partes tres, quarum unam incolunt Belgae, aliam Aquitani, tertiam qui ipsorum lingua Celtae, nostra Galli appellantur. Hi omnes..." '
本来はもっと長いテキストを設定します。

Doc Obj

次に、ABCpdf の Doc オブジェクトを作成し、基本的な項目を設定します。

線の幅とフォントのサイズを大きくし、両端揃えを有効にしてドキュメントの端から描画する四角形を挿入します。

[C#]
Doc theDoc = new Doc();
theDoc.Width = 4;
theDoc.FontSize = 32;
theDoc.TextStyle.Justification = 1;
theDoc.Rect.Inset(20, 20);

[Visual Basic]
Dim theDoc As Doc = New Doc()
theDoc.Width = 4
theDoc.FontSize = 32
theDoc.TextStyle.Justification = 1
theDoc.Rect.Inset(20, 20)

注意：日本語表示については下記の設定を行ってください。

EmbedFont メソッドを使用する場合
  theDoc.Font = theDoc.EmbedFont("MS Pゴシック", "Unicode", False, True)   ' Unicode を使用
  theDoc.Font = theDoc.EmbedFont("MS Pゴシック", "Japanese", False, True) ' Ascii を使用

AddFont メソッドを使用する場合
  theDoc.Font = theDoc.AddFont("MS Pゴシック", "Unicode", False, True)     ' Unicode を使用
  theDoc.Font = theDoc.AddFont("MS Pゴシック", "Japanese", False, True)    ' Ascii を使用

詳しくは各メソッドを参照してください。

Adding

ドキュメントの現在のページにテキストを加えます。描画するテキストが無くなるまで、ページと HTML 領域を加えてループを繰り返します。

[C#]
theDoc.FrameRect();
theID = theDoc.AddHtml(theText);
while (theDoc.Chainable(theID)) {
  theDoc.Page = theDoc.AddPage();
  theDoc.FrameRect();
  theID = theDoc.AddHtml("", theID);
}
[Visual Basic]
theDoc.FrameRect()
theID = theDoc.AddHtml(theText)
While theDoc.Chainable(theID)
  theDoc.Page = theDoc.AddPage()
  theDoc.FrameRect()
  theID = theDoc.AddHtml("", theID)
End While

Save

指定した場所にドキュメントを保存します。

[C#]
theDoc.Save(Server.MapPath("textflow.pdf"));
theDoc.Clear();

[Visual Basic]
theDoc.Save(Server.MapPath("textflow.pdf"))
theDoc.Clear()

Results

textflow.pdf [Page 1]

textflow.pdf [Page 2]

textflow.pdf [Page 3]


Multistyle Example

マルチスタイルテキスト

この例は、マルチスタイルテキストを作成する方法を示します。

Setup

単語を太字で描画するため、太字タグで囲みます。

[C#]
string theText = "<b>Gallia</b> est omnis divisa in partes tres, quarum unam incolunt <b>Belgae</b>, aliam <b>Aquitani</b>, tertiam qui ipsorum lingua <b>Celtae</b>, nostra <b>Galli</b> appellantur.";

[Visual Basic]
Dim theText As String = "<b>Gallia</b> est omnis divisa in partes tres, quarum unam incolunt <b>Belgae</b>, aliam <b>Aquitani</b>, tertiam qui ipsorum lingua <b>Celtae</b>, nostra <b>Galli</b> appellantur."

Doc Obj

次に、ABCpdf の Doc オブジェクトを作成し、基本的な項目を設定します。

AddHtml に直接 HTML 形式のテキストを渡すことができますが、フォント ID を指定すればフォントが PDF に加えられることにより、多くの管理を行うことができます。

[C#]
Doc theDoc = new Doc();
theDoc.FontSize = 72;
theDoc.Rect.Inset(10, 10);
theDoc.FrameRect();
int theFont1 = theDoc.EmbedFont("Verdana", LanguageType.Latin, false, true);
int theFont2 = theDoc.EmbedFont("Verdana Bold", LanguageType.Latin, false, true);

[Visual Basic]
Dim theDoc As Doc = New Doc()
theDoc.FontSize = 72
theDoc.Rect.Inset(10, 10)
theDoc.FrameRect()
Dim theFont1 As Integer = theDoc.EmbedFont("Verdana", LanguageType.Latin, False, True)
Dim theFont2 As Integer = theDoc.EmbedFont("Verdana Bold", LanguageType.Latin, False, True)

Adding

選択したフォントを直接参照するフォントタグに、太字タグを置き換えます。そして、現在の四角形に HTML 形式のテキストを追加します。

[C#]
theText = "<font pid=" + theFont1.ToString() + ">" + theText + "</font>";
theText = theText.Replace("<b>", "<font pid=" + theFont2.ToString() + ">");
theText = theText.Replace("</b>", "</font>");
theDoc.AddHtml(theText);

[Visual Basic]
theText = "<font pid=" + theFont1.ToString() + ">" + theText + "</font>"
theText = theText.Replace("<b>", "<font pid=" + theFont2.ToString() + ">")
theText = theText.Replace("</b>", "</font>")
theDoc.AddHtml(theText)

Save

最後に、指定した場所にドキュメントを保存します。

[C#]
theDoc.Save(Server.MapPath("styles.pdf"));
theDoc.Clear();

[Visual Basic]
theDoc.Save(Server.MapPath("styles.pdf"))
theDoc.Clear()

Results

styles.pdf


Image Example

イメージの描画

この例は、イメージを描画する簡単な PDF の作成方法を示します。

Image

最初に、ABCpdfImage オブジェクトを作成し、イメージファイルの関連付けを行います。

[C#]
XImage theImg = new XImage();
theImg.SetFile(Server.MapPath("../mypics/pic.jpg"));

[Visual Basic]
Dim theImg As XImage = New XImage()
theImg.SetFile(Server.MapPath("../mypics/pic.jpg"))

Doc

次に、ABCpdf イメージのドキュメントを作成します。

イメージを追加する時は現在の Rect の大きさにスケーリングされるので、Rect の大きさを正しく設定することが重要になります。ここでは、ピクセルとポイントが同じ値とします。印刷するイメージの解像度は 72 dpi となります。

[C#]
Doc theDoc = new Doc();
theDoc.Rect.Left = 100;
theDoc.Rect.Bottom = 100;
theDoc.Rect.Width = theImg.Width;
theDoc.Rect.Height = theImg.Height;
theDoc.AddImageObject(theImg, false);
theDoc.Save(Server.MapPath("image.pdf"));
theDoc.Clear();

[Visual Basic]
Dim theDoc As Doc = New Doc()
theDoc.Rect.Left = 100
theDoc.Rect.Bottom = 100
theDoc.Rect.Width = theImg.Width
theDoc.Rect.Height = theImg.Height
theDoc.AddImageObject(theImg, false)
theDoc.Save(Server.MapPath("image.pdf"))
theDoc.Clear()

Results

image.pdf


Deletion Example

ページの削除

この例は、PDF ドキュメントからページを削除する方法を示します。

Setup

最初に、ABCpdf ドキュメントのオブジェクト作成し、ドキュメントを読み込みます。削除するページの番号を保存します。(この場合、1ページを除いてすべてを削除します。)

[C#]
Doc theDoc = new Doc();
theDoc.Read(Server.MapPath("../mypics/sample.pdf"));
int theCount = theDoc.PageCount - 1;

[Visual Basic]
Dim theDoc As Doc = New Doc()
theDoc.Read(Server.MapPath("../mypics/sample.pdf"))
Dim theCount As Integer = theDoc.PageCount - 1

Delete

すべてのページをループし、この中で毎回 2番目のページを削除します。

[C#]
for (int i = 0; i < theCount; i++) {
  theDoc.PageNumber = 2;
  theDoc.Delete(theDoc.Page);
}
[Visual Basic]
For i As Integer = 1 to theCount
  theDoc.PageNumber = 2
  theDoc.Delete(theDoc.Page)
Next

Save

PDF ドキュメントにテキストを追加することにより、削除したページ数を知ることができます。最後に PDF を保存します。

[C#]
theDoc.FontSize = 500;
theDoc.Color.String = "255 0 0";
theDoc.HPos = 0.5;
theDoc.VPos = 0.3;
theDoc.AddText(theCount.ToString());
theDoc.Save(Server.MapPath("deletion.pdf"));
theDoc.Clear();

[Visual Basic]
theDoc.FontSize = 500
theDoc.Color.String = "255 0 0"
theDoc.HPos = 0.5
theDoc.VPos = 0.3
theDoc.AddText(theCount.ToString())
theDoc.Save(Server.MapPath("deletion.pdf"))
theDoc.Clear()

Results

deletion.pdf


Headers and Footers Example

ヘッダーとフッター

この例は、ヘッダーとフッターの追加方法を示します。

Setup

最初に、ABCpdf の Doc オブジェクトを作成し、追加する内容を設定します。

[C#]
Doc theDoc = new Doc();
int theID, theCount;
string theText = "Gallia est omnis divisa in partes tres, quarum unam incolunt Belgae, aliam Aquitani, tertiam qui ipsorum lingua Celtae, nostra Galli appellantur. Hi omnes..."; // truncated for clarity

[Visual Basic]
Dim theDoc As Doc = New Doc()
Dim theID, theCount As Integer
Dim theText As String = "Gallia est omnis divisa in partes tres, quarum unam incolunt Belgae, aliam Aquitani, tertiam qui ipsorum lingua Celtae, nostra Galli appellantur. Hi omnes..." ' truncated for clarity

Content

テキスト スタイルを設定します。

テキストを入れる領域 （Rect） 、テキストの色（赤）、フォントサイズを設定します。

複数領域にまたがってテキストを設定 と同じようにテキストを追加します。また、テキストの位置がわかるように、テキスト領域を枠で囲みます。

[C#]
theDoc.Rect.String = "100 200 500 600";
theDoc.Color.String = "255 0 0";
theDoc.FontSize = 24;
theID = theDoc.AddHtml(theText);
theDoc.FrameRect();
while (theDoc.Chainable(theID)) {
  theDoc.Page = theDoc.AddPage();
  theID = theDoc.AddHtml("", theID);
  theDoc.FrameRect();
}
theCount = theDoc.PageCount;
[Visual Basic]
theDoc.Rect.String = "100 200 500 600"
theDoc.Color.String = "255 0 0"
theDoc.FontSize = 24
theID = theDoc.AddHtml(theText)
theDoc.FrameRect()
While theDoc.Chainable(theID)
  theDoc.Page = theDoc.AddPage()
  theID = theDoc.AddHtml("", theID)
  theDoc.FrameRect()
End While
theCount = theDoc.PageCount

Header

ヘッダー スタイルを設定します。

ヘッダーを追加する領域 （Rect）、色（緑）、フォントサイズを設定します。HPos と VPos のパラメータを使用して、ヘッダーの真ん中にテキストを描画します。

次に、ドキュメントのページに繰り返しヘッダーを追加します。ヘッダー領域がわかるように、ヘッダーを枠で囲みます。

[C#]
theDoc.Rect.String = "100 650 500 750";
theDoc.HPos = 0.5;
theDoc.VPos = 0.5;
theDoc.Color.String = "0 255 0";
theDoc.FontSize = 36;
for (int i = 1; i <= theCount; i++) {
  theDoc.PageNumber = i;
  theDoc.AddText("De Bello Gallico");
  theDoc.FrameRect();
}

[Visual Basic]
theDoc.Rect.String = "100 650 500 750"
theDoc.HPos = 0.5
theDoc.VPos = 0.5
theDoc.Color.String = "0 255 0"
theDoc.FontSize = 36
For i As Integer = 1 To theCount
  theDoc.PageNumber = i
  theDoc.AddText("De Bello Gallico")
  theDoc.FrameRect()
Next

Footer

フッター スタイルを設定します。

フッターを追加する領域 （Rect）、色（青）、フォントサイズを設定します。HPos と VPos パラメータを使用して、フッター テキストを縦方向は中央に、横方向は右寄せで描画します。

次に、ドキュメントのページに繰り返しフッターを追加します。フッターの領域がわかるように、フッターを枠で囲みます。

[C#]
theDoc.Rect.String = "100 50 500 150";
theDoc.HPos = 1.0;
theDoc.VPos = 0.5;
theDoc.Color.String = "0 0 255";
theDoc.FontSize = 36;
for (int i = 1; i <= theCount; i++) {
  theDoc.PageNumber = i;
  theDoc.AddText("Page " + i.ToString() + " of " + theCount.ToString());
  theDoc.FrameRect();
}

[Visual Basic]
theDoc.Rect.String = "100 50 500 150"
theDoc.HPos = 1.0
theDoc.VPos = 0.5
theDoc.Color.String = "0 0 255"
theDoc.FontSize = 36
For i As Integer = 1 To theCount
  theDoc.PageNumber = i
  theDoc.AddText("Page " + i.ToString() + " of " + theCount.ToString())
  theDoc.FrameRect()
Next

Save

最後に、PDFを保存します。

[C#]
theDoc.Save(Server.MapPath("headerfooter.pdf"));
theDoc.Clear();

[Visual Basic]
theDoc.Save(Server.MapPath("headerfooter.pdf"))
theDoc.Clear()

Results
headerfooter.pdf [Page 1] | headerfooter.pdf [Page 2]
headerfooter.pdf [Page 3] | headerfooter.pdf [Page 4]


Landscape Example

横向きのドキュメント

この例は、90度回転した横向きの PDF ドキュメントを作成する方法を示します。

Setup

最初に、PDF ドキュメントを作成します。ドキュメントの左下を中心にしてドキュメントを90度回転します。この時、描画領域(Rect)も同じように回転します。回転処理の後に、ページにテキストを追加します。

[C#]
Doc theDoc = new Doc();
// apply a rotation transform
double w = theDoc.MediaBox.Width;
double h = theDoc.MediaBox.Height;
double l = theDoc.MediaBox.Left;
double b = theDoc.MediaBox.Bottom;
theDoc.Transform.Rotate(90, l, b);
theDoc.Transform.Translate(w, 0);

// rotate our rectangle
theDoc.Rect.Width = h;
theDoc.Rect.Height = w;

// add some text
theDoc.Rect.Inset(50, 50);
theDoc.FontSize = 96;
theDoc.AddText("Landscape Orientation");

[Visual Basic]
Dim theDoc As Doc = New Doc()
' apply a rotation transform
Dim w As Double = theDoc.MediaBox.Width
Dim h As Double = theDoc.MediaBox.Height
Dim l As Double = theDoc.MediaBox.Left
Dim b As Double = theDoc.MediaBox.Bottom
theDoc.Transform.Rotate(90, l, b)
theDoc.Transform.Translate(w, 0)

' rotate our rectangle
theDoc.Rect.Width = h
theDoc.Rect.Height = w

' add some text
theDoc.Rect.Inset(50, 50)
theDoc.FontSize = 96
theDoc.AddText("Landscape Orientation")

Rotate

回転したテキストを描画することはページを回転したことにはなりません。ドキュメントのデフォルトの方向を変えるには、ルートのページオブジェクトを回転する必要があります。そうすると、ドキュメントのすべてのページの方向は正しくなります。

[C#]
// adjust the default rotation and save
int theID = theDoc.GetInfoInt(theDoc.Root, "Pages");
theDoc.SetInfo(theID, "/Rotate", "90");
theDoc.Save(Server.MapPath("landscape.pdf"));
theDoc.Clear();

[Visual Basic]
' adjust the default rotation and save
Dim theID As Integer = theDoc.GetInfoInt(theDoc.Root,"Pages")
theDoc.SetInfo(theID, "Rotate", "90")
theDoc.Save(Server.MapPath("landscape.pdf"))
theDoc.Clear()

Results

landscape.pdf


Small Table Example

小さな表の作成

この例は、1ページに収まる表の描画方法を示します。ABCpdf は表を描画する機能はサポートしていません。この例は、表の要素の位置を決めるため、Table Class を使用しています。

Setup

ドキュメントのオブジェクトを作成し、データを読み込みます。この例では、データがタブで区切られたフォーマットになっています。

[C#]
string theText = ReadDataFromFile(theRez + "text6.txt");
Doc theDoc = new Doc();
// set up document
theDoc.FontSize = 16;
theDoc.Rect.Inset(20, 20);
[Visual Basic]
Dim theText As String = ReadDataFromFile(theRez + "text6.txt")
Dim theDoc As Doc = New Doc()
' set up document
theDoc.FontSize = 16
theDoc.Rect.Inset(20, 20)

Rotate

使用可能な四角形(現在のドキュメントの四角形を取得)とデータの列数を指定するために、値を渡す表の新しいオブジェクトを作成します。

列の幅は表の四角形の幅に合うように相対的に決まります。ここでは、5列指定します。

列のほとんどは右揃えされるので、デフォルトの水平揃えを1に設定します。

[C#]
PDFTable theTable = new PDFTable(theDoc, 5);
theTable.CellPadding = 5;
theTable.HorizontalAlignment = 1;

[Visual Basic]
Dim theTable As PDFTable = New PDFTable(theDoc, 5)
theTable.CellPadding = 5
theTable.HorizontalAlignment = 1;

Add

繰り返しながら、表に列と行を追加していきます。最初の列ではすべての行を右端に設定し、他の行では左端に設定します。最初と最後の行に枠を描画し、一行おきに灰色を付けます。そして最後にドキュメントを保存します。

[C#]
theText = theText.Trim();
theText = theText.Replace("\r\n", "\r");
string[] theRows = theText.Split(new char[] {'\r'});

for (int i = 0; i < theRows.Length; i++) {
  theTable.NextRow();
  string[] theCols = theRows[i].Split(new char[] {'\t'});
  theCols[0] = "<stylerun hpos=0>" + theCols[0] + "</stylerun>";
  theTable.AddHtml(theCols);
  if ((i % 2) == 1)
    theTable.FillRow("220 220 220", i);
}
theTable.Frame();

theDoc.Flatten();
theDoc.Save(Server.MapPath("table1.pdf"));
theDoc.Clear();
[Visual Basic]
theText = theText.Trim()
theText = theText.Replace(vbCrLf, vbCr)
Dim theRows() As String
theRows = theText.Split(New Char() {vbCr})

For i As Integer = 0 To theRows.Length - 1
  theTable.NextRow()
  Dim theCols As String() = theRows(i).Split(New Char() {vbTab})
  theCols(0) = "<stylerun hpos=0>" + theCols(0) + "</stylerun>"
  theTable.AddHtml(theCols)
  If (i Mod 2) = 1 Then
    theTable.FillRow("220 220 220", i)
  End If
Next
theTable.Frame()

theDoc.Flatten()
theDoc.Save(Server.MapPath("table1.pdf"))
theDoc.Clear()

Results

以下のデータを使用すれば、

Planet Distance From Sun (miles) Diameter (miles) Year Length (days) Day Length (days)
Mercury 36,000,000 3,030 88 58.00
Venus 67,000,000 7,520 225 225.00
Earth 93,000,000 7,925 365 1.00
Mars 142,000,000 4,210 687 1.00
Jupiter 484,000,000 88,730 4,344 0.40
Saturn 888,000,000 74,975 10,768 0.40
Uranus 1,800,000,000 31,760 30,660 0.70
Neptune 2,800,000,000 30,600 60,150 0.65
Pluto 3,600,000,000 1,410 90,520 0.25

次の表ができます。

table1.pdf


大きな表の作成

この例は、複数のページにまたがる表の描画方法を示します。ABCpdf は表を描画する機能はサポートしていません。この例は、 表の要素の位置を決めるため、Table Class を使用しています。

Setup

ドキュメントのオブジェクトを作成し、データを読み込みます。この例では、データがタブで区切られたフォーマットになっています。

[C#]
string theText = ReadDataFromFile(theRez + "text7.txt");
Doc theDoc = new Doc();
// set up document
theDoc.FontSize = 12;
theDoc.Rect.Inset(20, 20);
[Visual Basic]
Dim theText As String = ReadDataFromFile(theRez + "text7.txt")
Dim theDoc As Doc = New Doc()
' set up document
theDoc.FontSize = 12
theDoc.Rect.Inset(20, 20)

Rotate

新しいテーブルのオブジェクトを作成し、ドキュメントにフォーカスを設定します。四角形の大きさや列の数がフォーカスによって表に通知されます。

列の幅は表の四角形の幅に合うように相対的に決まります。この例は、6つの列を設定します。1番目と4番目の列の幅は設定していないのでデフォルトで、相対的な幅が1となります。そして、行または列の間に間隔をつけるために、セルにスペースを設定します。

[C#]
PDFTable theTable = new PDFTable(theDoc, 6);
// some columns extra width
theTable.SetColumnWidths(new double [] {2, 1, 3 , 2, 1, 4});
theTable.CellPadding = 5;
theTable.RepeatHeader = true;

[Visual Basic]
Dim theTable As PDFTable = New PDFTable(theDoc, 6)
' some columns extra width
theTable.SetColumnWidtha(New Double() {2, 1, 3 , 2, 1, 4})
theTable.CellPadding = 5
theTable.RepeatHeader = True

Add

繰り返しながら、表に列と行を追加していきます。
行を追加するたびに、ページの最後に達したか確認します。そして、ページの最後に達したら、最後に追加した行が全部追加されているか確認します。もし、最後の行が正しく追加されていなかったら、削除して再び行を追加する準備をします。新しいページを追加して、表のヘッダーを再び描画する準備をし、行の枠と色のパラメータをリセットします。

現在の列にすべての内容をセル単位で挿入します。行に内容を追加した後に、枠をと背景色を描画します。最後に、ドキュメントを保存します。

[C#]
theText = theText.Replace("\r\n", "\r");
string[] theRows = theText.Split(new char[] {'\r'});
int thePage = 1;
bool theShade = false;
for (int i = 0; i < theRows.Length; i++) {
  theTable.NextRow();
  string[] theCols = theRows[i].Split(new char[] {'\t'});
  theTable.AddHtml(theCols);
  if (theDoc.PageNumber > thePage) {
    thePage = theDoc.PageNumber;
    theShade = true;
  }
  if (theShade)
    theTable.FillRow("200 200 200", theTable.Row);
  theShade = ! theShade;
}
theDoc.Flatten();
theDoc.Save(Server.MapPath("table2.pdf"));
theDoc.Clear();
[Visual Basic]
theText = theText.Replace(vbCrLf, vbCr)
Dim theRows() As String = theText.Split(New Char() {vbCr})
Dim thePage As Integer = 1
Dim theShade As Boolean = False
For i As Integer = 0 To theRows.Length - 1
  theTable.NextRow()
  Dim theCols As String() = theRows(i).Split(New Char() {vbTab})
  theTable.AddHtml(theCols)
  If theDoc.PageNumber > thePage Then
    thePage = theDoc.PageNumber
    theShade = true
  End If
  If theShade Then
    theTable.FillRow("200 200 200", theTable.Row)
  End If
  theShade = Not theShade
Next
theDoc.Flatten()
theDoc.Save(Server.MapPath("table2.pdf"))
theDoc.Clear()

Results

多くのデータを使用すると以下のようになります。

table2.pdf - [Page 1]

table2.pdf - [Page 2] | table2.pdf - [Page 3]
table2.pdf - [Page 4] | table2.pdf - [Page 5]


Unicode Example

Unicode の使用

ここでは日本語の扱い方を説明します。また、すべてのプラットフォームでドキュメントを正しく処理するためにフォントの埋め込みとサブセット化を行います。

Setup

最初に ABCpdf のドキュメントオブジェクトを作成し、フォントのサイズを設定します。

[C#]
Doc theDoc = new Doc();
theDoc.FontSize = 32;

[Visual Basic]
Dim theDoc As Doc = New Doc()
theDoc.FontSize = 32

Read

Unicode のテキストファイルから日本語のテキストを読み込みます。

[C#]
string thePath = Server.MapPath("../Rez/Japanese2.txt");
// Utilities.ReadString is an external function not defined here
string theText = Utilities.ReadString(thePath);

[Visual Basic]
Dim thePath As String = Server.MapPath("../Rez/Japanese2.txt")
' Utilities.ReadString is an external function not defined here
Dim theText As String = Utilities.ReadString(thePath)

Add

すべてのプラットフォームでドキュメントの処理を確実にするために、Unicode のフォントを埋め込みます。また、テキストを左から右方向への書き込み設定とフォントのサブセット化を行います。

なお、フォントを埋め込む場合(PDF の一部としてフォントが埋め込まれる)、このフォントを第三者に再配布してもよいか確認する必要があります。

[C#]
theDoc.Page = theDoc.AddPage();
theDoc.Font = theDoc.EmbedFont("MS PGothic", LanguageType.Unicode, false, true);
theDoc.AddText("Japanese" + theText);

[Visual Basic]
theDoc.Page = theDoc.AddPage()
theDoc.Font = theDoc.EmbedFont("MS PGothic", LanguageType.Unicode, False, True)
theDoc.AddText("Japanese" + theText)

Add

ページを垂直方向に設定するモードに設定します。

[C#]
theDoc.Page = theDoc.AddPage();
theDoc.Font = theDoc.EmbedFont("MS PGothic", LanguageType.Unicode, true, true);
theDoc.AddText("Japanese" + theText);

[Visual Basic]
theDoc.Page = theDoc.AddPage()
theDoc.Font = theDoc.EmbedFont("MS PGothic", LanguageType.Unicode, True, True)
theDoc.AddText("Japanese" + theText)

Save

最後に指定した場所に保存します。

[C#]
theDoc.Save(Server.MapPath("unicode.pdf"));
[Visual Basic]
theDoc.Save(Server.MapPath("unicode.pdf"))

Results

出力結果です。

unicode.pdf - [Page 1]
unicode.pdf - [Page 2]


Paged HTML Example

HTML をマルチページ PDF に変換する

このサンプルは、1ページの HTML をマルチページ PDF ドキュメントに変換する方法を示しています。

Setup

まず、Doc オブジェクトを作成し、HTML がページの中央に表示されるように縁の部分を設定します。

[C#]
Doc theDoc = new Doc();
theDoc.Rect.Inset(72, 144);
[Visual Basic]
Dim theDoc As Doc = New Doc()
theDoc.Rect.Inset(72, 144)

Page

まず HTML の最初のページを追加します。連続してページを追加するために、 戻り値の ID を保存します。

[C#]
theDoc.Page = theDoc.AddPage();
int theID;
theID = theDoc.AddImageUrl("http://www.yahoo.com/");

[Visual Basic]
theDoc.Page = theDoc.AddPage()
Dim theID As Integer
theID = theDoc.AddImageUrl("http://www.yahoo.com/")

Chain

連続してページを設定します。ページの終わりに達したら終了します。

[C#]
while (true) {
  theDoc.FrameRect(); // 黒い枠を追加
  if (!theDoc.Chainable(theID))
    break;
  theDoc.Page = theDoc.AddPage();
  theID = theDoc.AddImageToChain(theID);
}

[Visual Basic]
While True
  theDoc.FrameRect() ' 黒い枠を追加
  If Not theDoc.Chainable(theID) Then
    Exit While
  End If
  theDoc.Page = theDoc.AddPage()
  theID = theDoc.AddImageToChain(theID)
End While

Flatten

ページを追加し終ったら、全ページを平坦化できます。なお、ページを平坦化すると、以前の ID が無効になり関連性が壊れるのでページを追加し終えるまではこれを行うことはできません。

[C#]
for (int i = 1; i <= theDoc.PageCount; i++) {
  theDoc.PageNumber = i;
  theDoc.Flatten();
}
[Visual Basic]
For i As Integer = 1 To theDoc.PageCount
  theDoc.PageNumber = i
  theDoc.Flatten()
Next

Save

最後に保存します。

[C#]
theDoc.Save(Server.MapPath("pagedhtml.pdf"));
theDoc.Clear();

[Visual Basic]
theDoc.Save(Server.MapPath("pagedhtml.pdf"))
theDoc.Clear()

Results

実行結果です。

pagedhtml.pdf [Page 1]
pagedhtml.pdf [Page 2]


Doc Properties Example

ドキュメントのプロパティの設定

ここではドキュメントのプロパティの設定方法を示します。またドキュメントのプロパティは Acrobat Reader で確認することができます。

なお、下記のサンプルコードついては、Adobe PDF Specification を参照すると理解が深まります。

Section 9.2.1 - ドキュメントのプロパティの保存

Section 3.8.2 - 日付の指定方法

の説明を参照してください。

Src

最初に ABCpdf の Doc オブジェクトを作成し、簡単な項目を設定します。

[C#]
Doc theDoc = new Doc();
theDoc.Page = theDoc.AddPage();
theDoc.AddText("My first document...");
[Visual Basic]
Dim theDoc As Doc = New Doc()
theDoc.Page = theDoc.AddPage()
theDoc.AddText("My first document...")

Dest

ここで設定するプロパティは Trailer 部の "/Info" エントリから参照されます。最初に新しく PDF 辞書を作成し、このエントリからプロパティを参照します。

[C#]
int theID = theDoc.AddObject("<< >>");
theDoc.SetInfo(-1, "/Info:Ref", theID.ToString());
[Visual Basic]
Dim theID As Integer = theDoc.AddObject("<< >>")
theDoc.SetInfo(-1, "/Info:Ref", theID.ToString())

Add

ここでは、追加したオブジェクトにドキュメントの情報を設定します。

[C#]
theDoc.SetInfo(theID, "/Title:Text", "ABCpdf");
theDoc.SetInfo(theID, "/Author:Text", "WebSupergoo");
theDoc.SetInfo(theID, "/Subject:Text", "ABCpdf Documentation");
theDoc.SetInfo(theID, "/Keywords:Text", "ABCpdf,PDF,Docs");
theDoc.SetInfo(theID, "/Creator:Text", "WebSupergoo");
theDoc.SetInfo(theID, "/Producer:Text", "WebSupergoo");
DateTime theDate = DateTime.Now;
theDoc.SetInfo(theID, "/CreationDate:Text", theDate);
theDoc.SetInfo(theID, "/ModDate:Text", theDate);
theDoc.SetInfo(theID, "/Trapped:Name", "False");

[Visual Basic]
theDoc.SetInfo(theID, "/Title:Text", "ABCpdf")
theDoc.SetInfo(theID, "/Author:Text", "WebSupergoo")
theDoc.SetInfo(theID, "/Subject:Text", "ABCpdf Documentation")
theDoc.SetInfo(theID, "/Keywords:Text", "ABCpdf,PDF,Docs")
theDoc.SetInfo(theID, "/Creator:Text", "WebSupergoo")
theDoc.SetInfo(theID, "/Producer:Text", "WebSupergoo")
Dim theDate As DateTime = DateTime.Now
theDoc.SetInfo(theID, "/CreationDate:Text", theDate)
theDoc.SetInfo(theID, "/ModDate:Text", theDate)
theDoc.SetInfo(theID, "/Trapped:Name", "False")

Save

最後に保存します。

[C#]
theDoc.Save(Server.MapPath("docprops.pdf"));
// finished
[Visual Basic]
theDoc.Save(Server.MapPath("docprops.pdf"))
' finished


eForm Fields Example

eForm のフィールド

ここでは、eForm のフィールドの値を設定する例を示します。下記のサンプルは、フォームの各フィールドをそのフィールド名に設定します。

Src

最初に ABCpdf の Doc オブジェクトを作成し、PDF ファイルを読み込みます。

[C#]
Doc theDoc = new Doc();
theDoc.Read(Server.MapPath("../mypics/form.pdf"));
[Visual Basic]
Dim theDoc As Doc = New Doc()
theDoc.Read(Server.MapPath("../mypics/form.pdf"))

Add

各フィールドに対して、フィールドの値がフィールド名と一致するように設定します。

[C#]
string[] theNames = theDoc.Form.GetFieldNames();
foreach (string theName in theNames) {
  Field theField = theDoc.Form[theName];
  theField.Value = theField.Name;
}

[Visual Basic]
Dim theNames As String() = theDoc.Form.GetFieldNames()
Dim theName As String
For Each theName In theNames
  Dim theField As Field = theDoc.Form(theName)
  theField.Value = theField.Name
Next

Save

最後に保存します。

[C#]
theDoc.Save(Server.MapPath("eformfields.pdf"));

[Visual Basic]
theDoc.Save(Server.MapPath("eformfields.pdf"))

Results

処理前のドキュメントです。

form.pdf

処理後のドキュメントです。

eformfields.pdf


eForm Placeholder Example

eForm のプレースホルダ

ここでは、eForm のフィールドをテキスト入力のプレースホルダとして使用する方法を示します。下記のサンプルは、各フィールドをそのフィールド名で設定します。

Src

最初に ABCpdf の Doc オブジェクトを作成し、PDF ファイルを読み込みます。

[C#]
Doc theDoc = new Doc();
theDoc.Read(Server.MapPath("../mypics/form.pdf"));
theDoc.Font = theDoc.AddFont("Helvetica-Bold");
theDoc.FontSize = 16;
theDoc.Rect.Pin = (int)XRect.Corner.TopLeft;
[Visual Basic]
Dim theDoc As Doc = New Doc()
theDoc.Read(Server.MapPath("../mypics/form.pdf"))
theDoc.Font = theDoc.AddFont("Helvetica-Bold")
theDoc.FontSize = 16
theDoc.Rect.Pin = XRect.Corner.TopLeft

Add

各フィールドにフォーカスを設定します。そして矩形をライトグレーに、フィールド名を濃い赤色で描画します。

[C#]
string[] theNames = theDoc.Form.GetFieldNames();
foreach (string theName in theNames) {
  Field theField = theDoc.Form[theName];
  theField.Focus();
  theDoc.Color.String = "240 240 255";
  theDoc.FillRect();
  theDoc.Rect.Height = 16;
  theDoc.Color.String = "220 0 0";
  theDoc.AddText(theField.Name);
  theDoc.Delete(theField.ID);
}

[Visual Basic]
Dim theNames As String() = theDoc.Form.GetFieldNames()
Dim theName As String
For Each theName In theNames
  Dim theField As Field = theDoc.Form(theName)
  theField.Focus()
  theDoc.Color.String = "240 240 255"
  theDoc.FillRect()
  theDoc.Rect.Height = 16
  theDoc.Color.String = "220 0 0"
  theDoc.AddText(theField.Name)
  theDoc.Delete(theField.ID)
Next

Save

最後に保存します。

[C#]
theDoc.Save(Server.MapPath("eform.pdf"));

[Visual Basic]
theDoc.Save(Server.MapPath("eform.pdf"))

Results

処理前のドキュメントです。

form.pdf

処理後のドキュメントです。

eform.pdf


eForm のスタンプのサンプル

このサンプルは、値が消えないように表示するために eForm のフィールドをドキュメントにスタンプする方法を示しています。

Src

まず、ABCpdf の Doc オブジェクトを作成して、テンプレートフォームを読み込みます。

[C#]
Doc theDoc = new Doc();
theDoc.Read(Server.MapPath("../mypics/form.pdf"));
theDoc.Font = theDoc.AddFont("Helvetica-Bold");
[Visual Basic]
Dim theDoc As Doc = New Doc()
theDoc.Read(Server.MapPath("../mypics/form.pdf"))
theDoc.Font = theDoc.AddFont("Helvetica-Bold")

Add

フィールドに値を設定し、スタンプメソッドを実行します。

[C#]
theDoc.Form.Fields["Day"].Value = "23";
theDoc.Form.Fields["Month"].Value = "February";
theDoc.Form.Fields["Year"].Value = "2005";
theDoc.Form.Fields["State"].Value = "Arizona";
theDoc.Form.Stamp();
[Visual Basic]
theDoc.Form.Fields("Day").Value = "23"
theDoc.Form.Fields("Month").Value = "February"
theDoc.Form.Fields("Year").Value = "2005"
theDoc.Form.Fields("State").Value = "Arizona"
theDoc.Form.Stamp()

Save

最後に保存します。

[C#]
theDoc.Save(Server.MapPath("eform.pdf"));

[Visual Basic]
theDoc.Save(Server.MapPath("eform.pdf"))

Results

処理前のドキュメントです。

form.pdf

処理後のドキュメントです。

eformstamp.pdf


eForm の FDF

ここでは、eForm の FDF ファイルから Unicode の注釈を取り出す例を示します。

Src

最初に ABCpdf の Doc オブジェクトを作成し、FDF ファイル読み込みます。

[C#]
Doc theFDF = new Doc();
theFDF.Read(Server.MapPath("../Rez/form.fdf"));
[Visual Basic]
Dim theFDF As Doc = New Doc()
theFDF.Read(Server.MapPath("../Rez/form.fdf"))

Dest

PDF にある項目の数を検出し、繰り返し処理の準備をします。

[C#]
string theValues = "";
int theLastID = Convert.ToInt32(theFDF.GetInfo(0, "Count"));
[Visual Basic]
Dim theValues As String = ""
Dim theLastID As Integer = Convert.ToInt32(theFDF.GetInfo(0, "Count"))

Add

各項目について処理を行います。まず項目が注釈であるか確認し、次にその注釈の型がテキストであるか確認します。もしその場合、その内容を取り出しリストにその値を追加します。

[C#]
// extract annotation values (for insertion into PDF)
for (int i = 0; i <= theLastID; i++) {
  string theType = theFDF.GetInfo(i, "Type");
  if (theType == "anno") {
    if (theFDF.GetInfo(i, "SubType") == "Text") {
      string theCont;
      theCont = theFDF.GetInfo(i, "Contents");
      theValues = theValues + theCont + "\r\n\r\n";
    }
  }
}
// extract field values (for demonstration purposes)
for (int i = 0; i <= theLastID; i++) {
  int theN = theFDF.GetInfoInt(i, "/FDF*/Fields*:Count");
  for (int j = 0; j < theN; j++) {
    string theName = theFDF.GetInfo(i, "/FDF*/Fields*[" + j + "]*/T:Text");
    string theValue = theFDF.GetInfo(i, "/FDF*/Fields*[" + j + "]*/V:Text");
    // here we would do something with the field value we've found
  }
}

[Visual Basic]
For i As Integer = 0 To theLastID
  Dim theType As String
  theType = theFDF.GetInfo(i, "Type")
  If theType = "anno" Then
    If theFDF.GetInfo(i, "SubType") = "Text" Then
      Dim theCont As String
      theCont = theFDF.GetInfo(i, "Contents")
      theValues = theValues + theCont + vbCrLf + vbCrLf
    End If
  End If
Next
' extract field values (for demonstration purposes)
For i = 0 To theLastID
  Dim theN As Integer
  theN = theFDF.GetInfoInt(i, "/FDF*/Fields*:Count")
  Dim j As Integer
  For j = 0 To [theN] - 1
    Dim theName As String = theFDF.GetInfo(i, "/FDF*/Fields*[" + j + "]*/T:Text")
    Dim theValue As String = theFDF.GetInfo(i, "/FDF*/Fields*[" + j + "]*/V:Text")
    ' here we would do something with the field value we've found
  Next j
Next i

Save

最後に、新しいドキュメントに Unicode のテキストを追加し、それを保存します。

[C#]
Doc theDoc = new Doc();
theDoc.Font = theDoc.EmbedFont("Arial", LanguageType.Unicode, false, true);
theDoc.FontSize = 96;
theDoc.Rect.Inset(10, 10);
theDoc.AddText(theValues);
theDoc.Save(Server.MapPath("fdf.pdf"));
[Visual Basic]
Dim theDoc As Doc = New Doc()
theDoc.Font = theDoc.EmbedFont("Arial", LanguageType.Unicode, False, True)
theDoc.FontSize = 96
theDoc.Rect.Inset(10, 10)
theDoc.AddText(theValues)
theDoc.Save(Server.MapPath("fdf.pdf"))

Results

これが処理結果です。

fdf.pdf


高度なグラフィックス処理

Intro
ほとんどの場合、グラフィックスの描画は FrameRect、FillRect、AddLine や AddArc などのメソッドを使用して行われます。

しかし PDF のコンテンツストリームに直接アクセスすることにより、高度なグラフィックスの描画を行うことができます。

Content
ページの中の項目はページのコンテンツストリームで定義されます。コンテンツストリームはページに配置されるグラフィックスオブジェクトの一連の記述から成ります。ABCpdf ではコンテンツストリームを作成したり修正したりして、高度なグラフィックスの描画を行うことができます。

コンテンツストリームを挿入するには、FrameRect、FillRect や AddLine のようなメソッドでレイヤを挿入し、デフォルトのコンテンツストリームを必要なコンテンツに置き換える必要があります。

ここではコンテンツストリームの基本事項について説明しますが、すべてについて説明できませんので、詳しくは PDF Reference を参照してください。

Paths
PDF では形状をパスオブジェクトと呼んでいます。パスオブジェクトは直線、四角形やベジェ曲線から成っている形状です。パスオブジェクトには形状が交差していたり、接続していない部分があったり、穴が開いているものもあります。パスオブジェクトが定義されると、塗りつぶしたり、色を付けたりクリッピングを行ったりできます。

パスオブジェクトは1つ以上のサブパスから成り、サブパスは1つ以上のセグメントから成ります。サブパスは開いたり閉じたりすることができます。サブパスを閉じるとパスの先頭と終端が接続します。

全パスは標準の座標空間にあります。以下は標準的なパスの命令です。

名称 | パラメータ | 命令 | 説明
Move | x y | m | 指定した座標値に移動（新しいサブパスの開始位置）。
Line | x y | l | 現在の座標値から指定した座標値に直線のサブパスを追加。
Rect | x y w h | re | 指定した(x,y)の座標値に(w,h)の大きさの四角形のサブパスを追加。
Bézier | x1 y1 x2 y2 x3 y3 | c | (x1, y1)と(x2, y2)の座標値を使用して、現在の位置から(x3, y3)の座標値までベジェ曲線のサブパスを追加。
Close |  | h | 現在のサブパスを閉じて開始点と終了点を結ぶ。
Stroke |  | S | 現在の色で、現在のパスに沿って線を描画。
Fill |  | f | 現在の色で、現在のパスを塗りつぶす。 このメソッドは "nonzero winding number rule" （非零巻数規則）を使用します。
Clip |  | W n | 新しいクリッピングパス（パスと現在のクリッピングパスが交差した領域）を作成。

State
グラフィックス状態は PDF の描画命令と一緒に作用するパラメータを定義します。たとえば、線を描画する時の現在の線の太さや、パスの塗りつぶしで使用される現在の非ストロークカラーを定義します。

なお、ここではストロークは直線、四角形および円弧などの縁や文字の描画などを意味し、非ストロークは塗りつぶしを意味します。

グラフィックス状態のコピーをスタックに保存したり、後でスタックから取得することができます。これは処理の実行や取り消しに非常に便利な機能です。

名称 | パラメータ | 命令 | 説明
Save State | q | スタックの一番上に現在のグラフィックス状態のコピーを保存します。
Restore State | Q | スタックの一番上から現在のグラフィックス状態を取り出しします。
SetLineWidth | v | w | 線（ストローク）を描画する時の線の太さを設定。
SetGrayStrokeColor w G 線（ストローク）を描画する時のグレーのレベル。

値の範囲は 0.0（黒） ～ 1.0（白）です。
SetGrayNonStrokeColor w g 線以外（非ストローク）を描画する時のグレーのレベル。

値の範囲は 0.0（黒） ～ 1.0（白）です。
SetRGBStrokeColor r g b RG 線（ストローク）を描画する時の RGB のレベル。

各コンポーネントの値の範囲は 0.0 ～ 1.0です。
SetRGBNonStrokeColor r g b rg 線以外（非ストローク）を描画する時のRGBのレベル。

各コンポーネントの値の範囲は 0.0 ～ 1.0です。
SetCMYKStrokeColor c m y k K 線（ストローク）を描画する時のCMYKのレベル。

各コンポーネントの値の範囲は 0.0 ～ 1.0です。
SetCMYKNonStrokeColor c m y k k 線以外（非ストローク）を描画する時のCMYKのレベル。

各コンポーネントの値の範囲は 0.0 ～ 1.0です。
Transform a b c d e f cm マトリックスを現在の変換マトリックスと結合。

一般的な変換処理は下記のとおりです。

  • 移動
    [1 0 0 1 tx ty] のマトリックスは座標系を tx （水平方向）と ty （垂直方向）に移動。
  • スケーリング
    [sx 0 0 sy 0 0] のマトリックスは原点を基準として座標系を sx （水平方向）と sy （垂直方向）でスケーリング。
  • 回転
    [cos(ra) sin(ra) -sin(ra) cos(ra) 0 0] のマトリックスは原点を中心として版時計方向に座標系をra度回転。
  • 傾斜
    [1 tan(ra) tan(ra) 1 0 0] のマトリックスは x 軸と ｙ 軸に ra 度傾斜を設定。
SetLineCap v J 線の終端のキャップの設定。値は下記のとおりです。

0. バット - パスの終端が四角形で、パスの終端を出ない。
1. ラウンド - パスの終端に丸みが付けられ、その分がパスの終端からはみ出す。
2. プロジェクトスクエア - パスの終端が四角形で、その線の半分だけパスの終端からはみ出す。
SetLineJoin v j 線の結合状態の設定。値は下記のとおりです。

0. マイター - 2つの線の結合部分に尖った部分が描画される。
（描画できるマイターの最大長は Miter Limit と呼ばれます。）
1. ラウンド - 2つの線の結合部分に丸みが付けられる。
2. ベベル - 2つの線の結合部分に平らな部分が付けられる。
SetMiterLimit v M 線の結合部分のマイターの最大長の設定。

この値は"線の結合部分の長さ/線の太さ"であらわされます。

たとえば、この値が1.5の場合、線の結合部分の長さが線の太さの1.5倍以下になります。
LineDash | a p | d | 線のダッシュパターンの設定。パラメータは a （ダッシュパターンの配列）と p （ダッシュパターンの開始位置）で与えます。

Stroke
現在のストロークカラーでパスを描画します。

星型の描画を行うサンプルです。

[C#]
PDFContent theContent = new PDFContent(theDoc);
theContent.SaveState();
theContent.SetLineWidth(30);
theContent.SetLineJoin(2);
theContent.Move(124, 158);
theContent.Line(300, 700);
theContent.Line(476, 158);
theContent.Line(15, 493);
theContent.Line(585, 493);
theContent.Close();
theContent.Stroke();
theContent.RestoreState();
theContent.AddToDoc();
[Visual Basic]
Dim theContent As PDFContent = New PDFContent(theDoc)
theContent.SaveState()
theContent.SetLineWidth(30)
theContent.SetLineJoin(2)
theContent.Move(124, 158)
theContent.Line(300, 700)
theContent.Line(476, 158)
theContent.Line(15, 493)
theContent.Line(585, 493)
theContent.Close()
theContent.Stroke()
theContent.RestoreState()
theContent.AddToDoc()

Fill
現在の非ストロークカラーでパスを塗りつぶします。

塗りつぶした星型の描画を行うサンプルです。

[C#]
PDFContent theContent = new PDFContent(theDoc);
theContent.SaveState();
theContent.SetLineWidth(30);
theContent.SetLineJoin(2);
theContent.Move(124, 158);
theContent.Line(300, 700);
theContent.Line(476, 158);
theContent.Line(15, 493);
theContent.Line(585, 493);
theContent.Close();
theContent.Fill();
theContent.RestoreState();
theContent.AddToDoc();
[Visual Basic]
Dim theContent As PDFContent = New PDFContent(theDoc)
theContent.SaveState()
theContent.SetLineWidth(30)
theContent.SetLineJoin(2)
theContent.Move(124, 158)
theContent.Line(300, 700)
theContent.Line(476, 158)
theContent.Line(15, 493)
theContent.Line(585, 493)
theContent.Close()
theContent.Fill()
theContent.RestoreState()
theContent.AddToDoc()

Bézier
曲線のセグメントはベジェ曲線で指定します。これにより曲線を描画したりパスを湾曲することができます。

現在のポイントとパラメータの3つのポイントで定義します。現在のポイントと最後のポイントはセグメントの端点を定義します。最初のポイントと2番目のポイントはコントロールポイントとして定義します。線は現在のポイントから最初のポイントと2番目のポイントの方向へ引っ張られて最後のポイントまで描画します。

[C#]
PDFContent theContent = new PDFContent(theDoc);
theContent.SaveState();
theContent.SetLineWidth(30);
theContent.Move(100, 50);
theContent.Bezier(200, 650, 400, 550, 500, 250);
theContent.Stroke();
theContent.RestoreState();

// annotate Bezier curve in red
theDoc.Color.String = "255 0 0";
theDoc.Width = 20;
theDoc.FontSize = 30;
theDoc.Pos.String = "100 50";
theDoc.AddText("p0 (current point)");
theDoc.Pos.String = "200 650";
theDoc.Pos.Y = theDoc.Pos.Y + theDoc.FontSize;
theDoc.AddText("p1 (x1, y1)");
theDoc.Pos.String = "400 550";
theDoc.Pos.Y = theDoc.Pos.Y + theDoc.FontSize;
theDoc.AddText("p2 (x2, y2)");
theDoc.Pos.String = "500 250";
theDoc.Pos.X = theDoc.Pos.X - theDoc.FontSize;
theDoc.AddText("p3 (x3, y3)");
theDoc.AddLine(100, 50, 200, 650);
theDoc.AddLine(400, 550, 500, 250);
theContent.AddToDoc();
[Visual Basic]
Dim theContent As PDFContent = New PDFContent(theDoc)
theContent.SaveState()
theContent.SetLineWidth(30)
theContent.Move(100, 50)
theContent.Bezier(200, 650, 400, 550, 500, 250)
theContent.Stroke()
theContent.RestoreState()

' annotate Bezier curve in red
theDoc.Color.String = "255 0 0"
theDoc.Width = 20
theDoc.FontSize = 30
theDoc.Pos.String = "100 50"
theDoc.AddText("p0 (current point)")
theDoc.Pos.String = "200 650"
theDoc.Pos.Y = theDoc.Pos.Y + theDoc.FontSize
theDoc.AddText("p1 (x1, y1)")
theDoc.Pos.String = "400 550"
theDoc.Pos.Y = theDoc.Pos.Y + theDoc.FontSize
theDoc.AddText("p2 (x2, y2)")
theDoc.Pos.String = "500 250"
theDoc.Pos.X = theDoc.Pos.X - theDoc.FontSize
theDoc.AddText("p3 (x3, y3)")
theDoc.AddLine(100, 50, 200, 650)
theDoc.AddLine(400, 550, 500, 250)
theContent.AddToDoc()

Clip
クリッピング領域の指定。

グラフィックス状態はページ上での描画領域を制限するクリッピングパスを保持しています。クリッピング領域の中のものは描画されこの領域外のものは描画されません。

デフォルトのクリッピングパスはページ全体です。クリッピングパスの命令を使用して新しくクリッピングパスを設定できます。

クリッピングパスを拡張することはできません。その代わり新しいクリッピングパスを適用する前にグラフィックス状態を保存し、処理が終了したらグラフィックス状態を取り出します。

クリッピングを設定して星型を描画する例です。

[C#]
PDFContent theContent = new PDFContent(theDoc);
theContent.SaveState();
theContent.SetLineWidth(30);
theContent.SetLineJoin(2);
theContent.Move(124, 158);
theContent.Line(300, 700);
theContent.Line(476, 158);
theContent.Line(15, 493);
theContent.Line(585, 493);
theContent.Clip();
theContent.Rect(100, 200, 400, 400);
theContent.Fill();
theContent.RestoreState();
theContent.AddToDoc();

[Visual Basic]
Dim theContent As PDFContent = New PDFContent(theDoc)
theContent.SaveState()
theContent.SetLineWidth(30)
theContent.SetLineJoin(2)
theContent.Move(124, 158)
theContent.Line(300, 700)
theContent.Line(476, 158)
theContent.Line(15, 493)
theContent.Line(585, 493)
theContent.Clip()
theContent.Rect(100, 200, 400, 400)
theContent.Fill()
theContent.RestoreState()
theContent.AddToDoc()

Caps
線の終端のキャップの設定

下記の例は、線の終端のキャップの様子をあらわします。

0. バット - パスの終端が四角形で、パスの終端を出ない。
1. ラウンド - パスの終端に丸みが付けられ、その分がパスの終端からはみ出す。
2. プロジェクトスクエア - パスの終端が四角形で、その線の半分だけパスの終端からはみ出す。

[C#]
PDFContent theContent = new PDFContent(theDoc);
theContent.SaveState();
theContent.SetLineWidth(100);
theContent.SetLineCap(0);
theContent.Move(100, 600);
theContent.Line(500, 600); // line
theContent.Stroke();

theContent.SetLineCap(1); // round cap
theContent.Move(100, 400);
theContent.Line(500, 400);
theContent.Stroke();

theContent.SetLineCap(2);
theContent.Move(100, 200);
theContent.Line(500, 200);
theContent.Stroke();

// add capped lines
theContent.AddToDoc();

// annotate capped lines
theDoc.FontSize = 48;
theDoc.Pos.String = "50 720";
theDoc.AddText("0 - Butt Cap");
theDoc.Pos.String = "50 520";
theDoc.AddText("1 - Round Cap");
theDoc.Pos.String = "50 320";
int id = theDoc.AddText("2 - Projecting Square Cap");
theDoc.Width = 20;

theDoc.Color.String = "255 255 255";
theDoc.AddLine(100, 200, 500, 200);
theDoc.Rect.String = "80 180 120 220";
theDoc.FillRect(20, 20);
theDoc.Rect.String = "480 180 520 220";
theDoc.FillRect(20, 20);
theDoc.AddLine(100, 400, 500, 400);
theDoc.Rect.String = "80 380 120 420";
theDoc.FillRect(20, 20);
theDoc.Rect.String = "480 380 520 420";
theDoc.FillRect(20, 20);
theDoc.AddLine(100, 600, 500, 600);
theDoc.Rect.String = "80 580 120 620";
theDoc.FillRect(20, 20);
theDoc.Rect.String = "480 580 520 620";
theDoc.FillRect(20, 20);
theDoc.Color.String = "0 0 0";
[Visual Basic]
Dim theContent As PDFContent = New PDFContent(theDoc)
theContent.SaveState()
theContent.SetLineWidth(100)
theContent.SetLineCap(0)
theContent.Move(100, 600)
theContent.Line(500, 600) ' line
theContent.Stroke()

theContent.SetLineCap(1) ' round cap
theContent.Move(100, 400)
theContent.Line(500, 400)
theContent.Stroke()

theContent.SetLineCap(2)
theContent.Move(100, 200)
theContent.Line(500, 200)
theContent.Stroke()

' add capped lines
theContent.AddToDoc()

' annotate capped lines
theDoc.FontSize = 48
theDoc.Pos.String = "50 720"
theDoc.AddText("0 - Butt Cap")
theDoc.Pos.String = "50 520"
theDoc.AddText("1 - Round Cap")
theDoc.Pos.String = "50 320"
int id = theDoc.AddText("2 - Projecting Square Cap")
theDoc.Width = 20

theDoc.Color.String = "255 255 255"
theDoc.AddLine(100, 200, 500, 200)
theDoc.Rect.String = "80 180 120 220"
theDoc.FillRect(20, 20)
theDoc.Rect.String = "480 180 520 220"
theDoc.FillRect(20, 20)
theDoc.AddLine(100, 400, 500, 400)
theDoc.Rect.String = "80 380 120 420"
theDoc.FillRect(20, 20)
theDoc.Rect.String = "480 380 520 420"
theDoc.FillRect(20, 20)
theDoc.AddLine(100, 600, 500, 600)
theDoc.Rect.String = "80 580 120 620"
theDoc.FillRect(20, 20)
theDoc.Rect.String = "480 580 520 620"
theDoc.FillRect(20, 20)
theDoc.Color.String = "0 0 0"

Joins
線の結合状態の設定。

下記の例は、線の結合状態の様子をあらわします。

マイター - 2つの線の結合部分が尖った状態になります。結合部分が非常に尖ってしまう場合、ベベルが使用されます。（描画できるマイターの最大長は Miter Limit と呼ばれます。）

ラウンド - 2つの線の結合部分に丸みが付いた状態になります。

ベベル - 2つの線の結合部分に平らな部分が付いた状態になります。

[C#]
PDFContent theContent = new PDFContent(theDoc);
theContent.SetLineWidth(50);
theContent.SetLineJoin(0);
theContent.Move(300, 500);
theContent.Line(400, 700);
theContent.Line(500, 500);
theContent.Stroke();

theContent.SetLineJoin(1);
theContent.Move(300, 300);
theContent.Line(400, 500);
theContent.Line(500, 300);
theContent.Stroke();

theContent.SetLineJoin(2);
theContent.Move(300, 100);
theContent.Line(400, 300);
theContent.Line(500, 100);
theContent.Stroke();
theContent.AddToDoc();

theDoc.FontSize = 48;
theDoc.Pos.String = "50 700";
theDoc.AddText("0 - Miter");
theDoc.Pos.String = "50 500";
theDoc.AddText("1 - Round ");
theDoc.Pos.String = "50 300";
theDoc.AddText("2 - Bevel");
theDoc.Width = 10;
theDoc.Color.String = "255 255 255";
theDoc.AddLine(300, 500, 400, 700);
theDoc.AddLine(400, 700, 500, 500);
theDoc.Rect.String = "390 690 410 710";
theDoc.FillRect(10, 10);
theDoc.AddLine(300, 300, 400, 500);
theDoc.AddLine(400, 500, 500, 300);
theDoc.Rect.String = "390 490 410 510";
theDoc.FillRect(10, 10);
theDoc.AddLine(300, 100, 400, 300);
theDoc.AddLine(400, 300, 500, 100);
theDoc.Rect.String = "390 290 410 310";
theDoc.FillRect(10, 10);
theDoc.Color.String = "0 0 0";

[Visual Basic]
Dim theContent As PDFContent = New PDFContent(theDoc)
theContent.SetLineWidth(50)
theContent.SetLineJoin(0)
theContent.Move(300, 500)
theContent.Line(400, 700)
theContent.Line(500, 500)
theContent.Stroke()

theContent.SetLineJoin(1)
theContent.Move(300, 300)
theContent.Line(400, 500)
theContent.Line(500, 300)
theContent.Stroke()

theContent.SetLineJoin(2)
theContent.Move(300, 100)
theContent.Line(400, 300)
theContent.Line(500, 100)
theContent.Stroke()
theContent.AddToDoc()

theDoc.FontSize = 48
theDoc.Pos.String = "50 700"
theDoc.AddText("0 - Miter")
theDoc.Pos.String = "50 500"
theDoc.AddText("1 - Round ")
theDoc.Pos.String = "50 300"
theDoc.AddText("2 - Bevel")
theDoc.Width = 10
theDoc.Color.String = "255 255 255"
theDoc.AddLine(300, 500, 400, 700)
theDoc.AddLine(400, 700, 500, 500)
theDoc.Rect.String = "390 690 410 710"
theDoc.FillRect(10, 10)
theDoc.AddLine(300, 300, 400, 500)
theDoc.AddLine(400, 500, 500, 300)
theDoc.Rect.String = "390 490 410 510"
theDoc.FillRect(10, 10)
theDoc.AddLine(300, 100, 400, 300)
theDoc.AddLine(400, 300, 500, 100)
theDoc.Rect.String = "390 290 410 310"
theDoc.FillRect(10, 10)
theDoc.Color.String = "0 0 0"

Dash
線のダッシュパターンの設定。

パラメータはダッシュパターンの配列とその開始位置を与えます。ダッシュの配列はダッシュとギャップの長さを指定します。ダッシュの開始位置は最初のダッシュの描画方法を指定します。

ダッシュパターンの配列が空で位相が 0 の場合は実線を指定します。

ダッシュ線は直線や曲線を含むいろいろな種類のパスに適用されます。

[C#]
PDFContent theContent = new PDFContent(theDoc);
theContent.SaveState();
theContent.SetLineWidth(20);
theContent.LineDash("[ ] 0");
theContent.Move(100, 650);
theContent.Line(500, 650);
theContent.Stroke();

theContent.LineDash("[ 90 ] 0");
theContent.Move(100, 500);
theContent.Line(500, 500);
theContent.Stroke();

theContent.LineDash("[ 60 ] 30");
theContent.Move(100, 350);
theContent.Line(500, 350);
theContent.Stroke();

theContent.LineDash("[ 60 30 ] 0");
theContent.Move(100, 200);
theContent.Line(500, 200);
theContent.Stroke();
theContent.RestoreState();

// annotate dashed lines
theDoc.Color.String = "0 0 0";
theDoc.FontSize = 36;
theDoc.Pos.String = "50 710";
theDoc.AddText("[ ] 0 - no dashes");
theDoc.Pos.String = "50 560";
theDoc.AddText("[ 90 ] 0 - 90 on, 90 off...");
theDoc.Pos.String = "50 410";
theDoc.AddText("[ 60 ] 30 - 30 on, 60 off, 60 on...");
theDoc.Pos.String = "50 260";
theDoc.AddText("[ 60 30 ] 0 - 60 on, 30 off, 60 on...");

// add dashed lines
theContent.AddToDoc();

[Visual Basic]
Dim theContent As PDFContent = New PDFContent(theDoc)
theContent.SaveState()
theContent.SetLineWidth(20)
theContent.LineDash("[ ] 0")
theContent.Move(100, 650)
theContent.Line(500, 650)
theContent.Stroke()

theContent.LineDash("[ 90 ] 0")
theContent.Move(100, 500)
theContent.Line(500, 500)
theContent.Stroke()

theContent.LineDash("[ 60 ] 30")
theContent.Move(100, 350)
theContent.Line(500, 350)
theContent.Stroke()

theContent.LineDash("[ 60 30 ] 0")
theContent.Move(100, 200)
theContent.Line(500, 200)
theContent.Stroke()
theContent.RestoreState()

' annotate dashed lines
theDoc.Color.String = "0 0 0"
theDoc.FontSize = 36
theDoc.Pos.String = "50 710"
theDoc.AddText("[ ] 0 - no dashes")
theDoc.Pos.String = "50 560"
theDoc.AddText("[ 90 ] 0 - 90 on, 90 off...")
theDoc.Pos.String = "50 410"
theDoc.AddText("[ 60 ] 30 - 30 on, 60 off, 60 on...")
theDoc.Pos.String = "50 260"
theDoc.AddText("[ 60 30 ] 0 - 60 on, 30 off, 60 on...")

' add dashed lines
theContent.AddToDoc()

XForms
変換処理。

変換処理を使用することにより、オブジェクトに対し移動、スケーリング、回転や傾斜を設定することができます。

変換処理は6つの値で定義されます。一般的な変換値は下記の通りです。

  • 移動
    [1 0 0 1 tx ty] のマトリックスは座標系を tx （水平方向）と ty （垂直方向）に移動。
  • スケーリング
    [sx 0 0 sy 0 0] のマトリックスは原点を基準として座標系を sx （水平方向）と sy （垂直方向）でスケーリング。
  • 回転
    [cos(ra) sin(ra) -sin(ra) cos(ra) 0 0] のマトリックスは原点を中心として反時計方向に座標系を ra 度回転。
  • 傾斜
    [1 tan(ra) tan(ra) 1 0 0] のマトリックスは x 軸と ｙ 軸に ra 度傾斜を設定。

下記の例は、星型を45度回転して表示します。

[C#]
PDFContent star = new PDFContent(theDoc);
star.Move(124, 108);
star.Line(300, 650);
star.Line(476, 108);
star.Line(15, 443);
star.Line(585, 443);
star.Close();
star.Stroke();

PDFContent theContent = new PDFContent(theDoc);
theContent.SaveState();
theContent.SetLineWidth(30);
theContent.SetLineJoin(2);
theContent.AddContent(star);
theContent.SetRGBStrokeColor(1, 0, 0);
theContent.Transform(0.7, 0.7, -0.7, 0.7, 0, 0);
theContent.AddContent(star);
theContent.RestoreState();
theContent.AddToDoc();
[Visual Basic]
Dim star As PDFContent = New PDFContent(theDoc)
star.Move(124, 108)
star.Line(300, 650)
star.Line(476, 108)
star.Line(15, 443)
star.Line(585, 443)
star.Close()
star.Stroke()

Dim theContent As PDFContent = New PDFContent(theDoc)
theContent.SaveState()
theContent.SetLineWidth(30)
theContent.SetLineJoin(2)
theContent.AddContent(star)
theContent.SetRGBStrokeColor(1, 0, 0)
theContent.Transform(0.7, 0.7, -0.7, 0.7, 0, 0)
theContent.AddContent(star)
theContent.RestoreState()
theContent.AddToDoc()

Other

その他の例としてテキスト命令、透明モードや組み合わせモードなどがあります。


Fields, Markup and Movies Example

注釈のサンプル

Intro

通常、デザイナーで作成したフィールドや注釈を含んだ PDF をテンプレートとして使用します。

勿論、実行時にフィールドや注釈を作成することができますが、この場合 ABCpdf の低レベルの機能を使用します。

Types

注釈はページのコンテンツストリームとは別のオブジェクトの一般的なクラスです。注釈は PDF のコンテンツストリームとは別なので、そのページを個別に操作します。注釈はページの中に埋め込まれているのではなく、ページ上に表示されます。

注釈には、ムービー 注釈、メモ 注釈、スタンプ 注釈、線注釈、多角形注釈などがあります。 フィールドは名前が付いている値と平坦化した注釈の特定の型です。実際、この種のフィールドは見たり対話したりできる注釈です。また、注釈は値を取得したり名前で位置づけられたりするフィールドの階層にリンクされています。

ムービーは、注釈の特殊な型です。Flash や WMV を含むさまざまなムービー形式を埋め込むことができます。

注釈の操作方法に関する詳細は、Adobe PDF Specification を参照してください。

Fields

下記のコードはテキストボックス、ラジオボタン、チェックボックス、署名を含むフィールドを作成します。

[C#]
Doc theDoc = new Doc();
theDoc.Font = theDoc.AddFont("Helvetica");
theDoc.FontSize = 36;

//Create interactive form
InteractiveForm form = new InteractiveForm (theDoc);
theDoc.Pos.X = 40;
theDoc.Pos.Y = theDoc.MediaBox.Top - 40;
theDoc.AddText("Interactive Form annotations");

//Radio button items
form.AddRadioButtonGroup(new string[2]{"40 610 80 650", "40 660 80 700"}, "RadioGroupField", 0);
theDoc.Pos.String = "100 696";
theDoc.AddText("RadioButton 1");
theDoc.Pos.String = "100 646";
theDoc.AddText("RadioButton 2");

//Text field 1
FormField text = form.AddTextField("40 530 300 580", "TextField1", "Hello World!");
text.DefaultAppearance = "/TimesRoman 36 Tf 0 0 1 rg";
text.BorderColor = "0 0 0";
text.FillColor = "220 220 220";
text.TextAlign = "Left";

//Text field 2
text = form.AddTextField("40 460 300 510", "TextField2", "Text Field");
text.BorderColor = "0 0 0";
text.DefaultAppearance = "/TimesRoman 36 Tf 0 0 1 rg";
text.TextAlign = "Left";
text.SetFlag(FormField.FieldFlag.Password);

//Text field 3
text = form.AddTextField("320 460 370 580", "TextField3", "Vertical");
text.BorderColor = "0 0 0";
text.DefaultAppearance = "/TimesRoman 36 Tf 0 0 0 rg";
text.Rotate = 90;

//Combobox field
FormField combo = form.AddChoiceField("ComboBox", "40 390 300 440", "ComboBoxField");
combo.DefaultAppearance = "/TimesRoman 24 Tf 0 0 0 rg";
combo.AddOptions(new string[] {"ComboBox Item 1", "ComboBox Item 2", "ComboBox Item 3"});

//Listbox field
FormField listbox = form.AddChoiceField("ListBox", "40 280 300 370", "ListBoxField");
listbox.DefaultAppearance = "/TimesRoman 24 Tf 0 0 0 rg";
listbox.AddOptions(new string[] {"ListBox Item 1", "ListBox Item 2", "ListBox Item 3"});

//Checkbox field
form.AddCheckbox("40 220 80 260", "CheckBoxField", true);
theDoc.Pos.String = "100 256";
theDoc.AddText("Check Box");

//Pushbutton field
FormField button = form.AddButton("40 160 200 200", "ButtonField", "Button");
button.BorderColor = "0 0 0";
button.BorderStyle = "Beveled";

//Signature field
FormField signature = form.AddSignature("40 100 200 140", "Signature");
signature.BorderColor = "0 0 0";

Markup

下記のコードは四角形、線、テキスト処理、円、多角形を含む記号の注釈を作成します。

[C#]
//Markup annotations
theDoc.Page = theDoc.AddPage();
theDoc.Pos.X = 40;
theDoc.Pos.Y = theDoc.MediaBox.Top - 40;
theDoc.AddText("Markup annotations");

SquareAnnotation square = new SquareAnnotation(theDoc, "40 560 300 670", "255 0 0", "0 0 255");
square.BorderWidth = 8;

LineAnnotation line = new LineAnnotation(theDoc, "100 565 220 665", "255 0 0");
line.BorderWidth = 12;
line.RichTextCaption = "<span style = \"font-size:36pt; color:#FF0000\">Line</span>";

theDoc.FontSize = 24;
theDoc.Pos.String = "400 670";
int id = theDoc.AddText("Underline");
TextMarkupAnnotation markup = new TextMarkupAnnotation(theDoc, id, "Underline", "0 255 0");
theDoc.Pos.String = "400 640";
id = theDoc.AddText("Highlight");

markup = new TextMarkupAnnotation(theDoc, id, "Highlight", "255 255 0");
theDoc.Pos.String = "400 610";
id = theDoc.AddText("StrikeOut");

markup = new TextMarkupAnnotation(theDoc, id, "StrikeOut", "255 0 0");
theDoc.Pos.String = "400 580";
id = theDoc.AddText("Squiggly");

markup = new TextMarkupAnnotation(theDoc, id, "Squiggly", "0 0 255");
theDoc.FontSize = 36;

CircleAnnotation circle = new CircleAnnotation(theDoc, "80 320 285 525", "255 255 0", "255 128 0");
circle.BorderWidth = 20;
circle.BorderStyle = "Dashed";
circle.BorderDash = "[3 2]";

LineAnnotation arrowLine = new LineAnnotation(theDoc, "385 330 540 520", "255 0 0");
arrowLine.LineEndingsStyle = "ClosedArrow ClosedArrow";
arrowLine.BorderWidth = 6;
arrowLine.FillColor = "255 0 0";

PolygonAnnotation polygon = new PolygonAnnotation(theDoc, "100 70 50 120 50 220 100 270 200 270 250 220 250 120 200 70", "255 0 0", "0 255 0");
PolygonAnnotation cloudyPolygon = new PolygonAnnotation(theDoc, "400 70 350 120 350 220 400 270 500 270 550 220 550 120 500 70", "255 0 0", "64 85 255");
cloudyPolygon.CloudyEffect = 1;

Movies

下記のコードは Flash や WMV を挿入します。

[C#]
//Movie annotations
//WMV is courtesy of NASA - http://www.nasa.gov/wmv/30873main_cardiovascular_300.wmv
theDoc.Page = theDoc.AddPage();
theDoc.Pos.X = 40;
theDoc.Pos.Y = theDoc.MediaBox.Top - 40;
theDoc.AddText("Multimedia features");

theDoc.FontSize = 24;

theDoc.Pos.String = "40 690";
theDoc.AddText("Flash movie:");
MovieAnnotation movie1 = new MovieAnnotation(theDoc, "80 420 520 650", Server.MapPath("ABCpdf.swf"));

theDoc.Pos.String = "40 400";
theDoc.AddText("Video File:");
MovieAnnotation movie2 = new MovieAnnotation(theDoc, "80 40 520 360", Server.MapPath("video.wmv"));

Other

下記のコードはメモ用紙、ファイル添付、ラバースタンプ(3個)を追加します。

[C#]
theDoc.Page = theDoc.AddPage();
theDoc.FontSize = 36;
theDoc.Pos.X = 40;
theDoc.Pos.Y = theDoc.MediaBox.Top - 40;
theDoc.AddText("Other types of annotations");

//Sticky note annotation
theDoc.FontSize = 24;
theDoc.Pos.String = "40 680";
theDoc.AddText("Text annotation");
TextAnnotation textAnnotation = new TextAnnotation(theDoc, "340 660 340 675", "550 650 600 750", "6 sets of 13 pages. Trim to 5X7.");

//File attachment annotation
theDoc.Pos.String = "40 640";
theDoc.AddText("File Attachment annotation");
FileAttachmentAnnotation fileAttachMent = new FileAttachmentAnnotation(theDoc, "340 625 340 640", Server.MapPath("video.WMV") );

//StampAnnotations
theDoc.Pos.String = "40 600";
theDoc.AddText("Stamp annotations");
StampAnnotation stamp1 = new StampAnnotation(theDoc, "340 560 540 600", "DRAFT", "0 0 128");
StampAnnotation stamp2 = new StampAnnotation(theDoc, "340 505 540 545", "FINAL", " 0 128 0");
StampAnnotation stamp3 = new StampAnnotation(theDoc, "340 450 540 490", "NOT APPROVED", "128 0 0");


PDF Rendering Example

PDF のレンダリングのサンプル

このサンプルは、PDF ドキュメントのレンダリングの方法を示します。

Read

ABCpdf の Doc オブジェクトを作成し、PDF ドキュメントを読込みます。

[C#]
Doc theDoc = new Doc();
theDoc.Read(Server.MapPath("../Rez/spaceshuttle.pdf"));
[Visual Basic]
Dim theDoc As Doc = New Doc()
theDoc.Read(Server.MapPath("../Rez/spaceshuttle.pdf"))

Prefs

基本的な設定を行います。ここでは解像度の設定を行います。

[C#]
theDoc.Rendering.DotsPerInch = 36;
[Visual Basic]
theDoc.Rendering.DotsPerInch = 36

Save

最後にドキュメントの最初の4ページを PNG 形式で保存します。

[C#]
for (int i = 0; i < 4; i++) {
  theDoc.PageNumber = i;
  theDoc.Rect.String = theDoc.CropBox.String;
  theDoc.Rendering.Save(Server.MapPath("shuttle_p" + i.ToString() +".png"));
}

[Visual Basic]
For i As Integer = 1 To 4
  theDoc.PageNumber = i
  theDoc.Rect.String = theDoc.CropBox.String
  theDoc.Rendering.Save(Server.MapPath("shuttle_p" + i.ToString() + ".png"))
Next

Results

shuttle_p1.gif

shuttle_p2.png

shuttle_p3.png

shuttle_p4.png


System.Drawing Example

System.Drawing のサンプル

Intro

このサンプルは PDF へ出力する System.Drawing のコード例です。

通常、スクリーンやイメージあるいはプリンターへ出力する時には System.Drawing のコードを記述します。 PDF へ出力する場合、ABCpdf は簡単に処理が作成できるようにラッパーコードを使用します。

Basics

ラッパーには以下の名前空間が含まれています。

WebSupergoo.ABCpdf9.Drawing;
WebSupergoo.ABCpdf9.Drawing.Drawing2D;
WebSupergoo.ABCpdf9.Drawing.Text;

ABCpdf9.Drawing には System.Drawing に含まれているクラスと同じクラスがあります。例えば、System.Drawing.Pen は WebSupergoo.ABCpdf9.Drawing.Pen にマップされ、System.Drawing.Bitmap は WebSupergoo.ABCpdf9.Drawing.Bitmap にマップされます。

System.Drawing のコードを ABCpdf9.Drawing のコードに変更する手続きは簡単です。

  1. System.Drawing の名前空間を ABCpdf9.Drawing (Drawing, Drawing.Text, Drawing.Drawing2D など)の対応する名前空間に変更
  2. System.Drawing の型を ABCpdf9.Drawing (Pen, Brush, Color など) の対応する型に変更
  3. System.Drawing のコードが ABCpdf.Drawing にない場合コードを削除

一般的に、ABCpdf.Drawing に無いコードは少ないはずです。しかし Drawing のためのソースコードが提供されているので、アセンブリの拡張は簡単となります（Examples\ExampleProjects\ABCpdf.Drawing）。

System.Drawing の関数と似ている標準的な関数だけでなく、ABCpdf9.Drawing の名前空間にも、PDF の作成を制御するための似たような関数があります。

Original

System.Drawing のコードから開始です。

[C#]
using System;
using System.IO;
using System.Reflection;

using System.Drawing;
using System.Drawing.Drawing2D;
using System.Drawing.Text;

...

// create a canvas for painting on
Bitmap pg = new Bitmap((int)(8.5 * 72), (int)(11 * 72));
Graphics gr = Graphics.FromImage(pg);

// clear the canvas to white
Rectangle pgRect = new Rectangle(0, 0, pg.Width, pg.Height);
SolidBrush solidWhite = new SolidBrush(Color.White);
gr.FillRectangle(solidWhite, pgRect);
// load a new image and draw it centered on our canvas
Stream stm = Assembly.GetExecutingAssembly().GetManifestResourceStream("Examples.pic1.jpg");
Image img = Image.FromStream(stm);
int w = img.Width * 2;
int h = img.Height * 2;
Rectangle rc = new Rectangle((pg.Width - w) / 2, (pg.Height - h) / 2, w, h);
gr.DrawImage(img, rc);
img.Dispose();
stm.Close();
// frame the image with a black border
gr.DrawRectangle(new Pen(Color.Black, 4), rc);
// add some text at the top left of the canvas
Font fn = new Font("Comic Sans MS", 72);
SolidBrush solidBlack = new SolidBrush(Color.Black);
gr.DrawString("My Picture", fn, solidBlack, (int)(pg.Width * 0.1), (int)(pg.Height * 0.1));

// save the output
pg.Save("../../abcpdf.drawing.gif", System.Drawing.Imaging.ImageFormat.Gif);

[Visual Basic]
Imports System.IO
Imports System.Reflection

Imports System.Drawing
Imports System.Drawing.Drawing2D
Imports System.Drawing.Text

...

' create a canvas for painting on
Dim pg As Bitmap = New Bitmap(CType((8.5 * 72),(Integer)(11 * 72), Integer))
Dim gr As Graphics = Graphics.FromImage(pg)

' clear the canvas to white
Dim pgRect As Rectangle = New Rectangle(0,0,pg.Width,pg.Height)
Dim solidWhite As SolidBrush = New SolidBrush(Color.White)
gr.FillRectangle(solidWhite, pgRect)
' load a new image and draw it centered on our canvas
Dim stm As Stream = Assembly.GetExecutingAssembly().GetManifestResourceStream("Examples.pic1.jpg")
Dim img As Image = Image.FromStream(stm)
Dim w As Integer = img.Width * 2
Dim h As Integer = img.Height * 2
Dim rc As Rectangle = New Rectangle((pg.Width - w) / 2,(pg.Height - h) / 2,w,h)
gr.DrawImage(img, rc)
img.Dispose()
stm.Close()
' frame the image with a black border
gr.DrawRectangle(New Pen(Color.Black,4),rc)
' add some text at the top left of the canvas
Dim fn As Font = New Font("Comic Sans MS",72)
Dim solidBlack As SolidBrush = New SolidBrush(Color.Black)
gr.DrawString("My Picture", fn, solidBlack, CType((pg.Width * 0.1), (Integer)(pg.Height * 0.1), Integer))

' save the output
pg.Save("../../abcpdf.drawing.gif", System.Drawing.Imaging.ImageFormat.Gif)

Names

最初に System.Drawing の名前空間と ABCpdf.Drawing の名前空間を取り替えます。 メモ： ABCpdf.Drawing には System.Drawing で定義されている四角形やポイントと同じような構造体があります。そこで、それらを参照してエイリアスを作成しています。

[C#]
using System;
using System.IO;
using System.Reflection;

using WebSupergoo.ABCpdf9.Drawing;
using WebSupergoo.ABCpdf9.Drawing.Drawing2D;
using WebSupergoo.ABCpdf9.Drawing.Text;
using Rectangle = System.Drawing.Rectangle;
using RectangleF = System.Drawing.RectangleF;
using Point = System.Drawing.Point;
using PointF = System.Drawing.PointF;

[Visual Basic]
Imports System
Imports System.IO
Imports System.Reflection

Imports WebSupergoo.ABCpdf9.Drawing
Imports WebSupergoo.ABCpdf9.Drawing.Drawing2D
Imports WebSupergoo.ABCpdf9.Drawing.Text
Imports Rectangle = System.Drawing.Rectangle
Imports RectangleF = System.Drawing.RectangleF
Imports Point = System.Drawing.Point
Imports PointF = System.Drawing.PointF

Create

イメージ上でなく PDF ドキュメントのページ上に描画するために、コードの最初の部分を変更します。

[C#]
// create a canvas for painting on
PDFDocument doc = new PDFDocument();
Page pg = doc.AddPage((int)(8.5 * 72), (int)(11 * 72));
Graphics gr = pg.Graphics;

[Visual Basic]
' create a canvas for painting on
Dim doc As PDFDocument = New PDFDocument()
Dim pg As Page = doc.AddPage(8.5 * 72, 11 * 72)
Dim gr As Graphics = pg.Graphics

Draw

描画コードは変更していません。

[C#]
// clear the canvas to white
Rectangle pgRect = new Rectangle(0, 0, pg.Width, pg.Height);
SolidBrush solidWhite = new SolidBrush(Color.White);
gr.FillRectangle(solidWhite, pgRect);
// load a new image and draw it centered on our canvas
Stream stm = Assembly.GetExecutingAssembly().GetManifestResourceStream("Examples.pic1.jpg");
Image img = Image.FromStream(stm);
int w = img.Width * 2;
int h = img.Height * 2;
Rectangle rc = new Rectangle((pg.Width - w) / 2, (pg.Height - h) / 2, w, h);
gr.DrawImage(img, rc);
img.Dispose();
stm.Close();
// frame the image with a black border
gr.DrawRectangle(new Pen(Color.Black, 4), rc);
// add some text at the top left of the canvas
Font fn = new Font("Comic Sans MS", 72);
SolidBrush solidBlack = new SolidBrush(Color.Black);
gr.DrawString("My Picture", fn, solidBlack, (int)(pg.Width * 0.1), (int)(pg.Height * 0.1));

[Visual Basic]
' clear the canvas to white
Dim pgRect As Rectangle = New Rectangle(0,0,pg.Width,pg.Height)
Dim solidWhite As SolidBrush = New SolidBrush(Color.White)
gr.FillRectangle(solidWhite, pgRect)
' load a new image and draw it centered on our canvas
Dim stm As Stream = Assembly.GetExecutingAssembly().GetManifestResourceStream("Examples.pic1.jpg")
Dim img As Image = Image.FromStream(stm)
Dim w As Integer = img.Width * 2
Dim h As Integer = img.Height * 2
Dim rc As Rectangle = New Rectangle((pg.Width - w) / 2,(pg.Height - h) / 2,w,h)
gr.DrawImage(img, rc)
img.Dispose()
stm.Close()
' frame the image with a black border
gr.DrawRectangle(New Pen(Color.Black,4),rc)
' add some text at the top left of the canvas
Dim fn As Font = New Font("Comic Sans MS",72)
Dim solidBlack As SolidBrush = New SolidBrush(Color.Black)
gr.DrawString("My Picture", fn, solidBlack, CType((pg.Width * 0.1), (Integer)(pg.Height * 0.1), Integer))

Save

PDFドキュメントに保存するために、コードの最後の部分を変更します。

[C#]
// save the output
doc.Save(Server.MapPath("abcpdf.drawing.pdf"));

[Visual Basic]
' save the output
doc.Save(Server.MapPath("abcpdf.drawing.pdf"))

Results

abcpdf.drawing.png

abcpdf.drawing.pdf


WPF Tables Example

WPFTable サンプル

このサンプルは、WPF （Windows Presentation Foundation) の XAML （Extentible Application Markup Language） の表を PDF にインポートする方法を示しています。表は各 XAML ファイルの中で指定されています。

このサンプルには4種類の表をレイアウトするコードが含まれています。2つはテキストファイルから、残り2つは XML ファイルから入力データを取得します。

これらの表はわざと小さな表の作成 や大きな表の作成 サンプルとそっくりにして、それぞれのレイアウトを比較できるようにしました。

注意： ここで紹介しているコードはサンプル自体が C# なので C# だけです。

WPF の制約について WPF の Table コンポーネントでは次の機能がサポートされていません。

WPF は行や列の背景、表やセルの枠をサポートしていますが、行や列の枠はサポートしていません。

表の途中でページ分割された場合、WPF は自動的にヘッダー/フッターの反復処理を行いません。XPS のシリアル化の際に、コード内で DocumentPaginator クラスを拡張して手動でヘッダーを追加する人もいますが、サンプルコードではそういったことは行っていません。

WPF はリストのデータ バインディングを直接サポートしていません。つまり、行テンプレートを定義して、それから表がデータ プロバイダの各データ項目に自動的に行を追加する方法はないので、このサンプルでは XAML コードをメモリ内で操作して自動的に行を追加しています。

XAML

まず、表の構造を定義します。

小さな表の作成や大きな表の作成は、かなり簡単な構造です。例えば、小さな表の作成の場合は SmallTable.xaml （XAML のデザインファイル）で次のように定義されています。

<Table Name="ItemsTable" CellSpacing="10" BorderBrush="Black" BorderThickness="2" TextAlignment="Justify">
  <Table.Columns>
    <TableColumn Width="120"/>
    <TableColumn Width="180"/>
    <TableColumn Width="120"/>
    <TableColumn Width="140"/>
    <TableColumn Width="140"/>
  </Table.Columns>
  <TableRowGroup Background="White" DataContext="{Binding Source={StaticResource InputData}, Path=[0]}">
    <TableRow>
      <TableCell>
        <Paragraph>
          <TextBlock TextWrapping="Wrap" Text="{Binding Path=Columns[0]}"/>
        </Paragraph>
      </TableCell>
      <TableCell>
        <Paragraph>
          <TextBlock TextWrapping="Wrap" Text="{Binding Path=Columns[1]}"/>
        </Paragraph>
      </TableCell>
      <TableCell>
        <Paragraph>
          <TextBlock TextWrapping="Wrap" Text="{Binding Path=Columns[2]}"/>
        </Paragraph>
      </TableCell>
      <TableCell>
        <Paragraph>
          <TextBlock TextWrapping="Wrap" Text="{Binding Path=Columns[3]}"/>
        </Paragraph>
      </TableCell>
      <TableCell>
        <Paragraph>
          <TextBlock TextWrapping="Wrap" Text="{Binding Path=Columns[4]}"/>
        </Paragraph>
      </TableCell>
    </TableRow>
  </TableRowGroup>
</Table>;

WPF の表の定義方法に関する詳細は、MSDN の WPF 「テーブルの概要」 を参照してください。グリッドではなく表を使用しているので、表をフロー ドキュメントに配置しなければなりません。グリッドを UI コンテナで包んでフロー ドキュメントに表示することはできますが、複数のページにまたがらせることはできません。

表の定義には行が1つと列が5つあります。コードでリスト バインディングをアーカイブするためにデータソースの各項目に1行づつコピーする方法を後で紹介します。データソースは次のように定義しています。

<c:TextDataProvider x:Key="InputData" FileName="text6.txt"/>

TextDataProvider クラスは弊社がカスタムに書いたクラスで、タブで区切られた入力ファイルからテキストを取り出します。DataContext 属性と Binding 属性で指定したバインディングを経由して表にテキストを渡します。

<TableRowGroup Background="White" DataContext="{Binding Source={StaticResource InputData}, Path=[0]}">

この行グループをファイルの先頭行にバインドします。

<TextBlock TextWrapping="Wrap" Text="{Binding Path=Columns[0]}"/>

このセルの中のテキストはその行の１列目にバインドされています。

大きい表と小さい表の構造とほとんど同じです。大きい表の構造は LargeTable.xaml で定義されています。ページネーションはフロー ドキュメントのページネータで自動的に行われるので、XAML の表を定義する上でのわずかな違いはありますが、この2つの表は同じように実装されています。表の定義での違いは、それぞれ違う入力ファイルにバインドしてあるので列の数が違うという点です。

Bind

次に、行を追加します。

Table は、ListBox や ItemsControl といった他の WPF の UI コントロールと違って Items のコレクションへのバインディング（リスト バインディング）をサポートしていないので、コード内で行を手動で追加します。

それには、実行時に XAML デザインファイルを読み込みます。次に XML のクラスを使用して行をコピーし、別々のデータ項目にバインドします。実行時に XAML デザインファイルを読み込むには、 Visual Studio のファイルのプロパティで XAML ファイルを "Content" として設定しなければなりません。この設定はバイナリ位置にコピーする手助けにもなります。

[C#]

private MemoryStream ModifyXamlUsingTextProvider()
{
  TextDataProvider dataProvider = new TextDataProvider(mDataProvider);
  XmlDocument xamlDoc = new XmlDocument();
  FileStream xamlFile = new FileStream(mXamlFile, FileMode.Open);
  xamlDoc.Load(xamlFile);

  XmlNamespaceManager nsmgr = new XmlNamespaceManager(xamlDoc.NameTable);
  nsmgr.AddNamespace("x", "http://schemas.microsoft.com/winfx/2006/xaml/presentation");

  XmlNode itemsTable = xamlDoc.DocumentElement.SelectSingleNode(mTableXamlLocation + "[@Name='" + mTableName + "']", nsmgr);

  for (int i = 1; i < dataProvider.Count; i++) {
    XmlNode rowGroup = itemsTable.LastChild;
    XmlNode newRowGroup = rowGroup.Clone();
    string bindingText = newRowGroup.Attributes["DataContext"].Value;
    bindingText = bindingText.Remove(bindingText.LastIndexOf('[')) + "[" + i + "] }";
    newRowGroup.Attributes["DataContext"].Value = bindingText;
    newRowGroup.Attributes["Background"].Value = (i % 2) == 0 ? "White" : "LightGray";
    itemsTable.InsertAfter(newRowGroup, rowGroup);
  }

  MemoryStream memStream = new MemoryStream();
  xamlDoc.Save(memStream);
  xamlFile.Close();
  return memStream;
}

データプロバイダはコードから直接読み込まれるので、データ項目（テキストファイルの行）をどれくらい使えるかがわかります。XAML デザインドキュメントはXmlDocument として読み込まれます。ドキュメント要素の SelectSingleNode() に渡された Xpath クエリから表の XML ノードを取得します。このため、WPF 名前空間を読み込まないとクエリーは失敗します。

itemsTable ができたら、rowGroup を取得します。rowGroup はこの表の最後の子です。XmlNode.Clone() メソッドを使用して行グループをコピーし、データ バインディングが次の行を示すように変更します。また、行の背景色も互い違いにします。項目をすべて追加したら、メモリストリームにその XML ドキュメントを保存します。

[C#]

Page page = XamlReader.Load(memStream) as Page;
FlowDocumentPageViewer docViewer = LogicalTreeHelper.FindLogicalNode(page, "DocViewer") as FlowDocumentPageViewer;
page.Content = null;
memStream.Close();
return docViewer;

XamlReader.Load() を使用して（メモリストリームに保存された） XAML デザインファイルで指定したルートオブジェクトを読み込みます。これは Table でも（以下に示してあるように XPS そして PDF に直接変換するための） FlowDocument でもなく Page です。これは Visual Studio の XAML デザイナで Table を表示するのに都合がよいので、 Page をルートエレメントにすることにしました。このページはフロードキュメントのビューアを格納しているので、デザイナは XML タグの入力通りに表を表示することができます。次に、ウィンドウにドキュメントを表示したい場合はそのページを削除してドキュメントビューアをキープしておくだけです。XPS に変換するだけなら、そのドキュメントをキープしておくだけです。ページのコンテンツを空 （null） に設定しておかないと、その子要素（ドキュメントビューアとドキュメント）を他のコンテナ（ウィンドウまたは XPS ドキュメント）に結びつけることはできません。

Save

まず表を XPS として保存し、次に PDF に変換します。

[C#]
private void SaveToXps(Stream fileStream)
{
  Package package = Package.Open(fileStream, FileMode.Create, FileAccess.ReadWrite);
  XpsDocument doc = new XpsDocument(package);
  XpsDocumentWriter writer = XpsDocument.CreateXpsDocumentWriter(doc);
  IDocumentPaginatorSource document = CreateDocViewer().Document;
  writer.Write(document.DocumentPaginator);
  doc.Close();
  package.Close();
}

public void SaveToPdf(string pdfFileName)
{
  MemoryStream memStream = new MemoryStream();
  SaveToXps(memStream);
  WebSupergoo.ABCpdf9.Doc pdfDoc = new WebSupergoo.ABCpdf9.Doc();
  pdfDoc.Read(memStream, null, "xps");
  pdfDoc.Save(pdfFileName);
  pdfDoc.Clear();
  memStream.Close();
}

MemoryStream を使用してメモリに XPS ファイルを作成します。次に、そのドキュメントのページネータを XPS Writer に渡します。ドキュメントのページネータはフロー ドキュメントをページ分割して XPS ドキュメントに書き込みます。PDF ドキュメントの Read() メソッドはその XPS ドキュメントと型を格納しているストリームを受け取ります。XPS ドキュメントが PDF ドキュメントに読み込まれたら、これをファイルに保存できます。

XML

Invoice と Space の表サンプルは XML データソースにバインドしており、より複雑な構造になっています。

表の構造についての詳細は、InvoiceTable.xaml と SpaceTable.xml の XAML デザインファイルをご覧ください。

表の入力データは XML として指定されるので、弊社のカスタムな TextLDataProvider ではなく、WPF の標準のデータプロバイダである XmlDataProvider を使用できます。

そのデータプロバイダは XML なので、XAML デザインファイルだけでなく XmlDocument もデータファイルとして使用できます。

それぞれの表項目は XML 項目にマッピングされるので、XML 項目を数えたりそれぞれの XML 項目に新しい行グループを追加することができます（もちろん最初の項目はデザインファイルで定義されるので除きます）。なお、XmlDataProvider のインデックスは 0 からではなく 1 からです。

Results

PDFTable サンプルと非常によく似た表が出力されます。

table2.pdf - [Page 1]

table2.pdf - [Page 2] | table2.pdf - [Page 3]
table2.pdf - [Page 4] | table2.pdf - [Page 5]


Doc Class

Doc オブジェクト

Doc オブジェクトは PDF 文書の基本オブジェクトです。

System.Object
   WebSupergoo.ABCpdf9.Doc

Implements: IDisposable

メソッド | 説明
AddArc | 現在のページに弧を追加します。
AddBookmark | 現在のページを示すブックマークを追加します。
Throws Exceptions AddColorSpaceFile | ドキュメントに ICC カラースペースを追加します。
AddColorSpaceSpot | ドキュメントに分割カラースペースを追加します。
AddFont | ドキュメントにフォントの参照を追加します。
AddGrid | 現在のページにグリッドを追加します。
AddHtml | 現在のページに HTML 形式のテキストを追加します。
Throws Exceptions AddImage | 現在のページにイメージを追加します。
Throws Exceptions AddImageCopy | 現在のページにイメージのコピーを追加します。
Throws Exceptions AddImageData | データからイメージを取り出し、現在のページに追加します。
AddImageDoc | 他の PDF ドキュメントのページを現在のドキュメントのページに描画します。
Throws Exceptions AddImageFile | ファイルからイメージを取り出し、現在のページに追加します。
Throws Exceptions AddImageHtml | 指定した HTML で Web ページを作成します。
Throws Exceptions AddImageObject | Image オブジェクトからイメージを取り出し、現在のページに追加します。
Throws Exceptions AddImageToChain | HTML/PostScript をマルチページ PDF に変換したものに、新しいページを追加します。
Throws Exceptions AddImageUrl | 指定した URL で Web ページを作成します。
AddLine | 現在のページに直線を追加します。
AddObject | ドキュメントに PDF オブジェクトを追加します。
AddOval | 現在のページに楕円を追加します。
AddPage | 現在のドキュメントにページを追加します。
AddPie | 現在のページに扇形を追加します。
AddPoly | 現在のページにポリゴンを追加します。
AddText | 現在のページにテキストを追加します。
Append | ドキュメントの最後に PDF を追加します。
Chainable | オブジェクトを連結できるか定義します。
Clear | ドキュメントをクリアします。
ClearCachedDecompressedStreams | ストリームオブジェクトのキャッシュされ、解凍されたデータをクリアします。
Delete | ドキュメントに追加されているオブジェクトを削除します。
EmbedFont | ドキュメントにフォントを組み込みます。
FillRect | 現在のページに塗りつぶした四角形を追加します。
Flatten | 現在のページの平坦化と圧縮を行います。
FrameRect | 現在のページに四角形（枠）を追加します。
Throws Exceptions GetData | PDF をメモリデータとして取得します。
GetInfo | オブジェクトの情報を取得します。
GetInfoInt | オブジェクトの数値情報を取得します。
GetInfoInt64 | オブジェクトに関する数値情報を取得します。
GetInfoDouble | オブジェクトの数値情報を取得します。
GetInfoDate | オブジェクトの日付情報を取得します。
Throws Exceptions GetStream | 未処理のデータストリームとしてドキュメントを取得します。
GetText | 現在のページからテキストの内容を指定した形式で取得します。
Throws Exceptions Read | PDF を読み込みます
RemapPages | 並べ替え、コピー、削除するためにページの配置替えを行います。
Throws Exceptions Save | ドキュメントを PDF として保存します。
SetInfo | オブジェクトの情報を設定します。

プロパティ | 説明
Bookmark | ドキュメントの最上位にあるブックマーク
Color | 描画に使用する色
ColorSpace | 現在のカラースペース
CropBox | 現在のドキュメントの表示されているページサイズ
Encryption | 現在の暗号化の設定
Font | テキストを描画するためのフォント
Form | ドキュメントのフォームとフィールド
FontSize | テキストを描画するためのフォントサイズ
HPos | テキストの水平方向の位置
HtmlOptions | HTML と URL のレンダリングオプションと制御
Layer | 新しいコンテンツの挿入位置
LayerCount | 現在のページのレイヤー数
License | インストールしてある ABCpdf のライセンス情報
MediaBox | 新しいページのデフォルトのサイズ
ObjectSoup | PDF を構成するオブジェクトのコレクション
Options | 現在の状態のオプション
Page | 描画命令が行われる現在のページ
PageCount | ドキュメントのページ数
PageNumber | 現在のページのページ番号
Pos | 描画命令が行われる現在の位置
Rect | 描画命令で使用する現在の四角形
Rendering | レンダリングオプションと制御
Root | ルートオブジェクト
SaveOptions | 保存オプションと制御
TextStyle | テキストを描画するための現在のスタイル
Transform | 描画の現在の変換規則
VPos | テキストの垂直方向の位置
Width | 描画命令の現在の線の太さ


AddArc Function

AddArc メソッド

現在のページに弧を追加します。

Syntax

[C#]
virtual int AddArc(double as, double ae, double cx, double cy, double rx, double ry)
virtual int AddArc(double as, double ae, double cx, double cy, double rx, double ry, bool filled)
[Visual Basic]
Overridable Function AddArc(as As Double, ae As Double, cx As Double, cy As Double, rx As Double, ry As Double) As Integer
Overridable Function AddArc(as As Double, ae As Double, cx As Double, cy As Double, rx As Double, ry As Double, filled As Boolean) As Integer

Params
名称 | 説明
as | 弧の開始角度（度）
ae | 弧の終了角度（度）
cx | 弧の水平方向の中心
cy | 弧の垂直方向の中心
rx | 弧の水平方向の半径
ry | 弧の垂直方向の半径
filled | 単に描画するだけでなく弧を塗りつぶします。
戻り値 | 新しく追加したグラフィックオブジェクトの ID

Notes

現在のページに弧を追加します。弧は現在の色、幅およびオプションで描画されます。

異なる水平方向と垂直方向の半径を設定することができます。描画は開始角度から終了角度まで行われます。角度は時計の3時を0度にして反時計方向で設定します。

AddArc メソッドは、新しく追加されたグラフィックオブジェクトの ID を返します。

Example

下記のコードは、ドキュメントに弧を追加します。

[C#]
Doc theDoc = new Doc();
theDoc.Width = 24;
theDoc.Color.String = "120 0 0";
theDoc.AddArc(0, 270, 300, 400, 200, 300);
theDoc.Save(Server.MapPath("docaddarc.pdf"));
theDoc.Clear();
[Visual Basic]
Dim theDoc As Doc = New Doc()
theDoc.Width = 24
theDoc.Color.String = "120 0 0"
theDoc.AddArc(0, 270, 300, 400, 200, 300)
theDoc.Save(Server.MapPath("docaddarc.pdf"))
theDoc.Clear()

docaddarc.pdf


AddBookmark Function

AddBookmark メソッド

現在のページを指定するブックマークを追加します。

Syntax

[C#]
virtual int AddBookmark(string path, bool open)
[Visual Basic]
Overridable Function AddBookmark(path As String, open As Boolean) As Integer

Params
名称 | 説明
path | ブックマークのパス
open | ブックマークの開閉の指定
戻り値 | 新しく追加したブックマークオブジェクトの ID

Notes

現在のページを指定するブックマークを追加します。

ブックマークは、ファイルパスと同じようにパスを指定します。見出しと副見出しは "\" マークによって区切られます。

例：
"1. Introduction\1.1 Aim and Methods\1.1.3 Diagrams"

ブックマークが追加される時、見出しや副見出しがまだ存在しない場合、一時的な見出しが作成されます。

同じページを参照する複数のブックマークを追加する場合は、単に AddBookmark メソッドを複数回数呼ぶだけです。

このメソッドは、新しく追加したブックマークオブジェクトの ID を返します。

Example

下記のコードは、入れ子になっている連続したブックマークのページを追加します。下のイメージはドキュメントの概要を表しています。

[C#]
Doc theDoc = new Doc();
theDoc.FontSize = 64;
string theSection, theChapter, theSubject;
for (int i = 1; i < 3; i++) {
  theDoc.Page = theDoc.AddPage();
  theSection = i.ToString() + " Section";
  theDoc.AddText(theSection);
  theDoc.AddBookmark(theSection, true);
  for (int j = 1; j < 5; j++) {
    theDoc.Page = theDoc.AddPage();
    theChapter = theSection + "\\" + j.ToString() + " Chapter";
    theDoc.AddText(theChapter);
    theDoc.AddBookmark(theChapter, false);
    for (int k = 1; k < 6; k++) {
      theDoc.Page = theDoc.AddPage();
      theSubject = theChapter + "\\" + k.ToString() + " Subject";
      theDoc.AddText(theSubject);
      theDoc.AddBookmark(theSubject, true);
    }
  }
}
theDoc.Save(Server.MapPath("docaddbookmark.pdf"));
theDoc.Clear();
[Visual Basic]
Dim theDoc As Doc = New Doc()
New Doc()
theDoc.FontSize = 64
Dim theSection, theChapter, theSubject As String
For i As Integer = 1 To 2
  theDoc.Page = theDoc.AddPage()
  theSection = i.ToString() + " Section"
  theDoc.AddText(theSection)
  theDoc.AddBookmark(theSection, True)
True)
  For j As Integer = 1 To 4
    theDoc.Page = theDoc.AddPage()
    theChapter = theSection + "\" + j.ToString() + " Chapter"
    theDoc.AddText(theChapter)
    theDoc.AddBookmark(theChapter, False)
    For k As Integer = 1 To 5
      theDoc.Page = theDoc.AddPage()
      theSubject = theChapter + "\" + k.ToString() + " Subject"
      theDoc.AddText(theSubject)
      theDoc.AddBookmark(theSubject, True)
    Next
  Next
Next
theDoc.Save(Server.MapPath("docaddbookmark.pdf"))
theDoc.Clear()

docaddbookmark.pdf


AddColorSpaceFile Function

AddColorSpaceFile メソッド

ドキュメントに ICC カラースペースを追加します。

Syntax

[C#]
virtual int AddColorSpaceFile(string path)
[Visual Basic]
Overridable Function AddColorSpaceFile(path As String) As Integer

Throws Exceptions  エラーの場合、Exception() が発生します。

Params
名称 | 説明
path | ICC カラースペースファイルのパス
戻り値 | 新しく追加したカラースペースオブジェクトの ID

Notes

このメソッドはドキュメントに ICC カラースペースを追加し、新しく追加したオブジェクトの ID を返します。

ICC カラースペースはデバイスから独立して色の正確な表現を可能にします。この ICC の規格は International Color Consortium (http://www.color.org/)によって設定されています。

ABCpdf はグレーカラーや RGB カラー、CMYK カラーおよび Lab カラースペースに ICC のプロファイルを追加します。もしそのファイルが壊れたりして使用できなければこのメソッドはエラーを発生します。

現在のカラースペースは ColorSpace プロパティで設定されています。また現在の色は Color プロパティで設定されています。色の型が一致すると、そのカラースペースが使用されます。もし色の型が一致しない場合、デフォルト(デバイス)のカラースペースが使用されます。

たとえば、CMYK カラースペースを追加し、ColorSpace プロパティに設定すると、使用するすべての CMYK の色はこのカラースペースに基づいて定義されます。しかし RGB とグレースケールはデフォルト(デバイス)のカラースペースに基づいて定義され続けます。

Example

下記のコードは、ICC カラースペースで定義した CMYK のテキストを追加します。

[C#]
Doc theDoc = new Doc();
string theText = "Gallia est omnis divisa in partes tres, quarum unam incolunt Belgae, aliam Aquitani, tertiam qui ipsorum lingua Celtae, nostra Galli appellantur.";
theDoc.Rect.Inset(20, 40);
theDoc.FontSize = 96;
string thePath = Server.MapPath("../mypics/cmyk.icc");
theDoc.ColorSpace = theDoc.AddColorSpaceFile(thePath);
theDoc.Color.String = "200 20 20 20";
theDoc.AddText(theText);
theDoc.Save(Server.MapPath("docaddcolorspacefile.pdf"));
theDoc.Clear();
[Visual Basic]
Dim theDoc As Doc = New Doc()
Dim theText As String = "Gallia est omnis divisa in partes tres, quarum unam incolunt Belgae, aliam Aquitani, tertiam qui ipsorum lingua Celtae, nostra Galli appellantur."
theDoc.Rect.Inset(20, 40)
theDoc.FontSize = 96
Dim thePath As String = Server.MapPath("../mypics/cmyk.icc")
theDoc.ColorSpace = theDoc.AddColorSpaceFile(thePath)
theDoc.Color.String = "200 20 20 20"
theDoc.AddText(theText)
theDoc.Save(Server.MapPath("docaddcolorspacefile.pdf"))
theDoc.Clear()

docaddcolorspacefile.pdf


AddColorSpaceSpot Function

AddColorSpaceSpot メソッド

ドキュメントに分割カラースペースを追加します。

Syntax

[C#]
virtual int AddColorSpaceSpot(string name, string color)
[Visual Basic]
Overridable Function AddColorSpaceSpot(name As String, color As String) As Integer

Params
名称 | 説明
name | 色の名前
color | ディスプレイの色の表現。 XColor.String と同じ形式で指定します。
戻り値 | 新しく追加したカラースペースオブジェクトの ID

Notes

ドキュメントに分割カラースペースを追加し、新しく追加したオブジェクトの ID を返します。

分割カラースペースにより、スポットカラーを追加したり個々の色を独立して使用することができます。分割カラースペースは特定の色だけを描画し、その描画に使用される色の濃度を指定することができます。(色を塗る時に、その塗料の量を多くしたり少なくしたりして、濃淡を調整するような感じです）。

たとえば、CMYK の黄色の描画を行う分割カラースペースを "Gold" として定義します。ここでは、"Gold" の濃度を変えてテキストを描画します。この場合、標準のモニターの出力では、その色に近い色が描画されます。印刷時には(適切なソフトウエアとプリンタを使用して)、その色の名前("Gold")のインクを選択して使用します。

現在のカラースペースは ColorSpace プロパティで定義されています。また、現在の色は Color プロパティで定義されています。分割カラースペースでは1つの色が使用されるので、使用するスポットカラーの濃度を指定するには、単一コンポーネント(グレースケール)を使用することになります。

以下の2つは特別なカラースペースとして使用されます。

"All" は出力デバイスのすべての色を正確に参照します。登録マーカを印刷するのに役立ちます。

"None" は色を指定しません。従って、その出力は見えません。

Example

下記のコードは、"Gold" として色を定義し、色の値の総量を変えてドキュメントにテキストを追加します。

[C#]
Doc theDoc = new Doc();
theDoc.Rect.Inset(20, 20);
theDoc.FontSize = 300;
theDoc.ColorSpace = theDoc.AddColorSpaceSpot("GOLD", "0 0 100 0");
for (int i = 1; i <= 10; i++) {
  theDoc.Color.Gray = 255 / i;
  theDoc.AddText(theDoc.Color.Gray.ToString());
  theDoc.Rect.Move(25, -50);
}
theDoc.Save(Server.MapPath("docaddcolorspacespot.pdf"));
theDoc.Clear();
[Visual Basic]
Dim theDoc As Doc = New Doc()
theDoc.Rect.Inset(20, 20)
theDoc.FontSize = 300
theDoc.ColorSpace = theDoc.AddColorSpaceSpot("GOLD", "0 0 100 0")
For i As Integer = 1 To 10
  theDoc.Color.Gray = 255 / i
  theDoc.AddText(theDoc.Color.Gray.ToString())
  theDoc.Rect.Move(25, -50)
Next
theDoc.Save(Server.MapPath("docaddcolorspacespot.pdf"))
theDoc.Clear()

docaddcolorspacespot.pdf


AddFont Function

AddFont メソッド

ドキュメントにフォントの参照を追加します。

Syntax

[C#]
virtual int AddFont(string name)
virtual int AddFont(string name, LanguageType language)
virtual int AddFont(string name, LanguageType language, bool vertical)
[Visual Basic]
Overridable Function AddFont(name As String) As Integer
Overridable Function AddFont(name As String, language As LanguageType) As Integer
Overridable Function AddFont(name As String, language As LanguageType, vertical As Boolean) As Integer

Params
名称 | 説明
name | フォント名
language

使用する言語タイプ。LanguageType 列挙体は次の値を取得できます。

  • Latin
  • Unicode
  • Korean
  • Japanese
  • ChineseS
  • ChineseT

詳細については フォントと言語 を参照してください。デフォルトはラテン語です。
vertical

テキストを垂直方向（縦）に指定（オプション）

詳細については フォントと言語 を参照してください。デフォルトは false で、テキストは左から右方向（横）に進みます。
戻り値 | 新しく追加したフォントオブジェクトの ID

Notes

ドキュメントにフォントを追加します。

フォント名とフォントスタイルの記述はドキュメント内に保持されますが、言語が Unicode でない限り実際のフォントはドキュメントには保持されません（Unicode の場合、このメソッドはサブセットなしでフォントを埋め込みます）。フォントを埋め込む場合、または Unicode を使用する場合は、EmbedFont メソッドを使用します。

クライアントが PDF をオープンしようとすると、Acrobatはクライアントのシステム上で同じフォントを検索します。しかし同じフォントが検索できないと、フォントの記述により代わりのフォントが選択されます。 下記のフォントはすべてのシステムで利用できます。

  • Times-Roman
  • Times-Bold
  • Times-Italic
  • Times-BoldItalic
  • Helvetica
  • Helvetica-Bold
  • Helvetica-Oblique
  • Helvetica-BoldOblique
  • Courier
  • Courier-Bold
  • Courier-Oblique
  • Courier-BoldOblique
  • Symbol
  • ZapfDingbats

加えて、TrueType、OpenType、Type 1 のフォントもインストールしてあれば追加できます。この名称は Windows の Fonts フォルダで以下のように設定されています。

  • Arial
  • Arial Black
  • Arial Black Italic
  • ...
  • Book Antiqua
  • Book Antiqua Bold
  • Book Antiqua Bold Italic
  • Book Antiqua Italic
  • ...
  • Venetian301BT
  • Venetian301BT Bold
  • ...

AddFont メソッドは新しく追加したフォントオブジェクトのID を返します。この ID をドキュメントの Font プロパティに下記のように設定します。

theDoc.Font = theDoc.AddFont("Courier")

フォントはキャッシュされるので、アプリケーションが再開されるまで新しく追加されたフォントは ABCpdf で利用できません。動的にフォントをロードするにはこのメソッドにフォントファイルのパスを設定します。そうするとフォントがキャッシュに追加され使用できます。動的にロードしたフォントファイルを移動や削除あるいはリネームしたりすることはできません。

言語が string 型なのは？

ABCpdf の旧バージョンでは、言語パラメータは string 型だったので、次のようなコードでした。

theDoc.AddFont("Courier", "Latin")

最近のリリースでは、言語パラメータが列挙体に変更されました。ご使用の値が有効であることをコンパイラが確認できるので、これはより安全なコーディングの方法です。新しいコードはこのようになるはずです。

theDoc.AddFont("Courier", LanguageType.Latin)

LanguageType 列挙体の項目名は旧バージョンで使われていた文字列の値と同じなので、コードを変更するには簡単な検索と命令を置換するだけです。"" の言語は、LanguageType.Latin と同等です。

Example

下記のコードは、ドキュメントに "Times-Roman" と "Helvetica-Bold" のフォントを追加します。

[C#]
Doc theDoc = new Doc();
theDoc.FontSize = 48;
string theFont = "Times-Roman ";
theDoc.Font = theDoc.AddFont(theFont);
theDoc.AddText(theFont);
theFont = "Helvetica-Bold";
theDoc.Font = theDoc.AddFont(theFont);
theDoc.AddText(theFont);
theDoc.Save(Server.MapPath("docaddfont.pdf"));
theDoc.Clear();
[Visual Basic]
Dim theDoc As Doc = New Doc()
theDoc.FontSize = 48
Dim theFont As String = "Times-Roman "
theDoc.Font = theDoc.AddFont(theFont)
theDoc.AddText(theFont)
theFont = "Helvetica-Bold"
theDoc.Font = theDoc.AddFont(theFont)
theDoc.AddText(theFont)
theDoc.Save(Server.MapPath("docaddfont.pdf"))
theDoc.Clear()

docaddfont.pdf


AddGrid Function

AddGrid メソッド

現在のページにグリッドを追加します。

Syntax

[C#]
virtual int AddGrid()
[Visual Basic]
Overridable Function AddGrid() As Integer

Params
名称 | 説明
戻り値 | 新しく追加したグリッドオブジェクトの ID

Notes

現在のページにグリッドを追加します。グリッドはページの上で描画されるので、開発時にオブジェクトの位置決めに役立ちます。

Example

下記のコードは、ドキュメントの変換と、グリッドの追加を行います。

[C#]
Doc theDoc = new Doc();
theDoc.Page = theDoc.AddPage();
theDoc.Transform.Rotate(20, 100, 100);
theDoc.AddGrid();
theDoc.Save(Server.MapPath("docaddgrid.pdf"));
theDoc.Clear();
[Visual Basic]
Dim theDoc As Doc = New Doc()
theDoc.Page = theDoc.AddPage()
theDoc.Transform.Rotate(20, 100, 100)
theDoc.AddGrid()
theDoc.Save(Server.MapPath("docaddgrid.pdf"))
theDoc.Clear()

docaddgrid.pdf


AddHtml Function

AddHtml メソッド

現在のページに HTML 形式のテキストを追加します。

Syntax

[C#]
virtual int AddHtml(string text)
virtual int AddHtml(string dummy, int chainid)
[Visual Basic]
Overridable Function AddHtml(text As String) As Integer
Overridable Function AddHtml(dummy As String, chainid As Integer) As Integer

Params
名称 | 説明
text | ページに追加する HTML
dummy | ダミーのパラメータ。内容は使用されません。
chainid | 前に追加されたテキストのオブジェクト ID
戻り値 | 新しく追加したテキストオブジェクトの ID

Notes

現在のページに HTML 形式のテキストを追加します。

このメソッドは AddText と同じような動作をしますが、HTML タグの挿入によりマルチスタイルのテキストを追加することができます。サポートされているタグの一覧は HTML 形式テキストの説明にあります。 縦フォントを使用する場合の位置についての詳細は、Pos を参照してください。

複数のテキストや HTML のブロックを接続することができるので、テキストをある場所から別の場所へ流れるように設定することができます。これを行うには、最初に AddText や AddHtml メソッドを使用してテキストや HTML のブロックを追加する必要があります。次に、（四角形やページなどの）追加位置を調節した後、前の呼び出しで取得した ID を渡すたびに Doc.AddHtml メソッドを使用して複数の新しいテキストや HTML のブロックを追加します。

有効なテキストがなくなると、このメソッドは "0" を返します。なお、新しい項目を追加する前にテキストオブジェクトの Truncated プロパティを問い合わせることができます。

このメソッドは、新しく追加したテキストオブジェクトの ID を返します。テキストが追加されなければ "0" を返します。これは、長さが 0 の文字列が与えられたり、四角形が1文字も描画できないような小さな時に起こります。

一般的に、テキストが Rect に収まらないほど大きすぎたり、Pos が Rect の最後の部分になると "0" が返されます。

複数の領域にまたがってテキストを設定も参照してください。

Example

下記のコードは、ドキュメントに HTML 形式のテキストを追加する例です。

[C#]
Doc theDoc = new Doc();
theDoc.FontSize = 72;
theDoc.AddHtml("<b>Gallia</b> est omnis divisa in partes tres, quarum unam incolunt <b>Belgae</b>, aliam <b>Aquitani</b>, tertiam qui ipsorum lingua <b>Celtae</b>, nostra <b>Galli</b> appellantur.");
theDoc.Save(Server.MapPath("docaddhtml.pdf"));
theDoc.Clear();
[Visual Basic]
Dim theDoc As Doc = New Doc()
theDoc.FontSize = 72
theDoc.AddHtml("<b>Gallia</b> est omnis divisa in partes tres, quarum unam incolunt <b>Belgae</b>, aliam <b>Aquitani</b>, tertiam qui ipsorum lingua <b>Celtae</b>, nostra <b>Galli</b> appellantur.")
theDoc.Save(Server.MapPath("docaddhtml.pdf"))
theDoc.Clear()

docaddhtml.pdf


AddImage Function

AddImage メソッド

現在のページにイメージを追加します。

Syntax

[C#]
virtual int AddImage(XImage image)
virtual int AddImage(string path)
virtual int AddImage(byte[] data)
virtual int AddImage(string path, int page)
virtual int AddImage(byte[] data, int page)
virtual int AddImage(int id)
virtual int AddImage(System.Drawing.Bitmap bm)
virtual int AddImage(Doc doc, int page)
virtual int AddImage(Doc doc, int page, XRect src)
[Visual Basic]
Overridable Function AddImage(image As XImage) As Integer
Overridable Function AddImage(path As String) As Integer
Overridable Function AddImage(data() As Byte) As Integer
Overridable Function AddImage(path As String, page As Integer) As Integer
Overridable Function AddImage(data() As Byte, page As Integer) As Integer
Overridable Function AddImage(id As Integer) As Integer
Overridable Function AddImage(bm As System.Drawing.Bitmap) As Integer
Overridable Function AddImage(doc As Doc, page As Integer) As Integer
Overridable Function AddImage(doc As Doc, page As Integer, src As XRect) As Integer

Throws Exceptions  エラーの場合、Exception() が発生します。

Params
名称 | 説明
image | ページにイメージを含んだ XImage が追加されます。
path | ページにファイルパス、URL または html 文字列が追加されます。
data | ページに生の JPEG データが追加されます。
id | 既存の Image オブジェクトの ID が再度ページにコピーされます。
bm | ページに .NET の Bitmap が追加されます。
doc | ページに PDF ドキュメントのページが追加されます。
page | ドキュメントのページが追加されます。
src | ドキュメントページのソースエリアが追加されます。
戻り値 | 新しく追加したイメージオブジェクトの ID

Notes

現在のページにイメージを追加し、新しく追加したグラフィックスオブジェクトのIDを返します。

このメソッドは、ImageSpec の内容に応じて以下のどのメソッドを呼ぶべきかを定義します。

  • AddImageFile
  • AddImageData
  • AddImageCopy
  • AddImageUrl
  • AddImageHtml
  • AddImageToChain
  • AddImageDoc
  • AddImageObject
  • AddImageBitmap

このメソッドは、以前のバージョンの互換性のためにあるもので、通常は下記のメソッドを使用してください。

Example

ありません。


AddImageBitmap Function

AddImageBitmap メソッド

現在のページに Bitmap を追加します。

Syntax

[C#]
virtual int AddImageBitmap(System.Drawing.Bitmap bm, bool transparent)
[Visual Basic]
Overridable Function AddImageBitmap(bm As System.Drawing.Bitmap, transparent As Boolean) As Integer

Throws Exceptions  エラーの場合、Exception() が発生します。

Params
名称 | 説明
bm | ページに追加する .NET の Bitmap
transparent | 透明度情報を保存します
戻り値 | 新しく追加した Image オブジェクトの ID

Notes

現在のページに System.Drawing.Bitmap を追加します。

Transparent パラメータが true に設定されている場合、全ての透明度情報が保存されます。これによりアルファチャンネルの透明 GIF や PNG のようなフォーマットを追加できるようになります。

イメージは現在の Rect に収まるようにスケーリングされます。また、そのイメージは現在の Transform を使用して変換されます。

現在の四角形の幅と高さがゼロの場合、イメージのサイズは自動的に決まります。TopDown モードで動作してる場合、イメージの位置は四角形により指定された位置の左上が基準位置になります。TopDown モードで動作していない場合は、四角形の左下が基準位置になります。どちらの場合も、72 DPI の出力になるように縦横が決められ、指定されたイメージが自然な大きさになるように設定されます。

Example

下記のコードは透明 PNG をドキュメントに追加します。

[C#]
Doc theDoc = new Doc();
string thePath = Server.MapPath("../mypics/mypic.png");
Bitmap bm = new Bitmap(thePath);
theDoc.Rect.Inset(20, 20);
theDoc.Color.String = "0 0 200";
theDoc.FillRect();
theDoc.AddImageBitmap(bm, true);
bm.Dispose();
theDoc.Save(Server.MapPath("docaddimagebitmap.pdf"));
theDoc.Clear();
[Visual Basic]
Dim theDoc As Doc = New Doc()
Dim thePath As String = Server.MapPath("../mypics/mypic.png")
Dim bm As Bitmap = New Bitmap(thePath)
theDoc.Rect.Inset(20, 20)
theDoc.Color.String = "0 0 200"
theDoc.FillRect()
theDoc.AddImageBitmap(bm, True)
bm.Dispose()
theDoc.Save(Server.MapPath("docaddimagebitmap.pdf"))
theDoc.Clear()

docaddimagebitmap.pdf


AddImageCopy Function

AddImageCopy メソッド

現在のページにイメージのコピーを追加します。

Syntax

[C#]
virtual int AddImageCopy(int id)
[Visual Basic]
Overridable Function AddImageCopy(id As Integer) As Integer

Throws Exceptions エラーの場合、Exception() が発生します。

Params
名称 | 説明
id | コピー元の Image オブジェクトの ID
戻り値 | 新しく追加した Image オブジェクトの ID

Notes

ドキュメントの中で、既にあるイメージのコピーを追加します。

透かしのようなグラフィックスの用途に使用できます。なお、オリジナルのイメージデータは1つしか無いので、PDF のサイズは非常に小さくなります。

このメソッドはラスターやビットマップイメージに使用します。コピー元の Image オブジェクトの ID は AddImageFile、AddImageData や AddImageObject で取得できます。

イメージは現在の Rect に収まるようにスケーリングされます。また、そのイメージは現在の Transform を使用して変換されます。

もし現在の四角形の幅または縦の値が "0" の場合、イメージのサイズは自動的に決まります。また、TopDown モードで動作している時は、四角形で指定された場所にそのイメージの左上の位置が設定され、そうでない時はイメージの左下の位置が設定されます。どちらの場合も、72 DPI の出力になるように縦横が決められ、指定されたイメージが自然な大きさになるように設定されます。

Example

下記のコードは、PDF ドキュメントを読み込み、各ページに背景イメージを設定します。

まず、PDF ドキュメントの処理と各ページの参照に必要な核となる情報を見つけることからはじめます。

[C#]
Doc theDoc = new Doc();
theDoc.Read(Server.MapPath("../mypics/sample.pdf"));
int theCount = theDoc.PageCount;
[Visual Basic]
Dim theDoc As Doc = New Doc()
theDoc.Read(Server.MapPath("../mypics/sample.pdf"))
Dim theCount As Integer = theDoc.PageCount

ページにイメージを挿入します。

レイヤプロパティを設定することにより、イメージは項目の上ではなく背景に追加されます。

ループの最初でイメージファイルを追加し、2回目以降のループではそのイメージの ID を参照します。つまり1つのイメージを埋め込んで、各ページからはそれを参照するだけです。

最後に変更した PDF を保存します。

[C#]
int theID = 0;
for (int i = 1; i <= theCount; i++) {
theDoc.PageNumber = i;
theDoc.Layer = theDoc.LayerCount + 1;
if (i == 1) {
string thePath = Server.MapPath("../mypics/light.jpg");
theID = theDoc.AddImageFile(thePath, 1);
}
else
theDoc.AddImageCopy(theID);
}
theDoc.Save(Server.MapPath("watermark.pdf"));
theDoc.Clear();

[Visual Basic]
Dim theID As Integer = 0
For i As Integer = 1 To theCount
theDoc.PageNumber = i
theDoc.Layer = theDoc.LayerCount + 1
If i = 1 Then
Dim thePath As String =
                                                Server.MapPath("../mypics/light.jpg")
theID = theDoc.AddImageFile(thePath, 1)
Else
theDoc.AddImageCopy(theID)
End If
Next
theDoc.Save(Server.MapPath("watermark.pdf"))
theDoc.Clear()

背景イメージが設定されるドキュメント

sample.pdf - [Page 1] | sample.pdf - [Page 2]
sample.pdf - [Page 3] | sample.pdf - [Page 4]

背景に設定するイメージ

処理結果

watermark.pdf - [Page 1] | watermark.pdf - [Page 2]
watermark.pdf - [Page 3] | watermark.pdf - [Page 4]


AddImageData Function

AddImageData メソッド

データからイメージを取り出し現在のページに追加します。

Syntax

[C#]
virtual int AddImageData(byte[] data)
virtual int AddImageData(byte[] data, int frame)
[Visual Basic]
Overridable Function AddImageData(data() As Byte) As Integer
Overridable Function AddImageData(data() As Byte, frame As Integer) As Integer

Throws Exceptions エラーの場合、Exception() が発生します。

Params
名称 | 説明
data | JPEG や TIFF のようなイメージデータ
frame | 複数のフレームやページをサポートするイメージタイプ。 最初のフレームは1です。
戻り値 | 新しく追加した Image オブジェクトの ID

Notes

データからイメージを取り出し現在のページに追加し、新しく追加したオブジェクトの ID を返します。

このメソッドは基本的に AddImageFile と同じですが、ファイルパスでなはく生のデータを指定してイメージを追加します。

Example

ありません。


AddImageDoc Function

AddImageDoc メソッド

他の PDF ドキュメントのページを現在のドキュメントのページに描画します。

Syntax

[C#]
virtual int AddImageDoc(Doc doc, int page, XRect rect)
[Visual Basic]
Overridable Function AddImageDoc(doc As Doc, page As Integer, rect As XRect) As Integer

Params
名称 | 説明
doc | ソースドキュメント
page | 描画するページ 最初のページを描画するには、1を指定します。
rect | 描画するページ領域 ページ全体を指定する場合は空文字列を指定します。 文字列形式は XRect.String プロパティの形式と同じです。
戻り値 | 新しく追加した Image オブジェクトの ID

Notes

他の PDF ドキュメントのページを現在のドキュメントのページに描画し、新しく追加したオブジェクトの ID を返します。

イメージは現在の Rect に収まるようにスケーリングされます。また、そのイメージは現在の Transform を使用して変換されます。

現在の四角形の幅または縦の値が "0" の場合、イメージのサイズは自動的に決まります。また、TopDown モードで動作している時は、四角形で指定された場所にそのイメージの左上の位置が設定され、そうでない時はイメージの左下の位置が設定されます。どちらの場合も、72 DPI の出力になるように縦横が決められ、指定されたイメージが自然な大きさになるように設定されます。

Refactor は AddImageDoc メソッドを呼び出した時に新しく修正した余分なオブジェクトを削除するかどうかを定義します。Preflight の設定は、AddImageDoc メソッドを呼び出す前に出力先のドキュメントに含まれているオブジェクトの正当性を確認するかどうかを定義します。ドキュメントやページがメモリをたくさん使っていたり共通のオブジェクトがたくさんなければ、ページを追加する時は refactor と preflight を無効にしておいてドキュメントを保存する時に有効にした方が速く処理されます。この設定は SetInfo を使用して変更できます。

Example

下記のコードは、他のドキュメントに PDF を描画します。新しいドキュメントの各ページに4ページ分描画してドキュメントを作成します。

まず、ABCpdf の Doc オブジェクトを作成し、ソースドキュメントに読み込みます。

[C#]
Doc theSrc = new Doc();
theSrc.Read(Server.MapPath("../Rez/spaceshuttle.pdf"));
int theCount = theSrc.PageCount;
[Visual Basic]
Dim theSrc As Doc = New Doc()
theSrc.Read(Server.MapPath("../Rez/spaceshuttle.pdf"))
Dim theCount As Integer = theSrc.PageCount

次に、出力用の Doc オブジェクトを作成し、ソースドキュメントのページサイズと同じになるように MediaBox プロパティを設定します。1/4のページサイズになるように Rect プロパティを変更します。

[C#]
Doc theDst = new Doc();
theDst.MediaBox.String = theSrc.MediaBox.String;
theDst.Rect.String = theDst.MediaBox.String;
theDst.Rect.Magnify(0.5, 0.5);
theDst.Rect.Inset(10, 10);
double theX, theY;
theX = theDst.MediaBox.Width / 2;
theY = theDst.MediaBox.Height / 2;

[Visual
            Basic]
Dim theDst As Doc = New Doc()
theDst.MediaBox.String = theSrc.MediaBox.String
theDst.Rect.String = theDst.MediaBox.String
theDst.Rect.Magnify(0.5, 0.5)
theDst.Rect.Inset(10, 10)
Dim theX As Double,theY As Double
theX = theDst.MediaBox.Width / 2
theY = theDst.MediaBox.Height / 2

すべてのページにコピー処理を行います。その場合、4ページごとに改ページします。

[C#]
for (int i = 1; i <= theCount; i++) {
  switch (i % 4) {
    case 1:
      theDst.Page = theDst.AddPage();
      theDst.Rect.Position(10, theY + 10);
      break;
    case 2:
      theDst.Rect.Position(theX + 10, theY + 10);
      break;
    case 3:
      theDst.Rect.Position(10, 10);
      break;
    case 0:
      theDst.Rect.Position(theX + 10, 10);
      break;
  }
  theDst.AddImageDoc(theSrc, i, null);
  theDst.FrameRect();
}

[Visual Basic]
For i As Integer = 1 To theCount
  Select Case i Mod 4
    Case 1
      theDst.Page = theDst.AddPage()
      theDst.Rect.Position(10, theY + 10)
    Case 2
      theDst.Rect.Position(theX + 10, theY + 10)
    Case 3
      theDst.Rect.Position(10, 10)
    Case 0
      theDst.Rect.Position(theX + 10, 10)
  End Select
  theDst.AddImageDoc(theSrc, i, Nothing)
  theDst.FrameRect()
Next

最後に保存します。

[C#]
theDst.Save(Server.MapPath("fourup.pdf"));
// finished

[Visual
            Basic]
theDst.Save(Server.MapPath("fourup.pdf"))
' finished

処理結果

fourup.pdf - [Page 1]
fourup.pdf - [Page 2]


AddImageFile Function

AddImageFile メソッド

ファイルからイメージを取り出して現在のページに追加します。

Syntax

[C#]
virtual int AddImageFile(string path)
virtual int AddImageFile(string path, int frame)
[Visual Basic]
Overridable Function AddImageFile(path As String) As Integer
Overridable Function AddImageFile(path As String, frame As Integer) As Integer

Throws Exceptions エラーの場合、Exception() が発生します。

Params
名称 | 説明
path | そのページに追加するファイルパス、URL または HTML 文字列
frame | 複数のフレームやページをサポートするイメージタイプ。 これはフレームを指定するための1から始まるインデックスです。（デフォルトは1です）
戻り値 | 新しく追加した Image オブジェクトの ID

Notes

ファイルからイメージを取り出して現在のページに追加し、新しく追加したオブジェクトの ID を返します。

このメソッドで埋め込んだイメージは常にパススルーモードで挿入されます。パススルーモードは間接モードより高速です。パススルーモードでは、圧縮の設定やカラースペースおよびICCカラープロファイルの保存ができます。またベクトルデータはベクトルフォーマットで処理されます。なお、サポートしているフォーマットは JPEG、JPEG 2000、TIFF、EMF、WMF、PS (PostScript)、EPS (Encapsulated PostScript) です。

注意：すべての EMF や WMF ファイルを直接このようにインポートできるわけではありません。この場合、XImage オブジェクトの使用を考え直すべきです。XImage オブジェクトとデフォルトの ReadModule を一緒に使うと高速ですが、イメージがラスター化されてしまいます。XpsAny ReadModule を使うと高速ではありませんが、ほとんどすべての EMF や WMF ファイルをベクトルフォーマットで処理します。

イメージは現在の Rect に収まるようにスケーリングされます。また、そのイメージは現在の Transform を使用して変換されます。

現在の四角形の幅または高さが "0" の場合、イメージのサイズは自動的に決まります。また、TopDown モードを使用している場合は、四角形で指定された位置にそのイメージの左上の位置が設定され、そうでない時はイメージの左下の位置が設定されます。どちらの場合も、72 DPI の出力になるように縦横が決められ、指定されたイメージが自然な大きさになるように設定されます。

透過 イメージの透過を反転するには、このメソッドの戻り値の ID を使用して、配列を割り当てます。

透過の反転を行うには：

theDoc.SetInfo(theDoc.GetInfoInt(theID, "XObject"), "/SMask*/Decode", "[1 0]")

同じようにして、イメージの色レベルの反転や変更を行うことができます。

RGB イメージを反転させるには：

theDoc.SetInfo(theDoc.GetInfoInt(theID, "XObject"), "/Decode", "[1 0 1 0 1 0]")

Example

下記のコードは、現在のページの左下にイメージを追加します。イメージの幅と高さは、指定したファイルから自動的に決まります。

[C#]
Doc theDoc = new Doc();
theDoc.Rect.String = "0 0 0 0";
string thePath = Server.MapPath("../mypics/pic.jpg");
theDoc.AddImageFile(thePath, 1);
theDoc.Save(Server.MapPath("docaddimage.pdf"));
theDoc.Clear();
[Visual Basic]
Dim theDoc As Doc = New Doc()
theDoc.Rect.String = "0 0 0 0"
Dim thePath As String = Server.MapPath("../mypics/pic.jpg")
theDoc.AddImageFile(thePath, 1)
theDoc.Save(Server.MapPath("docaddimage.pdf"))
theDoc.Clear()

docaddimage.pdf


AddImageHtml Function

AddImageHtml メソッド

指定した HTML で Web ページを作成します。

Syntax

[C#]
virtual int AddImageHtml(string html)
virtual int AddImageHtml(string html, bool paged, int width, bool disableCache)
[Visual Basic]
Overridable Function AddImageHtml(html As String) As Integer
Overridable Function AddImageHtml(html As String, paged As Boolean, width As Integer, disableCache As Boolean) As Integer

Throws Exceptions エラーの場合、 Exception() が発生します。

Params
名称 | 説明
html | 作成する HTML
paged | HTML をマルチページ PDF に変換するかどうかの指定。 デフォルトの XHtmlOptions.Paged プロパティをオーバーライドすることができます。
width | ウェブページの表示幅（ピクセル）。 デフォルトの XHtmlOptions.BrowserWidth プロパティをオーバーライドすることができます。
disableCache | ページのキャッシュをしないかの指定。 詳細は、XHtmlOptions.PageCacheEnabled プロパティを参照してください。
戻り値 | 新しく追加したオブジェクトの ID

Notes

このメソッドは本質的には AddImageUrl メソッドと同じですが、URL を指定するのではなく HTML を使用します。

ABCpdf はこの HTML をテンポラリファイルに保存し、'file://' プロトコル指定子を使用してそのファイルを作成します。

IIS のユーザはテンポラリ ディレクトリに完全にアクセスできない場合があります。これはマシンのシステム設定によって決まり、この場合エラーになります。

従って、ASP で処理する場合、ASPNET ユーザ、IUSR_MACHINENAME ユーザ、または IWAM_MACHINENAME ユーザのテンポラリ ディレクトリにアクセスできるようにする必要があります。

スタイルとイメージ HTML はファイルの中にあるわけではないので、位置の設定がありません。

外部のスタイルシートやイメージは相対 URL で参照されることがあります。これは、HTML の位置がないため相対参照を指定できないからです。

従って、スタイルシートやイメージのリンクを絶対参照として用意するか、HTML の Base 要素を使用して適切な基準位置を指定するか、適切な位置のファイルに HTML を保存して AddImageUrl を使用する必要があります。

HTML の Base タグは HEAD 要素内の、他のどの属性よりも先に配置しなければなりません。

Example

ありません。


AddImageObject Function

AddImageObject メソッド

Image オブジェクトからイメージを取り出し、現在のページに追加します。

Syntax

[C#]
virtual int AddImageObject(XImage image)
virtual int AddImageObject(XImage image, bool transparent)
[Visual Basic]
Overridable Function AddImageObject(image As XImage) As Integer
Overridable Function AddImageObject(image As XImage, transparent As Boolean) As Integer

Throws Exceptions  エラーの場合、Exception() が発生します。

Params
名称 | 説明
image | ページに追加するイメージを含んでいる XImage オブジェクト
transparent | 透明情報を保存するかしないかの指定。このパラメータは XImage オブジェクトを作成するために使用される XReadOptions オブジェクトの PreserveTransparency プロパティをオーバーライドします。このパラメータが指定されず、 XImage オブジェクトが XReadOptions オブジェクトなしで作成された場合、このパラメータのデフォルト値は false になります。
戻り値 | 新しく追加したオブジェクトの ID。イメージが複数のオブジェクトとして追加された場合（例えば、 Operation プロパティが null ではない ReadModule （SwfVector 、Xps、または XpsAny）を使用する XReadOptions オブジェクトで作成された場合）、ID はゼロを返します。XReadOptions.Operation プロパティが null の場合、テンポラリの SwfImportOperation クラスによってこのメソッドは XReadOptions.Frame プロパティのフレームに GraphicLayer クラスの ID を返します。

Notes

XReadOptions オブジェクトが Operation プロパティを使用する ReadModule （例：SwfVecter、Xps、XpsAny）を使用して XImage オブジェクトを作成する場合、指定された処理が呼び出されてその形式のイメージが作成されます。それ以外は、このメソッドは Image オブジェクトからイメージを取り出して現在のページに追加し、新しく追加したオブジェクトの ID を返します。

現在の Frame プロパティの Selection プロパティを追加し、新しく追加したオブジェクトの ID を返します。

このメソッドはイメージを間接モードで挿入します。間接モードはパススルーモードほど高速ではありません。しかし非常に柔軟性にとみ、さまざまなイメージ形式を使用することができます。

Transparent が true に設定されると、透明情報が保存されます。これにより、透明 GIF、アルファチャンネル付きの PNG、または Image.SetMask メソッドを使用して設定されたマスク付きのイメージなどのフォーマットを使用することができます。

イメージは現在の Rect に収まるようにスケーリングされます。また、そのイメージは現在の Transform を使用して変換されます。

もし現在の四角形の幅または縦の値が "0" の場合、イメージのサイズは自動的に決まります。また、TopDown モードで動作している時は、四角形で指定された場所にそのイメージの左上の位置が設定され、そうでない時はイメージの左下の位置が設定されます。どちらの場合も、72 DPI の出力になるように縦横が決められ、指定されたイメージが自然な大きさになるように設定されます。

Example

下記のコードは、グレーの背景に透明 GIF を追加します。

[C#]
XImage theImg = new XImage();
theImg.SetFile(Server.MapPath("../mypics/mypic.gif"));
Doc theDoc = new Doc();
theDoc.Color.String = "200 200 200";
theDoc.FillRect();
theDoc.Rect.String = "0 0 0 0";
theDoc.AddImageObject(theImg, true);
theImg.Clear();
theDoc.Save(Server.MapPath("docaddimageobject.pdf"));
theDoc.Clear();
[Visual Basic]
Dim theImg As XImage = New XImage()
theImg.SetFile(Server.MapPath("../mypics/mypic.gif"))
Dim theDoc As Doc = New Doc()
theDoc.Color.String = "200 200 200"
theDoc.FillRect()
theDoc.Rect.String = "0 0 0 0"
theDoc.AddImageObject(theImg, True)
theImg.Clear()
theDoc.Save(Server.MapPath("docaddimageobject.pdf"))
theDoc.Clear()

docaddimageobject.pdf


AddImageToChain Function

AddImageToChain メソッド

HTML/PostScript をマルチページ PDF に変換したものに、新しいページを追加します。

Syntax

[C#]
virtual int AddImageToChain(int id)
[Visual Basic]
Overridable Function AddImageToChain(id As Integer) As Integer

Throws Exceptions エラーの場合、Exception() が発生します。

Params
名称 | 説明
id | チェーンの中の前のオブジェクトの ID
戻り値 | 新しく追加したオブジェクトの ID

Notes

Web ページの中には1ページの PDF に収めるには大きすぎるものがあります。

Web ページをマルチページ PDF にするには、AddImageUrl や AddImageHtml を呼び出して最初のページを作成する必要があります。これらのメソッドから返された ID は連続したページの先頭をあらわします。

連続して次のページを追加するには、前のオブジェクト ID を引数にして AddImageToChain を呼び出します。

Web ページをマルチページ PDF にするのと同じように、Web ページを1ページの中で複数の列に分割するのにも使用できます。また、チェーンを分割して同じページのコピーを何ページも作成することもできます。

詳しくは、HTML / CSS の処理を参照してください。

同様に、PostScript (PS) のファイルが1ページに収まらない場合があります。

この PS ファイルをマルチページ PDF にするには、AddImageFile または AddImageData を呼び出して最初のページを作成する必要があります。これらのメソッドから返された ID は連続したページの先頭をあらわします。

連続して次のページを追加するには、前のオブジェクト ID を引数にして AddImageToChain を呼び出します。

Example

下記のコードは、HTML ページをマルチページの PDF ドキュメントにインポートする方法を示します。

最初に、 Doc オブジェクトを作成し、 HTMLをページの中央に来るようにします。

[C#]
Doc theDoc = new Doc();
theDoc.Rect.Inset(72, 144);
[Visual Basic]
Dim theDoc As Doc = New Doc()
theDoc.Rect.Inset(72, 144)

HTML の最初のページを追加します。取得したオブジェクトの ID を保存し、次のページを追加する時に使用します。

[C#]
int theID;
theID = theDoc.AddImageUrl("http://www.yahoo.com/");

[Visual Basic]
Dim theID As Integer
theID = theDoc.AddImageUrl("http://www.yahoo.com/")

最後のページになるまでページを追加します。

[C#]
while (true) {
  theDoc.FrameRect();
  if (!theDoc.Chainable(theID))
    break;
  theDoc.Page = theDoc.AddPage();
  theID = theDoc.AddImageToChain(theID);
}

[Visual Basic]
While True
  theDoc.FrameRect()
  If Not theDoc.Chainable(theID) Then
    Exit While
  End If
  theDoc.Page = theDoc.AddPage()
  theID = theDoc.AddImageToChain(theID)
End While

すべてのページを追加した後に、ページに追加したオブジェクトを平坦化します。この平坦化処理により、オブジェクトの ID とその連続性が無効になります。

[C#]
for (int i = 1; i <= theDoc.PageCount; i++) {
  theDoc.PageNumber = i;
  theDoc.Flatten();
}
[Visual Basic]
For i As Integer = 1 To theDoc.PageCount
  theDoc.PageNumber = i
  theDoc.Flatten()
Next

最後に保存します。

[C#]
theDoc.Save(Server.MapPath("pagedhtml.pdf"));
theDoc.Clear();

[Visual
            Basic]
theDoc.Save(Server.MapPath("pagedhtml.pdf"))
theDoc.Clear()

下記が実行結果です。

pagedhtml.pdf [Page 1]
pagedhtml.pdf [Page 2]


AddImageUrl Function

AddImageUrl メソッド

指定した URL で Web ページを作成します。

Syntax

[C#]
virtual int AddImageUrl(string url)
virtual int AddImageUrl(string url, bool paged, int width, bool disableCache)
[Visual Basic]
Overridable Function AddImageUrl(url As String) As Integer
Overridable Function AddImageUrl(url As String, paged As Boolean, width As Integer, disableCache As Boolean) As Integer

Throws Exceptions  エラーの場合、Exception() が発生します。

Params
名称 | 説明
url | 作成するページの URL。disableCache/XHtmlOptions.PageCacheEnabled の値に応じて、実際の値を変更できます。
paged | HTML をマルチページ PDF に変換するかしないかの指定。 デフォルトの XHtmlOptions.Paged プロパティをオーバーライドできます。
width | Web ページの表示幅(ピクセル)。 デフォルトの XHtmlOptions.BrowserWidthプロパティをオーバーライドできます。
disableCache | ページのキャッシュをしないかの指定。 詳細は、XHtmlOptions.PageCacheEnabled プロパティを参照してください。
戻り値 | 新しく追加したオブジェクトの ID

Notes

このメソッドはドキュメントに Web ページを追加します。

ページは現在の XHtmlOptions の設定に従って追加されます。

このメソッドは最初のページだけを作成するので、それ以降のページがある場合は、Paged パラメータを True に設定し、AddImageToChain メソッドを使用してください。これにより2ページ目以降も作成することができます。一般的に1ページだけでも表示する場合にはこのパラメータを True に設定してください。

Web ページは現在の Rect に収まるようにスケーリングされ、現在の Transform で変換処理を行うことができます。

キャッシュ ページがキャッシュされる場合があります。

AddImageUrl メソッドを使用している場合、URL が何らかの方法でキャッシュされていることがあります。 そうすると PDF は更新されても、その中の内容は同じ場合があります。詳しくは、HTML / CSS の処理を参照してください。

他には、PDF 自体がキャッシュされていることもあります。一般的には、直接ブラウザに PDF をストリームして、(Expire Content のような)特定の IIS の設定が無効になっている場合に起こり得ます。

まずは問題が何かをつきとめてください。PDF をクライアントに送るのと同時にディスクに保存してください。そうすることで PDF がキャッシュされていないか、あるいは PDF が何らかの方法でキャッシュされているか（同じ PDF が繰り返し作成されている状態）を特定できます。

PDF がキャッシュされている場合、IIS の設定を確認する必要があります。ABCpdf はキャッシュを行っていません(PDF をこのようにキャッシュできません)。これは、IIS/ASP、その間の プロキシサーバ、もしくはクライアントで発生している問題です。

このメソッドは、Web ページの URL だけでなく、MHT (MIME HTML)ファイルの URL も設定することができます。

MHT ファイルは一つの Web ページと関連するリソース(イメージやスタイルシート等)をひとつのコンパクトなアーカイブに格納します。IE を使用して Web ページを MHT フォーマットで保存できます。

メモ：複雑な Web ページから MHT ファイルが生成される場合、必要とされるリソースが時々欠落することがあります。この場合 ABCpdf はオリジナルの URL から欠落している項目のダウンロードを試みます。しかし、これらの項目が既に無効となっていると、ABCpdf は完全な出力を生成することはできません。

Example

下記のコードは、ABCpdf の Doc オブジェクトを作成し URL を追加して保存します。

[C#]

Doc theDoc = new Doc();
theDoc.AddImageUrl("http://www.google.com/");
theDoc.Save(Server.MapPath("htmlimport.pdf"));
theDoc.Clear();

[Visual Basic]
Dim theDoc As Doc = New Doc()
theDoc.AddImageUrl("http://www.google.com/")
theDoc.Save(Server.MapPath("htmlimport.pdf"))
theDoc.Clear()

htmlimport.pdf

マルチページ PDF に変換したドキュメントに新しいページを追加する方法については、AddImageToChain メソッドを参照してください。


AddLine Function

AddLine メソッド

現在のページに直線を追加します。

Syntax

[C#]
virtual int AddLine(double x1, double y1, double x2, double y2)
[Visual Basic]
Overridable Function AddLine(x1 As Double, y1 As Double, x2 As Double, y2 As Double) As Integer

Params
名称 | 説明
x1 | 横方向の開始点
x2 | 横方向の終了点
y1 | 縦方向の開始点
y2 | 縦方向の終了点
戻り値 | 新しく追加したグラフィックオブジェクトの ID

Notes

現在のページに直線を追加します。現在の Color、Width、Options で直線が描画されます。

AddLine メソッドは新しく追加したグラフィックオブジェクトの ID を返します。

Example

下記のコードは、ドキュメントに2本の水平線を追加します。1本目の線は青色で、2本目が緑色の線です。

[C#]
Doc theDoc = new Doc();
theDoc.Width = 24;
theDoc.Color.String = "0 0 255";
theDoc.AddLine(-50, 100, 999, 100);
theDoc.Color.String = "0 255 0";
theDoc.AddLine(-50, 400, 999, 400);
theDoc.Save(Server.MapPath("docaddline.pdf"));
theDoc.Clear();
[Visual Basic]
Dim theDoc As Doc = New Doc()
theDoc.Width = 24
theDoc.Color.String = "0 0 255"
theDoc.AddLine(-50, 100, 999, 100)
theDoc.Color.String = "0 255 0"
theDoc.AddLine(-50, 400, 999, 400)
theDoc.Save(Server.MapPath("docaddline.pdf"))
theDoc.Clear()

docaddline.pdf


AddObject Function

AddObject メソッド

ドキュメントに PDF オブジェクトを追加します。

Syntax

[C#]
virtual int AddObject(string text)
[Visual Basic]
Overridable Function AddObject(text As String) As Integer

Params
名称 | 説明
text | 追加するオブジェクト
戻り値 | 新しく追加したオブジェクトの ID

Notes

通常はこのメソッドを使用する必要はありません。しかし PDF の仕様で定義されていて ABCpdf .NET ではサポートしていないオブジェクトを追加する場合に役立ちます。

Text パラメータは PDF の仕様に従った文字列で設定する必要があります。文字列の中に変わった文字があれば、エスケープシーケンスによって処理する必要があります。PDF の詳細については、PDF の仕様を参照してください。

新しく追加されたオブジェクトを PDF ドキュメントの中で参照する必要があります。オブジェクトを参照しないと孤立した状態になり、ドキュメントの保存時に削除されます。

Example

下記のコードは、PDF のドキュメントに別のドキュメントの情報を追加します。

PDF にメタデータを挿入できる場所がいくつかあります。よく使用される場所としてはトレーラの Info エントリーと、カタログの Metadata エントリーがあります。Info エントリーは以前から広く使用されています。Metadata エントリーはもっと最近の保存場所で XML ベースとなっています。保存場所にある情報は一定にすることが重要です。もし情報が一定でなければ、違うアプリケーションで取得したメタデータが（Info エントリーと Metadata エントリーで）異なることがあります。

下記のサンプルは、データを一定にするために、Metadata エントリーの情報を削除します。こうすることでアプリケーションに強制的に Info エントリーの取得を行わせます。尚、Info エントリー同様、存在している Metadata エントリーの情報を変更するのは難しいことではありません。

[C#]
Doc theDoc = new Doc();
theDoc.Read(Server.MapPath("../mypics/sample.pdf"));
if (theDoc.GetInfo(-1, "/Info") == "")
  theDoc.SetInfo(-1, "/Info:Ref", theDoc.AddObject("<< >>").ToString());
theDoc.SetInfo(-1, "/Info*/Author:Text", "Arthur Dent");
theDoc.SetInfo(-1, "/Info*/Title:Text", "Musings on Life");
theDoc.SetInfo(-1, "/Info*/Subject:Text", "Philosophy");
theDoc.SetInfo(theDoc.Root, "/Metadata:Del", "");
theDoc.Save(Server.MapPath("docaddobject.pdf"));
theDoc.Clear();
[Visual Basic]
Dim theDoc As Doc = New Doc()
theDoc.Read(Server.MapPath("../mypics/sample.pdf"))
If theDoc.GetInfo(- 1, "/Info") = "" Then
  theDoc.SetInfo(- 1, "/Info:Ref", theDoc.AddObject("<< >>").ToString())
End If
theDoc.SetInfo(- 1, "/Info*/Author:Text", "Arthur Dent")
theDoc.SetInfo(- 1, "/Info*/Title:Text", "Musings on Life")
theDoc.SetInfo(- 1, "/Info*/Subject:Text", "Philosophy")
theDoc.SetInfo(theDoc.Root, "/Metadata:Del", "")
theDoc.Save(Server.MapPath("docaddobject.pdf"))
theDoc.Clear()


AddOval Function

AddOval メソッド

現在のページに楕円を追加します。

Syntax

[C#]
virtual int AddOval(bool filled)
[Visual Basic]
Overridable Function AddOval(filled As Boolean) As Integer

Params
名称 | 説明
filled | 楕円を塗りつぶします
戻り値 | 新しく追加したグラフィックオブジェクトの ID

Notes

現在のページに楕円を追加します。楕円は現在の color 、width 、options で描画されます。現在の rectangle を塗りつぶすためにスケーリングされます。楕円は、輪郭描画または塗りつぶされます。

AddOval メソッドは新しく追加したグラフィックオブジェクトの ID を返します。

Example

下記のコードは、ドキュメントに2つの楕円を追加します。楕円の輪郭の描画は半透明となっています。

[C#]
Doc theDoc = new Doc();
theDoc.Width = 80;
theDoc.Rect.Inset(50, 50);
theDoc.Color.String = "255 0 0";
theDoc.AddOval(true);
theDoc.Color.String = "0 255 0 a128";
theDoc.AddOval(false);
theDoc.Save(Server.MapPath("docaddoval.pdf"));
theDoc.Clear();
[Visual Basic]
Dim theDoc As Doc = New Doc()
theDoc.Width = 80
theDoc.Rect.Inset(50, 50)
theDoc.Color.String = "255 0 0"
theDoc.AddOval(True)
theDoc.Color.String = "0 255 0 a128"
theDoc.AddOval(False)
theDoc.Save(Server.MapPath("docaddoval.pdf"))
theDoc.Clear()

docaddoval.pdf


AddPage Function

AddPage メソッド

現在のドキュメントにページを追加します。

Syntax

[C#]
virtual int AddPage()
virtual int AddPage(int page)
[Visual Basic]
Overridable Function AddPage() As Integer
Overridable Function AddPage(page As Integer) As Integer

Params
名称 | 説明
page | ページの挿入位置(オプション) デフォルトで、ページはドキュメントの最後に追加されます。
戻り値 | 新しく追加したページオブジェクトの ID

Notes

現在のドキュメントにページを追加します。

AddPage メソッドは、新しく追加したページオブジェクトの Object ID を返します。この ID をドキュメントの Page プロパティに設定します。

theDoc.Page = theDoc.AddPage()

ドキュメントの最後にページが追加されます。しかし、PageNum を指定すると、その位置にページを挿入します。下記の例はドキュメントの先頭にページを挿入する例です。

theDoc.Page = theDoc.AddPage(1)

他のページはすべてドキュメントの後方へ移動します。

Example

下記のコードは、ドキュメントに3ページ追加する例です。各ページにはページ番号とオブジェクト ID が表示されます。

[C#]
Doc theDoc = new Doc();
theDoc.FontSize = 96; // big text
theDoc.HPos = 0.5; // centered
theDoc.VPos = 0.5; // ...
for (int i = 1; i <= 3; i++) {
  theDoc.Page = theDoc.AddPage();
  string txt;
  txt = "Page " + i.ToString() + ", ID=";
  txt = txt + theDoc.Page.ToString();
  theDoc.AddText(txt);
}
theDoc.Save(Server.MapPath("docaddpage.pdf"));
theDoc.Clear();
[Visual Basic]
Dim theDoc As Doc = New Doc()
theDoc.FontSize = 96 ' big text
theDoc.HPos = 0.5 ' centered
theDoc.VPos = 0.5 ' ...
For i As Integer = 1 To 3
  theDoc.Page = theDoc.AddPage()
  Dim txt As String
  txt = "Page " + i.ToString() + ", ID="
  txt = txt + theDoc.Page.ToString()
  theDoc.AddText(txt)
Next
theDoc.Save(Server.MapPath("docaddpage.pdf"))
theDoc.Clear()

docaddpage.pdf


AddPie Function

AddPie メソッド

現在のページに扇形を追加します。

Syntax

[C#]
virtual int AddPie(double angleStart, double angleEnd, bool filled)
[Visual Basic]
Overridable Function AddPie(angleStart As Double, angleEnd As Double, filled As Boolean) As Integer

Params
名称 | 説明
angleStart | 扇形の開始角度(度数)
angleEnd | 扇形の終了角度(度数)
filled | 扇形を塗りつぶします。
戻り値 | 新しく追加したグラフィックオブジェクトのオブジェクト ID

Notes

現在のページに扇形を追加します。扇形は現在の color 、width 、options で描画されます。

扇形は、現在の rectangle を塗りつぶす楕円の一部を描画します。描画は開始角度で始まり、弧は終了角度に達するまで描画されます。角度は3時をゼロとして反時計回りに計測されます。 扇形はこのメソッドの Filled パラメータに設定した値に応じて輪郭描画か塗りつぶしになります。

AddPie メソッドは新しく追加したグラフィックスオブジェクトの ID を返します。

Example

下記のコードはドキュメントに2つの扇形を追加します。

[C#]
Doc theDoc = new Doc();
theDoc.Width = 80;
theDoc.Rect.Inset(50, 50);
theDoc.Color.String = "255 0 0";
theDoc.AddPie(0, 90, true);
theDoc.Color.String = "0 255 0";
theDoc.AddPie(180, 270, false);
theDoc.Save(Server.MapPath("docaddpie.pdf"));
theDoc.Clear();
[Visual Basic]
Dim theDoc As Doc = New Doc()
theDoc.Width = 80
theDoc.Rect.Inset(50, 50)
theDoc.Color.String = "255 0 0"
theDoc.AddPie(0, 90, True)
theDoc.Color.String = "0 255 0"
theDoc.AddPie(180, 270, False)
theDoc.Save(Server.MapPath("docaddpie.pdf"))
theDoc.Clear()

docaddpie.pdf


AddPoly Function

AddPoly メソッド

現在のページに多角形を追加します。

Syntax

[C#]
virtual int AddPoly(string points, bool filled)
virtual int AddPoly(double[] points, bool filled)
virtual int AddPoly(double[] points, int index, int count, bool filled)
[Visual Basic]
Overridable Function AddPoly(points As String, filled As Boolean) As Integer
Overridable Function AddPoly(points() As Double, filled As Boolean) As Integer
Overridable Function AddPoly(points() As Double, index As Integer, count As Integer, filled As Boolean) As Integer

Params
名称 | 説明
points | 多角形の尖った部分の座標
index | 配列ポイントの最初の座標インデックス
count | 使用する配列ポイントの座標の数
filled | 多角形を塗りつぶします。
戻り値 | 新しく追加したグラフィックオブジェクトの ID

Notes

現在のページに多角形を追加します。多角形は、現在の color 、width 、options で描画されます。

points 文字列は多角形の座標を表す連続する数値です。文字列は "x1 y1 x2 y2 ... xN yN" 形式でなければなりません。数値はスペース、カンマ、またはセミコロンで区切られます。最初のポイントが最後のポイントと同じ場合、輪郭の描画前に角が閉じます。

AddPoly メソッドは新しく追加したグラフィックオブジェクトの ID を返します。

Example

下記のコードは、赤く塗りつぶされた星型の上に緑色で輪郭描画された透明の星形を追加します。

[C#]
Doc theDoc = new Doc();
theDoc.Width = 80;
theDoc.Color.String = "255 0 0";
theDoc.AddPoly("124 158 300 700 476 158 15 493 585 493 124 158", true);
theDoc.Color.String = "0 255 0 a128";
theDoc.AddPoly("124 158 300 700 476 158 15 493 585 493 124 158", false);
theDoc.Save(Server.MapPath("docaddpoly.pdf"));
theDoc.Clear();
[Visual Basic]
Dim theDoc As Doc = New Doc()
theDoc.Width = 80
theDoc.Color.String = "255 0 0"
theDoc.AddPoly("124 158 300 700 476 158 15 493 585 493 124 158", True)
theDoc.Color.String = "0 255 0 a128"
theDoc.AddPoly("124 158 300 700 476 158 15 493 585 493 124 158", False)
theDoc.Save(Server.MapPath("docaddpoly.pdf"))
theDoc.Clear()

docaddpoly.pdf


AddText Function

AddText メソッド

現在のページにテキストを追加します。

Syntax

[C#]
virtual int AddText(string text)
[Visual Basic]
Overridable Function AddText(text As String) As Integer

Params
名称 | 説明
text | ページに追加するテキスト
戻り値 | 新しく追加したテキストオブジェクトの ID

Notes

現在のページにテキストを追加します。

マルチスタイルテキストを追加したり、ページをまたいで連続してテキストを追加するには、HTML 形式テキスト の追加で使用される AddHtml メソッドを使用してください。

テキストは現在の Font、FontSize と Color で設定され、現在の Pos で指定した位置から描画を開始します。テキストが長い場合は折り返され、現在の Rect が埋め尽くされるまで下方向に追加されていきます。この領域内のテキストの位置は、HPos と VPos で決められます。

複数のテキストを接続できるので、テキストをある場所から別の場所へ流れるように設定することができます。これを行うには、最初に HTML のブロックを追加する必要があります。次に、（四角形やページなど）追加位置を調節した後、前の呼び出しで取得した ID を渡すたびに AddHtml メソッドを使用して複数の新しいテキストのブロックを追加します。

AddText メソッドは、新しく追加したテキストオブジェクトのオブジェクト ID を返します。テキストを追加できない場合は 0 を返します。これは長さが 0 の文字列を与えたり、1文字も描画できないほど四角形が小さい時に起こります。

通常は、テキストが大量で Rect に収まりきらない場合や Pos が Rect の最後だった場合に 0 が返されます。テキストではなく戻り値 0 が表示された場合、テキストサイズを確認し、FrameRect を使用して Rect が描画されるであろう位置を確認し、Pos が Rect の左上に設定されていることを確認してください。

Pos プロパティで指定した場所からテキストが描画されます。この時、テキストは現在の四角形で折り返されます。通常 Pos プロパティは現在の四角形の左上の位置を表します。しかし、テキストの描画開始位置を変更する場合、Rect を変えた後に Pos プロパティを変更できます。テキストが描画されると、Pos は次のテキストの挿入位置を表すために更新されます。

文字の位置は文字の左上で指定します。縦フォントを使用する時の位置についての詳細は、Pos プロパティを参照してください。FontSize プロパティはテキストの 1 行の高さを定義し、テキストのベースラインはその高さから80%下になります。

Example

下記のコードは、2つのフォントを交互に使ってテキストを追加します。このサンプルではテキストを追加した後に Pos を更新して次のテキストの挿入位置を示していますが、通常マルチスタイルテキストを追加する場合は AddHtml メソッドを使用する方が効果的です。

[C#]
Doc theDoc = new Doc();
theDoc.Page = theDoc.AddPage();
theDoc.FontSize = 48;
int theF1 = theDoc.AddFont("Times-Roman");
int theF2 = theDoc.AddFont("Times-Bold");
theDoc.Font = theF1;
theDoc.AddText("Gallia est omnis ");
theDoc.Font = theF2;
theDoc.AddText("tertiam Galli appellantur ");
theDoc.Font = theF1;
theDoc.AddText("divisa in partes tres, ");
theDoc.Font = theF2;
theDoc.AddText("quarum unam incolunt ");
theDoc.Font = theF1;
theDoc.AddText("Belgae, aliam Aquitani. ");
theDoc.Font = theF2;
theDoc.AddText("tertiam Galli appellantur");
theDoc.Save(Server.MapPath("docaddtext.pdf"));
theDoc.Clear();
[Visual Basic]
Dim theDoc As Doc = New Doc()
theDoc.Page = theDoc.AddPage()
theDoc.FontSize = 48
Dim theF1 As Integer = theDoc.AddFont("Times-Roman")
Dim theF2 As Integer = theDoc.AddFont("Times-Bold")
theDoc.Font = theF1
theDoc.AddText("Gallia est omnis ")
theDoc.Font = theF2
theDoc.AddText("tertiam Galli appellantur ")
theDoc.Font = theF1
theDoc.AddText("divisa in partes tres, ")
theDoc.Font = theF2
theDoc.AddText("quarum unam incolunt ")
theDoc.Font = theF1
theDoc.AddText("Belgae, aliam Aquitani. ")
theDoc.Font = theF2
theDoc.AddText("tertiam Galli appellantur")
theDoc.Save(Server.MapPath("docaddtext.pdf"))
theDoc.Clear()

docaddtext.pdf


Append Function

Append メソッド

ドキュメントの最後に PDF を追加します。

Syntax

[C#]
virtual void Append(Doc doc)
[Visual Basic]
Overridable Sub Append(doc As Doc)

Params
名称 | 説明
doc | 最後に追加するドキュメント

Notes

他の PDF の最後に PDF を追加します。

AddImageDoc メソッドを使用すると、1つの PDF から各ページを取り出して別の PDF に描画することができます。

多くのページを挿入する場合、個々にページを処理するより Append メソッドを使用するほうが高速です。また、ブックマークのような情報を処理する場合にも便利です。

form のフィールドを含んでいるページを挿入する場合、MakeFieldsUnique を呼び出してフィールドが複数のページに共有されないようにします。

Refactor はドキュメントを追加した時に新しく修正した余分なオブジェクトを削除するかどうかを定義します。Preflight の設定は、AddImageDoc メソッドを呼び出す前に出力先のドキュメントに含まれているオブジェクトの正当性を確認するかどうかを定義します。ドキュメントやページがメモリをたくさん使っていたり共通のオブジェクトがたくさんなければ、ページを追加する時は refactor と preflight を無効にしておいてドキュメントを保存する時に有効にした方が速く処理されます。この設定は SetInfo で変更できます。

Example

下記のコードは、2つの PDF ドキュメントを平坦化します。

[C#]
Doc theDoc1 = new Doc();
theDoc1.FontSize = 192;
theDoc1.HPos = 0.5;
theDoc1.VPos = 0.5;
theDoc1.AddText("Hello");
Doc theDoc2 = new Doc();
theDoc2.FontSize = 192;
theDoc2.HPos = 0.5;
theDoc2.VPos = 0.5;
theDoc2.AddText("World");
theDoc1.Append(theDoc2);
theDoc1.Save(Server.MapPath("docjoin.pdf"));
theDoc1.Clear();
theDoc2.Clear();
[Visual Basic]
Dim theDoc1 As Doc = New Doc()
theDoc1.FontSize = 192
theDoc1.HPos = 0.5
theDoc1.VPos = 0.5
theDoc1.AddText("Hello")
Dim theDoc2 As Doc = New Doc()
theDoc2.FontSize = 192
theDoc2.HPos = 0.5
theDoc2.VPos = 0.5
theDoc2.AddText("World")
theDoc1.Append(theDoc2)
theDoc1.Save(Server.MapPath("docjoin.pdf"))
theDoc1.Clear()
theDoc2.Clear()

docjoin.pdf [Page 1]

docjoin.pdf [Page 2]


Chainable Function

Chainable メソッド

オブジェクトを連結できるか判断します。

Syntax

[C#]
virtual bool Chainable(int id)
[Visual Basic]
Overridable Function Chainable(id As Integer) As Boolean

Params
名称 | 説明
id | 評価するオブジェクトのオブジェクト ID
戻り値 | オブジェクトを連結できるか判断します

Notes

オブジェクトを連結できるか判断するには、このメソッドを使用してください。

一部のオブジェクトは連結できます。テキストは出力される PDF のページからページへと連結できます。同様に Web ページもページからページへと連結できます。

このメソッドは、追加したオブジェクトを連結できるのか、それとも連結の終わりかを判断します。

テキスト、PostScript のイメージ、Web ページのみが連結可能です。ID は AddImageHtml、AddImageUrl、または AddHtml の呼び出しから取得されます。

Example

AddImageToChain メソッドを参照してください。


Clear Function

Clear メソッド

ドキュメントをクリアします。

Syntax

[C#]
virtual void Clear()

[Visual Basic]
Overridable Sub Clear()

Params
名称 | 説明
なし |

Notes

このメソッドはリソースを解放し、作成時の初期の状態にドキュメントを戻します。

Example

ありません。


ClearCachedDecompressedStreams Function

ClearCachedDecompressedStreams メソッド

ストリームオブジェクトのキャッシュされ解凍されたデータをクリアします。

Syntax

[C#]
virtual void ClearCachedDecompressedStreams()
virtual void ClearCachedDecompressedStreams(StreamObjectTypes types)
[Visual Basic]
Overridable Sub ClearCachedDecompressedStreams()
Overridable Sub ClearCachedDecompressedStreams(types As StreamObjectTypes)

Params
名称 | 説明
types | ストリームオブジェクトのキャッシュされ解凍されたデータをクリアします。デフォルト値は All です。

Notes

複数のストリームオブジェクトのキャッシュされ解凍されたデータをクリアします。

StreamObjectTypes 列挙体は次の値を組み合わせて取得できます。

  • None – ストリームオブジェクトなし
  • All – すべてのストリームオブジェクト
  • Others – 下の型以外のストリームオブジェクト
  • PixMap
  • FormXObject – フォームの XObject
  • TilingPattern – タイルパターンオブジェクト
  • StreamShadingObject – ストリームのシェーディングオブジェクト
  • StreamFunction – ストリームの関数オブジェクト

StreamObject.ClearCachedDecompressed メソッドを使用して、単一ストリームオブジェクトのデータをクリアできます。

Example

ありません。


Delete Function

Delete メソッド

ドキュメントに追加されているオブジェクトを削除します。

Syntax

[C#]
virtual void Delete(int id)
[Visual Basic]
Overridable Sub Delete(id As Integer)

Params
名称 | 説明
id | 削除するオブジェクトのID

Notes

ドキュメントに追加されているオブジェクトを削除します。

このメソッドはドキュメントからページを削除するために使用されます。たとえば、現在のページを削除するには以下のコードをご使用ください。

theDoc.Delete theDoc.Page

Example

下記のコードは、イメージを追加して、そのイメージのカラースペースが CMYK （コンポーネントの数が4）の時、そのオブジェクトを削除します。

[C#]
Doc theDoc = new Doc();
string thePath = Server.MapPath("../mypics/mypic.jpg");
int theID1 = theDoc.AddImageFile(thePath, 1);
int theID2 = theDoc.GetInfoInt(theID1, "XObject");
int theComps = theDoc.GetInfoInt(theID2, "Components");
if (theComps == 4) theDoc.Delete(theID1);
theDoc.Save(Server.MapPath("docdelete.pdf"));
theDoc.Clear();
[Visual Basic]
Dim theDoc As Doc = New Doc()
Dim thePath As String = Server.MapPath("../mypics/mypic.jpg")
Dim theID1 As Integer = theDoc.AddImageFile(thePath, 1)
Dim theID2 As Integer = theDoc.GetInfoInt(theID1,"XObject")
Dim theComps As Integer = theDoc.GetInfoInt(theID2,"Components")
If theComps = 4 Then theDoc.Delete(theID1)
theDoc.Save(Server.MapPath("docdelete.pdf"))
theDoc.Clear()

docdelete.pdf


EmbedFont Function

EmbedFont メソッド

ドキュメントにフォントを埋め込みます。

Syntax

[C#]
virtual int EmbedFont(string name)
virtual int EmbedFont(string name, LanguageType language)
virtual int EmbedFont(string name, LanguageType language, bool vertical)
virtual int EmbedFont(string name, LanguageType language, bool vertical, bool subset)
virtual int EmbedFont(string name, LanguageType language, bool vertical, bool subset, bool force)
[Visual Basic]
Overridable Function String) As Integer
Overridable Function EmbedFont(name As String, language As LanguageType) As Integer
Overridable Function EmbedFont(name As String, language As LanguageType, vertical As Boolean) As Integer
Overridable Function EmbedFont(name As String, language As LanguageType, vertical As Boolean, subset As Boolean) As Integer
Overridable Function EmbedFont(name As String, language As LanguageType, vertical As Boolean, subset As Boolean, force As Boolean) As Integer

Params
名称 | 説明
name | フォント名
language

使用する言語タイプ(オプション)。LanguageType 列挙体は次の値を取得できます。

  • Latin
  • Unicode
  • Korean
  • Japanese
  • ChineseS
  • ChineseT

詳細については、フォントと言語 を参照してください。デフォルトの言語タイプはラテン語 （LanguageType.Latin） です。
vertical

テキストを垂直方向に指定(オプション)

詳細については、フォントと言語 を参照してください。デフォルトは false でテキストは左から右方向へ進みます。

subset

フォントのサブセットを指定(オプション)

詳細については、フォントと言語 を参照してください。デフォルトは false でフォントのサブセットの設定はしません。

force

フォントの承認をオーバーライドします(オプション)。

フォントには、埋め込まれたライセンス情報が含まれている場合があります。デフォルトでは ABCpdf は埋め込みフォントを禁止しているので埋め込まれません。

この値をｔrueにすることによりフォントを埋め込むことができます。
戻り値 | 新しく追加したフォントオブジェクトの ID

Notes

ドキュメントにフォントを埋め込みます。

ドキュメントにフォントを埋め込むので、ドキュメントがすべてのシステムで完全に描画されます。

フォントを埋め込む代わりに AddFont メソッドを使用するのにはいくつか理由があります。フォントを埋め込むと PDF のサイズがかなり大きくなります。加えて、フォントを埋め込んだドキュメントを配布することは、フォント自体も配布することになります。従ってドキュメントを配布する場合はフォントの著作権について注意する必要があります。

フォント名の設定などの詳細については AddFont メソッドを参照してください。

EmbedFont メソッドは新しく追加したフォントオブジェクトの ID を返します。

theDoc.Font = theDoc.AddFont("Courier");

指定したフォントが見つからなければメソッドの戻り値は 0 になり、デフォルトのフォントが使用されます。

フォントはキャッシュされるので、アプリケーションが再開されるまで新しく追加されたフォントは ABCpdf で有効にはなりません。動的にフォントをロードするにはこのメソッドにフォントファイルのパスを設定します。そうするとフォントがキャッシュに追加され使用できます。動的にロードしているフォントファイルの移動や削除あるいはリネームを行うことはできません。

言語が文字列なのは？

ABCpdf の旧バージョンでは、言語パラメータは文字列だったので、この型のコードでした。

theDoc.EmbedFont("Courier", "Unicode")

最近のリリースでは、言語パラメータは列挙体に変更されました。ご使用の値が有効であることをコンパイラが確認できるので、これはより安全なコーディングの方法です。新しいコードはこのようになるはずです。

theDoc.EmbedFont("Courier", LanguageType.Unicode)

LanguageType 列挙体の項目名は旧バージョンで使われていた文字列の値と同じなので、コードを変更するには簡単な検索と命令を置換するだけです。"" の言語は、LanguageType.Latin と同等です。

Example

下記のコードは、ドキュメントに "Comic Sans MS" フォントを埋め込み、テキストを追加します。

[C#]
Doc theDoc = new Doc();
theDoc.FontSize = 216;
string theFont = "Comic Sans MS";
theDoc.Font = theDoc.EmbedFont(theFont);
theDoc.AddText(theFont);
theDoc.Save(Server.MapPath("docembedfont.pdf"));
theDoc.Clear();
[Visual Basic]
Dim theDoc As Doc = New Doc()
theDoc.FontSize = 216
Dim theFont As String = "Comic Sans MS"
theDoc.Font = theDoc.EmbedFont(theFont)
theDoc.AddText(theFont)
theDoc.Save(Server.MapPath("docembedfont.pdf"))
theDoc.Clear()

docembedfont.pdf


FillRect Function

FillRect メソッド

現在のページに塗りつぶした四角形を追加します。

Syntax

[C#]
virtual int FillRect()
virtual int FillRect(double radiusX, double radiusY)
[Visual Basic]
Overridable Function FillRect() As Integer
Overridable Function FillRect(radiusX As Double, radiusY As Double) As Integer

Params
名称 | 説明
radiusX | 丸角の時の水平方向の半径
radiusY | 丸角の時の垂直方向の半径
戻り値 | 新しく追加したグラフィックスオブジェクトの ID

Notes

現在のページに塗りつぶした四角形を追加します。四角形の位置と大きさは現在の Rect で決まり、塗りつぶしの色は現在の Color で決まります。また、他のオプションは現在の Options によって決まります。

RadiusX と RadiusY を設定することにより、角が丸い四角形を描画します。この値は角の円弧の半径を与えます。

なお、RadiusX に四角形の幅の1/2以上の値と RadiusY に四角形の高さの1/2以上の値を設定すると円弧が描画されます。また半分以下の値を設定すると角が丸い四角形を描画します。

FillRect メソッドは、新しく追加したグラフィックスオブジェクトの ID を返します。

Example

下記のコードは、青色で塗りつぶした四角形をドキュメントに追加します。これは、これは、ドキュメントの縁から縦100ポイント、横200ポイントのところに追加されます。

[C#]
Doc theDoc = new Doc();
theDoc.Rect.Inset(200, 100);
theDoc.Color.Blue = 255;
theDoc.FillRect();
theDoc.Save(Server.MapPath("docfillrect.pdf"));
theDoc.Clear();

[Visual Basic]
Dim theDoc As Doc = New Doc()
theDoc.Rect.Inset(200, 100)
theDoc.Color.Blue = 255
theDoc.FillRect()
theDoc.Save(Server.MapPath("docfillrect.pdf"))
theDoc.Clear()

docfillrect.pdf


Flatten Function

Flatten メソッド

現在ページの平坦化と圧縮を行います。

Syntax

[C#]
virtual int Flatten()

[Visual Basic]
Overridable Function Flatten() As Integer

Params
名称 | 説明
戻り値 | なし

Notes

ページに追加されたオブジェクトは、それぞれのレイヤとして保存されます。このメソッドは現在のページのすべてのレイヤを平坦化し、そのレイヤのデータを再圧縮します。

少ないレイヤのページの圧縮は効果が少ないです。しかし多くの項目の複雑なテーブルからなるページについては、そのサイズは1/5以下になることもあります。

注意： この結合処理は、ページにある現在の全項目を削除し、それらを新しく圧縮した項目に置き換えます。従って以前に AddText や FrameRect などによって取得したオブジェクト ID は無効になります。

Example

小さな表の作成と大きな表の作成を参照してください。


FrameRect Function

FrameRect メソッド

現在のページに四角形を追加します。

Syntax

[C#]
virtual int FrameRect()
virtual int FrameRect(bool inside)
virtual int FrameRect(double radiusX, double radiusY)
virtual int FrameRect(double radiusX, double radiusY, bool inside)
[Visual Basic]
Overridable Function FrameRect() As Integer
Overridable Function FrameRect(inside As Boolean) As Integer
Overridable Function FrameRect(radiusX As Double, radiusY As Double) As Integer
Overridable Function FrameRect(radiusX As Double, radiusY As Double, inside As Boolean) As Integer

Params
名称 | 説明
radiusX | 丸角の時の水平方向の半径
radiusY | 丸角の時の垂直方向の半径
inside | 四角形の中に枠を描きます(オプション)
戻り値 | 新しく追加したグラフィックスオブジェクトの ID

Notes

現在のページに四角形を追加します。四角形の位置と大きさは現在の Rect で決まり、色は現在の Color で決まり、線の太さは現在の Width で決まります。また、他のオプションは現在の Options によって決まります。

RadiusX と RadiusY を設定することにより、角が丸い四角形を描画します。この値は角の円弧の半径を設定します。

なお、RadiusX に四角形の幅の1/2以上の値と RadiusY に四角形の高さの1/2以上の値を設定すると円弧が描画されます。また半分以下の値を設定すると角が丸い四角形を描画します。

デフォルトでは、枠は現在の四角形の外側に描画されます。これは枠と内容がオーバーラップしないように内容を追加してから枠を描くことができます。 しかし、四角形の内側に枠を描画する場合は、Inside パラメータを true に設定します。

FrameRect メソッドは、新しく追加したグラフィックスオブジェクトの ID を返します。

Example

下記のコードは、ドキュメントに黒色の四角形（枠）を追加します。これは、ドキュメントの縁から縦100ポイント、横50ポイントのところに追加されます。

[C#]
Doc theDoc = new Doc();
theDoc.Rect.Inset(50, 100);
theDoc.FrameRect();
theDoc.Save(Server.MapPath("docframerect.pdf"));
theDoc.Clear();
[Visual Basic]
Dim theDoc As Doc = New Doc()
theDoc.Rect.Inset(50, 100)
theDoc.FrameRect()
theDoc.Save(Server.MapPath("docframerect.pdf"))
theDoc.Clear()

docframerect.pdf


GetData Function

GetData メソッド

PDF をメモリデータとして取得します。

Syntax

[C#]
virtual byte[] GetData()

[Visual Basic]
Overridable Function GetData() As Byte()

Throws Exceptions  エラーの場合、Exception() が発生します。

Params
名称 | 説明
戻り値 | Byte 配列の PDF ドキュメント

Notes

通常 Save メソッドを使用してドキュメントを保存しますが、ファイルではなくメモリーデータとして PDF を取得する場合があります。GetData メソッドはこの場合に使用します。

また、中間ファイルを使用しないで、直接クライアントのブラウザに PDF を描画することもできます。この場合、GetData メソッドで取得したデータを Response.BinaryWrite を使用して、直接 HTTP ストリームに書き出します。同様にデータベースのデータも取得することができます。

Refactor はドキュメントのデータを取得した時に新しい/修正した余分なオブジェクトを削除します。この設定は SetInfo を使用して変更できます。

PDF とインターネットエクスローラ インターネットエクスプローラと Acrobat の組み合わせにおいて、 まれに問題が発生することがあります。特に httpsや古いバージョンのエクスプローラを使用している場合はなおさらです。Windows、エクスプローラ、Acrobat が 一緒になって動作しているので、一般的にどこに問題があるかを明らかにするのは困難です。

エクスプローラは特定のコンテンツの型が原因で、PDF を HTML で表示する場合があります。この場合、%PDF で始まるテキストが表示されます。 以前に HTML を表示していたウィンドウに PDF データをストリームする際に起こる場合があります。

サーバー側のデバッグはコンテンツストリームの中に余分なデータを挿入する場合があります。一方、HTML にはこれは問題にならず、PDFのようなバイナリドキュメントが破壊されます。

コードがコンテンツストリームに余分なデータを挿入する場合がありますが、この場合 PDF を破壊します。エラーメッセージはこのような場合に発生します。

PDF のコンテンツを含んでいる HTTPS の使用はよく問題が起こる可能性があります。例えば Microsoft KB812935 を参照してください。

テスト用にコンテンツの配置を 'inline' から 'attachment' に変更する場合、ブラウザで表示するのではなくデータをダウンロード します。その後、Acrobat または16進法用のエディタを使用してダウンロードしたドキュメントを確認することができます。

他の方法としては、問題が PDF がキャッシュされているような場合、Web サイトのプロパティにある「コンテンツ に有効期限を設定する」のチェックボックスにチェックを付けます。

尚、下記の2つの方法を確認してみてください。

  1. 原因の１つとして ABCpdf を削除してください。クライアントにPDFを送るときに、この PDF をディスクに保存してください。 その後、ディスクから PDF データを読み込み、直接クライアントにストリームを行います。

  2. サンプルサイトは直接クライアントに PDF データをストリームします。従って、新しい仮想ディレクトリにこのサンプルサイトをインストールし、そのサンプルサイトで同じ現象が出るか確認してください。

Example

下記のコードは、PDF にテキストを追加し、クライアントのブラウザに直接その PDF を書き込みます。なお、このコードは ASP.NET 用のページ (hello.aspx) です。

[C#]
<% @Page Language="C#" %>
<% @Import Namespace="WebSupergoo.ABCpdf9" %>
<%
Doc theDoc = new Doc();
theDoc.FontSize = 96;
theDoc.AddText("Hello World");
byte[] theData = theDoc.GetData();
Response.Clear();
Response.ContentType = "application/pdf";
Response.AddHeader("content-disposition", "inline; filename=MyPDF.PDF");
Response.AddHeader("content-length", theData.Length.ToString());
Response.BinaryWrite(theData);
Response.End();
%>
[Visual Basic]
<% @Page Language="Visual Basic" %>
<% @Import Namespace="WebSupergoo.ABCpdf9" %>
<%
Dim theDoc As Doc = New Doc()
theDoc.FontSize = 96
theDoc.AddText("Hello World")
Dim theData() As Byte = theDoc.GetData()
Response.Clear()
Response.ContentType = "application/pdf"
Response.AddHeader("content-disposition", "inline; filename=MyPDF.PDF")
Response.AddHeader("content-length", theData.Length.ToString())
Response.BinaryWrite(theData)
Response.End()
%>

hello.asp


GetInfo Function

GetInfo メソッド

オブジェクトの情報を取得します。

Syntax

[C#]
virtual string GetInfo(int id, string type)
[Visual Basic]
Overridable Function GetInfo(id As Integer, type As String) As String

Params
名称 | 説明
id | 問い合わせるオブジェクトの ID
type | 取得する情報
戻り値 | 取得した情報

Notes

ドキュメントの更新後に、追加したオブジェクトの情報を取得する場合があります。たとえば、イメージの大きさや、テキストの挿入時に描画中の文字数を調べる場合です。このような情報を取得する時にこのメソッドを使用します。

すべてのオブジェクトがサポートしている基本情報があります。また特定のオブジェクト固有の情報もあります。オブジェクト固有の情報を検出するために、基本情報を使用してすべてのオブジェクトについて調べることができます。

オブジェクトがなかったり、問い合わせる情報がサポートされていない場合は、空文字列が返されます。

すべてのオブジェクトは ID と Type プロパティをサポートしています。詳細については、 基本オブジェクト を参照してください。

Example

下記のコードは、イメージのサイズを調べます。

[C#]
Doc theDoc = new Doc();
string thePath = Server.MapPath("../mypics/mypic.jpg");
int theID1 = theDoc.AddImageFile(thePath, 1);
int theID2 = theDoc.GetInfoInt(theID1, "XObject");
string theWidth = theDoc.GetInfo(theID2, "Width");
string theHeight = theDoc.GetInfo(theID2, "Height");
Response.Write("Width " + theWidth + "<br>");
Response.Write("Height " + theHeight + "<br>");
theDoc.Clear();
[Visual Basic]
Dim theDoc As Doc = New Doc()
Dim thePath As String = Server.MapPath("../mypics/mypic.jpg")
Dim theID1 As Integer = theDoc.AddImageFile(thePath, 1)
Dim theID2 As Integer = theDoc.GetInfoInt(theID1,"XObject")
Dim theWidth As String = theDoc.GetInfo(theID2,"Width")
Dim theHeight As String = theDoc.GetInfo(theID2,"Height")
Response.Write("Width " + theWidth + "<br>")
Response.Write("Height " + theHeight + "<br>")
theDoc.Clear()

処理結果

Width 480
Height 640


GetInfoDate Function

GetInfoDate メソッド

オブジェクトの日付情報を取得します。

Syntax

[C#]
virtual DateTime GetInfoDate(int id, string type)
virtual DateTime GetInfoDate(int id, string type, bool allowLocal)
[Visual Basic]
Overridable Function GetInfoDate(id As Integer, type As String) As DateTime
Overridable Function GetInfoDate(id As Integer, type As String, allowLocal As Boolean) As DateTime

Params
名称 | 説明
id | 問い合わせるオブジェクトのオブジェクト ID
type | 取得する情報型
allowLocal | 時間帯の情報を含んでいる日付でこのパラメータが True の場合、戻り値は（ローカルマシーンではなくその日付の時間帯の）現地時間になります。False （デフォルト）の場合、戻り値は UTC 時間になります。
戻り値 | 返された値

Notes

GetInfo メソッドと動きは同じですが、文字列ではなく日付時間を返します。情報を取得できない場合、または日付ではない場合、戻り値は DateTime ゼロになります。

PDF の日付にも時間が含まれています。時間は文字列として PDF に保存されるので、このメソッドは主に :Text オブジェクト型で使用されます。

Example

GetInfo メソッドを参照してください。


GetInfoDouble Function

GetInfoDouble メソッド

オブジェクトの数値情報を取得します。

Syntax

[C#]
virtual double GetInfoDouble(int id, string type)

[Visual Basic]
Overridable Function GetInfoDouble(id As Integer, type As String) As Double

Params
名称 | 説明
id | 取得するオブジェクトのオブジェクト ID
type | 取得する情報の型
戻り値 | 返された値

Notes

このメソッドは、GetInfo メソッドと同じように動作しますが、文字列の代わりに Double の値を返します。情報が取得できない場合または数値でない場合は戻り値が 0 になります。

Example

GetInfo メソッドを参照してください。


GetInfoInt Function

GetInfoInt メソッド

オブジェクトの数値情報を取得します。

Syntax

[C#]
virtual int GetInfoInt(int id, string type)
[Visual Basic]
Overridable Function GetInfoInt(id As Integer, type As String) As Integer

Params
名称 | 説明
id | 問い合わせるオブジェクトの ID
type | 取得する情報のタイプ
戻り値 | 取得した整数

Notes

このメソッドは、GetInfo メソッドと同じように動作しますが、文字列の代わりに Integer の値を返します。情報が取得できない場合または数値でない場合は戻り値が 0 になります。

Example

GetInfo を参照してください。


GetInfoInt64 Function

GetInfoInt64 メソッド

オブジェクトに関する数値情報を取得します。

Syntax

[C#]
virtual long GetInfoInt64(int id, string type)
[Visual Basic]
Overridable Function GetInfoInt64(id As Integer, type As String) As Long

Params
名称 | 説明
id | 問い合わせるオブジェクトのオブジェクト ID
type | 取得する情報の型
戻り値 | 返された整数

Notes

このメソッドは GetInfo メソッドと同じ動作ですが、文字列ではなく 64-bit の整数を返します。情報を取得できない、または数値ではない場合、戻り値はゼロになります。

Example

GetInfo メソッドを参照してください。


GetStream Function

GetStream メソッド

PDF を未処理のデータストリームとして取得します。

Syntax

[C#]
virtual Stream GetStream()

[Visual Basic]
Overridable Function GetStream() As Stream

Throws Exceptions エラーの場合、 Exception() が発生します。

Params
名称 | 説明
戻り値 | ストリームとしての PDF 文書

Notes

通常は Save メソッドを使用してドキュメントを保存しますが、場合によっては PDF をファイルではなく未処理データとして取得しなければならない場合があります。その場合、GetStream メソッドを使用できます。

中間ファイルを経由しないで直接クライアントブラウザに PDF を出力したい場合があります。GetStream メソッドで取得したデータを、Response.BinaryWrite を使用して直接 HTTP ストリームに出力できます。同様に、未処理データを取得してデータベースに入れたい場合があります。

CLR にはオブジェクトあたり 2 GB の制限があるため、GetData メソッドは 2 GB より大きいドキュメント データを返すことができません。2 GB より大きいドキュメントに対してこのメソッドを使用し、不要になった時点で返されたストリームを処分してください。

Refactor の設定は、ドキュメント データを取得する時に不要なドキュメントを削除するかを定義します。SetInfo メソッドを使用してこの設定を変更できます。

PDF とインターネット エクスプローラ PDFs and Internet Explorer. インターネット エクスプローラと Acrobat の組み合わせ、特に http でまたはエクスプローラの旧バージョンを使用して、必ず問題がないとは限りません。OS、エクスプローラ、Acrobat の相互作用があり、どれもが原因となり得るので特定するのは困難です。

エクスプローラは特定のコンテンツにひっかかって、PDF を HTML として表示してしまうことがあります。その場合、%PDF で始まるランダムなテキストが表示されます。これは、HTML を表示していたウィンドウに PDF データをストリームする場合に起こり得ます。

サーバー側のデバッグで、コンテンツ ストリームに余分なデータが入ってしまうことがあります。これは HTML にとっては問題なくても、PDF のようなバイナリ文書は壊れてしまいます。

コードが何かの事情でコンテンツ ストリームに余分なデータを入れてしまうことがあります。これも PDF を壊してしまいます。一般的にはこの種の破壊でエラーメッセージが発生します。

HTTP 圧縮は ブラウザに返す前に PDF ストリームを圧縮してしまうことがあります。ブラウザはこの種の圧縮を処理できますが、Acrobat はできません。IEWatch のようなツールを使用して、ブラウザに返されたヘッダーを調べることでこの種の圧縮が使用されているかを確認できます。IIS 6 の圧縮をお使いの場合、IIS 6 のリソースキットから IIS のメタベース エクスプローラを使用して、ページ単位でそれを無効にすることができます。

HTTPS を使用して PDF を開こうとすると問題が生じる場合があります。例えば、Microsoft KB812935 をご覧ください。

テストのために content-disposition を 'inline' から 'attachment' に変更する場合があります。こうすることでデータをブラウザに表示するのではなくダウンロードが可能となり、Acrobat またはバイナリ エディタを使ってそのダウンロードしたドキュメントを確認することができます。

他には、PDF のキャッシュに関する問題なら、ウェブサイトのプロパティの「コンテンツに有効期限を設定する」にチェックを付けたい場合があります。

お勧めの手順は2つです。

  1. まず、ABCpdf を起因として削除してみることです。PDF をクライアントに送って、同時にディスクにも保存しておけば PDF は無事です。更に進みたければ、ディスクから PDF データを読み込んで、直接クライアントにストリームしても構いません。
  2. サンプルサイトは PDF データを直接クライアントにストリームします。従って、新しい仮想ディレクトリにサンプルサイトをインストールし、そこで同じ問題が起こるか確認してください。動くようなら、原因が見つかるまで現在のコードベースとサンプルサイトのコードベースを互いに近づけるだけです。

Example

下記のコードは ASP.NET の「hello.aspx」ページのすべてのコードです。PDF にテキストを追加し、それを直接クライアントブラウザに書き込む方法を示しています。

[C#]
<% @Page Language="C#" %>
<% @Import Namespace="WebSupergoo.ABCpdf9" %>
<%
Doc theDoc = new Doc();
theDoc.FontSize = 96;
theDoc.AddText("Hello World");
using (Stream theStream = theDoc.GetStream()) {
  Response.Clear();
  Response.ContentType = "application/pdf";
  Response.AddHeader("content-disposition", "inline; filename=MyPDF.PDF");
  Response.AddHeader("content-length", theStream.Length.ToString());
  long theLen = theStream.Length;
  byte[] theData = new byte[theLen >= 32768? 32768: (int)theLen];
  while (theLen > 0) {
    theStream.Read(theData, 0, theData.Length);
    Response.BinaryWrite(theData);
    theLen -= theData.Length;
    if (theLen < theData.Length && theLen > 0)
      theData = new byte[(int)theLen];
  }
}
Response.End();
%>
[Visual Basic]
<% @Page Language="Visual Basic" %>
<% @Import Namespace="WebSupergoo.ABCpdf9" %>
<%
Dim theDoc As Doc = New Doc()
theDoc.FontSize = 96
theDoc.AddText("Hello World")
Using theStream As Stream = theDoc.GetStream()
  Response.Clear()
  Response.ContentType = "application/pdf"
  Response.AddHeader("content-disposition", "inline; filename=MyPDF.PDF")
  Response.AddHeader("content-length", theStream.Length.ToString())
  Dim theLen As Long = theStream.Length;
  Dim theData() As Byte = New Byte(Math.Min(32768, theLen))
  Do While theLen > 0
    theStream.Read(theData, 0, theData.Length)
    Response.BinaryWrite(theData)
    theLen -= theData.Length
    If theLen < theData.Length AndAlso theLen > 0 Then
      theData = New Byte(theLen)
    End If
  Loop
End Using
Response.End()
%>

hello.asp


GetText Function

GetText メソッド

現在のページから指定したフォーマットでコンテンツを取得します。

Syntax

[C#]
virtual string GetText(string type)
virtual string GetText(Page.TextType type, bool includeAnnotations)
[Visual Basic]
Overridable Function GetText(type As String) As String
Overridable Function GetText(type As Page.TextType, includeAnnotations As Boolean) As String

Params
名称 | 説明
type | 取得するコンテンツのフォーマット
includeAnnotations | フィールドや注釈のテキストを含めるかどうか
戻り値 | 取得したコンテンツ

Notes

ページからコンテンツを取得します。

このメソッドは、現在のページのコンテンツに簡単にアクセスするのに役立ちます。テキストの抽出方法に関する詳細は、Page.GetText メソッドをご覧ください。

サポートしているフォーマットは、"Text"、"SVG"、"SVG+"、"SVG+2"、"RawText" です。以前のコードとの互換性を保つには type を String として指定できますが、新しいコードでは、Page.TextType 列挙体を取得する、このメソッドのオーバーロードを使用してください。

テキストはレイアウト順となり、読み込まれた順と異なることがあります。ABCpdf はあいまいな状況の中で、テキストの項目をできる限り正しく結合します。

現行の ABCpdf はテキストの抽出において旧バージョンよりも高性能です。ABCpdf 8 の簡易モデルに依存される場合は、互換性を保つために "RawText" フォーマットをお使いいただけます。

Example

ありません。


Read Function

Read メソッド

PDF を読み込みます。

Syntax

[C#]
virtual void Read(string path)
virtual void Read(byte[] data)
virtual void Read(Stream stream)
virtual void Read(string path, string password)
virtual void Read(byte[] data, string password)
virtual void Read(Stream stream, string password)
virtual void Read(string path, XReadOptions options)
virtual void Read(byte[] data, XReadOptions options)
virtual void Read(Stream stream, XReadOptions options)
[Visual Basic]
Overridable Sub Read(path As String)
Overridable Sub Read(data() As Byte)
Overridable Sub Read(stream As Stream)
Overridable Sub Read(path As String, password As String)
Overridable Sub Read(data() As Byte, password As String)
Overridable Sub Read(stream As Stream, password As String)
Overridable Sub Read(path As String, options As XReadOptions)
Overridable Sub Read(data() As Byte, options As XReadOptions)
Overridable Sub Read(stream As Stream, options As XReadOptions)

Throws Exceptions エラーの場合、 Exception() が発生します。

Params
名称 | 説明
path | PDF、OpenOffice.org、SVG、または XPS ドキュメントのソースファイルのパス
data | PDF のソースデータ
stream | ソース PDF またはドキュメントのストリーム
password | ドキュメントを開くためのパスワード
options | 読込設定

Notes

このメソッドはドキュメントオブジェクトに PDF を読み込みます。この時、既存のドキュメントの内容は廃棄されます。プロパティはすべてデフォルトに戻されます。

PDF をファイルパスや PDF データとして設定できます。PDF データはバイト配列になっている必要があります。また有効なパスワードを与えることにより暗号化した PDF ドキュメントを開くこともできます。

PDF 以外のファイルを読み込んだ場合、PDF ファイルの中の色が少し違うのがわかるかもしれません。PDF は他のファイル形式とは違ったアルファ ブレンディングを行います。アルファ ブレンディングについての説明は、SwfImportOperation.Import を参照してください。

その他のファイル形式 このメソッドは他のファイル形式のインポートもサポートします。

OpenOffice.org がインストールしてあれば、Microsoft Word (.doc、.docx)、Microsoft Excel (.xls、.xlsx)、Rich Text Format (.rtf)、PowerPoint (.ppt、.pptx)、WordPerfect (.wpd)、Lotus 1-2-3 (.wk1) や AutoCAD (.dxf) をこのメソッドのファイルパスに渡して読み込むことができます。

Microsoft Office と .NET 3.5 がインストールしてあれば、互換性のある Microsoft Office のドキュメントをこのメソッドのファイルパスに渡すことができます。デフォルトでは、Microsoft Office のインポート処理を直接行いますが、XpsAny 読込モジュールを使用することを明示的に指定すれば、XPS プリンタドライバからもインポートできます。ABCpdf は Office 2007 とそれ以降で動作します。

SVG や SVGZ ドキュメントもこのメソッドのファイルパスに渡して PDF に変換することができます。ABCpdf は SVG Tiny の仕様書に基づいて SVG のサブセットをサポートしています。詳細については SVG のサポートを参照してください。また、XPS または EPS ドキュメントのファイルパスを渡して PDF に変換することもできます。

JPEG や TIFF などのイメージ形式のパスを使用できます。ABCpdf はマルチイメージをマルチページドキュメントとしてインポートします。サポートしているイメージ形式は大ざっぱに言うと XImage オブジェクトでサポートされているイメージ形式です。

ファイルパスではなくストリームまたはデータの場合、options パラメータを指定する必要があります。これはデータの場合、ABCpdf が使用するモジュール型を自動的に決定できるファイル拡張子を持っていないためです。他の形式を指定しなかった場合、すべてのデータを PDF と見なします。

options パラメータを指定することにより、インポート処理を完全に制御できます。options パラメータを指定せずにドキュメントを読み込むのは、デフォルトの XReadOptions オブジェクトを使用してドキュメントを読み込むのと同じです。

この読込命令が完了すると Page プロパティにドキュメントの最初のページの ID が設定されます。Rect プロパティと MediaBox プロパティはドキュメントの最初のページの大きさを設定します。

ABCpdf は高度なジャストインタイムの手法でオブジェクトのロードを行います。これにより要求されたオブジェクトだけがメモリーに読み込まれるので、大きなドキュメントの修正を行ってもサーバの負荷は最小限に抑えられます。Doc オブジェクトが読み込まれている間はオリジナルの PDF ドキュメントは利用可能でなければならないので、PDF が Doc オブジェクトに読み込まれている間は PDF ファイルの修正や上書きはできません。その PDF ファイルを別の場所に保存して、その PDF が Doc オブジェクトで使われなくなった後にその2つのファイルを入れ替える（Clear メソッド、Dispose メソッド、または Read メソッドを呼び出して別の PDF ファイルに入れ替える）必要があります。

オブジェクトの削除はオブジェクトへのすべての参照が解放されている必要があります。そのためにはドキュメントの各オブジェクトを確認するしかありません。そこで、オブジェクトを削除するには、ドキュメントのすべてのオブジェクトをロードする必要があり、大きなドキュメントの場合これはサーバに大きな負荷をかけます。暗号化されたドキュメントを読み込みむとサーバに大きな負荷をかけます。なぜならオブジェクトの削除のように、ドキュメントのすべてのオブジェクトをロードされる必要があるからです。

Read メソッドは普通の PDF ドキュメントと同じように eForm の FDF ドキュメントの読み込みにも使用されます。ほとんどの PDF の命令は FDF ドキュメントでは動作しませんが、Unicode の文字列を返すために GetInfo メソッドを使用してフィールドの値を問い合わせることができます。

ドキュメントの修正 ABCpdf は PDF ドキュメントを開いて修正、保存ができます。

ABCpdf は PDF ドキュメント上に描画したり、ページを追加/削除したり、ドキュメントのデータを修正することができます。しかし PDF ドキュメントの構成上、既存内容を編集することはできません。

従ってデータを表示する空白があれば、そこで処理できます。既存の内容に白いボックスを描画して、その上に描画できます。

しかし、既に PDF にあるテキストを編集することはできません。

Example

下記のコードは、PDF ドキュメントのすべてのページに大きな赤色の数字を追加します。

[C#]
Doc theDoc = new Doc();
theDoc.Read(Server.MapPath("../mypics/sample.pdf"));
theDoc.FontSize = 500;
theDoc.Color.String = "255 0 0";
theDoc.HPos = 0.5;
theDoc.VPos = 0.3;
int theCount = theDoc.PageCount;
for (int i = 1; i <= theCount; i++) {
  theDoc.PageNumber = i;
  theDoc.AddText(i.ToString());
}
theDoc.Save(Server.MapPath("docread.pdf"));
theDoc.Clear();
[Visual Basic]
Dim theDoc As Doc = New Doc()
theDoc.Read(Server.MapPath("../mypics/sample.pdf"))
theDoc.FontSize = 500
theDoc.Color.String = "255 0 0"
theDoc.HPos = 0.5
theDoc.VPos = 0.3
Dim theCount As Integer = theDoc.PageCount
For i As Integer = 1 To theCount
  theDoc.PageNumber = i
  theDoc.AddText(i.ToString())
Next
theDoc.Save(Server.MapPath("docread.pdf"))
theDoc.Clear()

docsave.pdf - [Page 1] | docsave.pdf - [Page 2]
docsave.pdf - [Page 3] | docsave.pdf - [Page 4]


RemapPages Method

RemapPages メソッド

並べ替えやコピー、削除のためにページの配置替えを行います。

Syntax

[C#]
virtual void RemapPages(string pages)
virtual void RemapPages(int[] pages)
virtual void RemapPages(int[] pages, int index, int count)
[Visual Basic]
Overridable Sub RemapPages(pages As String)
Overridable Sub RemapPages(pages() As Integer)
Overridable Sub RemapPages(pages() As Integer, index As Integer, count As Integer)

Params
名称 | 説明
pages | ページ番号リスト
index | pages 配列の最初のページ番号のインデックス
count | 使用する pages 配列内のページ番号の数

Notes

このメソッドは、ドキュメントのページの配置替えを行います。ページの並べ替えやコピー、削除に使用します。

ページ番号リストに基づいて、 ドキュメントのページを並べ替えます。ページ番号が繰り返し設定されるとそのページは重複し、ページ番号が省略されるとそのページも削除されます。

ページ番号はスペース、カンマ、セミコロンを使用して区切ることができます。ドキュメントの最初のページは1ページになります。従って、4ページあるドキュメントのページ番号を逆にするには、"4 3 2 1"を使用します。

ページがコピーされ、その中に Form のフィールドがある場合、MakeFieldsUnique メソッドを呼び出してフィールドが複数のページで共有されないようにします。

Example

下記のコードは、ドキュメントの全ページを逆に表示します。

[C#]
Doc theDoc = new Doc();
theDoc.Read(Server.MapPath("../mypics/sample.pdf"));
theDoc.FontSize = 500;
theDoc.Color.String = "255 0 0";
theDoc.HPos = 0.5;
theDoc.VPos = 0.3;
int theCount = theDoc.PageCount;
string thePages = "";
for (int i = 1; i <= theCount; i++) {
  theDoc.PageNumber = i;
  theDoc.AddText(i.ToString());
  thePages = thePages + (theCount - i + 1).ToString() + " ";
}
theDoc.RemapPages(thePages);
theDoc.Save(Server.MapPath("docremappages.pdf"));
theDoc.Clear();
[Visual Basic]
Dim theDoc As Doc = New Doc()
theDoc.Read(Server.MapPath("../mypics/sample.pdf"))
theDoc.FontSize = 500
theDoc.Color.String = "255 0 0"
theDoc.HPos = 0.5
theDoc.VPos = 0.3
Dim theCount As Integer = theDoc.PageCount
Dim thePages As String = ""
For i As Integer = 1 To theCount
  theDoc.PageNumber = i
  theDoc.AddText(i.ToString())
  thePages = thePages + (theCount - i + 1).ToString() + " "
Next
theDoc.RemapPages(thePages)
theDoc.Save(Server.MapPath("docremappages.pdf"))
theDoc.Clear()

docremappages.pdf [Page 1] | docremappages.pdf [Page 2]
docremappages.pdf [Page 3] | docremappages.pdf [Page 4]


Save Function

Save メソッド

ドキュメントを PDF として保存します。

Syntax

[C#]
virtual void Save(string path)
virtual void Save(Stream stream)
[Visual Basic]
Overridable Sub Save(path As String)
Overridable Sub Save(stream As Stream)

Throws Exceptions エラーの場合、Exception() が発生します。

Params
名称 | 説明
path | ドキュメントのファイルパス
stream | 保存先ストリーム

Notes

現在のドキュメントを PDF、XPS、または SWF として保存します。また、ファイルが存在すれば上書きされます。

XPS は、指定したパスの末尾が ".xps" の場合のみ保存されます。それには .NET Framework 3.0 が必要です。指定したパスは保存先になります。

SWF は指定したパスの末尾が ".swf" の場合のみ保存されます。Doc.SaveOptions.Template プロパティが null の場合、現在のページは Doc.SaveOptions.TemplateData.MeasureDpiX や Doc.SaveOptions.TemplateData.MeasureDpiY プロパティを使用して Fash ムービーの領域として指定した場合は Rect で保存されます。それ以外は、Doc.SaveOptions.Template プロパティは SWF ファイルのパスを指定します。保存された SWF ファイルは SWF テンプレートファイルで始まり、フレームがドキュメントの各ページに追加されます。追加されたスクリプトは ActionScript 2 になります。テンプレートのバージョンが Flash Player 7 またはそれ以下の場合、保存されたファイルのバージョンは Flash Player 8 になります。追加されたフレームやテンプレートのスクリプトとの関係については、SwfExport サンプルを参照してください。

イメージは、次のいづれかの場合に JPEG で出力されます。
❶ イメージが DeviceGray または DeviceRGB で、既に（その上に他の圧縮が何もされていない） JPEG の場合
❷ イメージがインデックス付きのカラースペースではなく、幅と高さが少なくとも8ピクセルある場合

❶ の場合、オリジナルの JPEG データが使用されるので、あらかじめイメージを圧縮しておくことで品質を制御できます。
❷ の場合、80%の品質で出力されます。

DOCX は指定したパスが拡張子 ".docx" で終わる場合にのみエクスポートされ、.NET Framework 3.0 が必要です。指定されたパスはエクスポート先のファイルパスとして使用されます。

HTML は指定したパスが拡張子 ".html" か ".htm" で終わる場合にのみエクスポートされ、.NET Framework 3.0 が必要です。指定されたパスはエクスポート先のファイルパスとして使用されます。ストリームに保存する場合は、下述の通り、Doc.SaveOptions.FileExtension の他に Doc.SaveOptions.Folder プロパティも設定しなければなりません。

ストリームに保存する場合、XPS と SWF は Doc.SaveOptions.FileExtension プロパティによってサポートされます。このプロパティを ".xps"、"xps"、".swf" か "swf" に設定してください。それ以外は PDF で出力されます。このプロパティは、パスのファイル拡張子を使うファイルに保存する場合は無視されます。重要：XPS の場合、ストリームは読み取りも書き込みも可能でなければなりません（つまり、単なる FileAccess.Write ではなく FileAccess.ReadWrite でなければなりません）。そうでない場合、処理は失敗します。

ABCpdf は高度なジャストインタイムの手法でオブジェクトのロードを行います。これにより要求されたオブジェクトだけがメモリーに読み込まれるので、大きなドキュメントの修正を行ってもサーバの負荷は最小限に抑えられます。 この時、PDF ファイルを読み込んだり修正したり上書きすることができません。従ってその PDF ファイルを他の場所に保存し、Doc オブジェクトが PDF を使い終わってから、その2つのファイルを入れ替える（Clear、Dispose、または Read メソッドを呼び出して別の PDF ファイルを読み込む）必要があります。

PDF をオリジナルデータとして取得するには、GetData メソッドが使用できます。

Refactor はドキュメントの保存時に新しい/修正された不要なオブジェクトを削除します。SetInfo メソッドを使用してこの設定を変更できます。

バージョン ABCpdf は使用する規格によってバージョンを自動的に設定します。1.1 の規格のみを使用する場合、1.1 の PDF を書き込みます。1.3 の規格を使用すると、1.3 の PDF を書き込みます。また 1.4 の規格を使用すると、1.4 の PDF を書き込みます。1.5 や 1.6 も同じです。

PDF テンプレートを使用している場合や、別の PDF から描画している場合、最終的な出力はテンプレートで使用されている最低バージョンになります。これは実際にある多数のアプリケーションにおいて ABCpdf で作成される最終的な出力バージョンを設定する要素になります。

1.6 の規格を使用していない場合、1.6 のドキュメントを作成する利点は全くありません。これを行うのは、単に Acrobat の旧式バージョンを使用しているユーザがドキュメントにアクセスしないようにするためです。

Example

下記のコードは、PDF にテキストを追加して保存します。

[C#]
Doc theDoc = new Doc();
theDoc.FontSize = 96;
theDoc.AddText("Hello World");
theDoc.Save(Server.MapPath("docsave.pdf"));
theDoc.Clear();
[Visual Basic]
Dim theDoc As Doc = New Doc()
theDoc.FontSize = 96
theDoc.AddText("Hello World")
theDoc.Save(Server.MapPath("docsave.pdf"))
theDoc.Clear()

docsave.pdf


SetInfo Function

SetInfo メソッド

オブジェクトの情報を設定します。

Syntax

[C#]
virtual void SetInfo(int id, string type, string info)
virtual void SetInfo(int id, string type, int info)
virtual void SetInfo(int id, string type, double info)
virtual void SetInfo(int id, string type, DateTime info)
[Visual Basic]
Overridable Sub SetInfo(id As Integer, type As String, info As String)
Overridable Sub SetInfo(id As Integer, type As String, info As Integer)
Overridable Sub SetInfo(id As Integer, type As String, info As Double)
Overridable Sub SetInfo(id As Integer, type As String, info As DateTime)

Params
名称 | 説明
id | 修正するオブジェクトの ID
type | 挿入する値の型
info | 挿入する値。 • 整数/浮動小数点の情報を取得するオーバーロードは、管理された文字列オブジェクトを作成せずに不変のカルチャでこのパラメータを文字列表現（PDF で使用されるような数値）に変換します。 • 日付時間の情報を取得するオーバーロードは、このパラメータを文字列表現（PDF の日付文字列）に変換するので、主に :Text オブジェクト型で使用されます。

Notes

このメソッドを使用してドキュメントの情報を設定します。なお、情報を取得する場合は GetInfo メソッドを使用してください。

オブジェクト型がサポートしているプロパティについての詳細は 基本オブジェクトを参照してください。

Example

DateTime 情報を取得するオーバーロードの使用例については、ドキュメントのプロパティの設定を参照してください。

下記のコードは、PDF の2ページ目を開きます。

[C#]
Doc theDoc = new Doc();
theDoc.Read(Server.MapPath("../mypics/sample.pdf"));
int thePages = theDoc.GetInfoInt(theDoc.Root, "Pages");
int thePage2 = theDoc.GetInfoInt(thePages, "Page 2");
string theAction = "[ " + thePage2.ToString() + " 0 R /Fit ]";
theDoc.SetInfo(theDoc.Root, "/OpenAction", theAction);
theDoc.Save(Server.MapPath("docsetinfo.pdf"));
theDoc.Clear();
[Visual Basic]
Dim theDoc As Doc = New Doc()
theDoc.Read(Server.MapPath("../mypics/sample.pdf"))
Dim thePages As Integer = theDoc.GetInfoInt(theDoc.Root,"Pages")
Dim thePage2 As Integer = theDoc.GetInfoInt(thePages,"Page 2")
Dim theAction As String = "[ " + thePage2.ToString() + " 0 R /Fit ]"
theDoc.SetInfo(theDoc.Root, "/OpenAction", theAction)
theDoc.Save(Server.MapPath("docsetinfo.pdf"))
theDoc.Clear()

Open Action について

PDF を開いた時の表示方法は PDF に含まれるフラグによって決まります。以下にフラグの一般的な組み合わせをいくつか示します。詳しくは、Adobe PDF Specification を参照してください。

アウトラインの表示

theDoc.SetInfo(theDoc.Root, "/PageMode", "/UseOutlines")

サムネイルの表示

theDoc.SetInfo theDoc.Root, "/PageMode", "/UseThumbs"

2ページを並べて表示

theDoc.SetInfo(theDoc.Root, "/PageLayout", "/TwoColumnLeft")

ドキュメントを開いた時に印刷ダイアログを表示する

theDoc.SetInfo(theDoc.Root, "/OpenAction", "<< /Type /Action /S /Named /N /Print >>")

現在のページに200%の大きさで開く

theDoc.SetInfo(theDoc.Root, "/OpenAction", "[ " + theDoc.Page.ToString() +" 0 R /XYZ null null 2 ]")

現在のページにドキュメントを合わせる

theDoc.SetInfo(theDoc.Root, "/OpenAction", "[ " + theDoc.Page.ToString() + " 0 R /FitH " + theDoc.MediaBox.Height.ToString() + " ]")


Bookmark プロパティ

型 | デフォルト値 | 読み取り専用 | 説明
[C#] Objects.Bookmark [Visual Basic] Objects.Bookmark | なし | いいえ | ドキュメントの最上位にあるブックマーク

Notes
このドキュメントに関連付けられているブックマーク。

通常 PDF ドキュメントにはページ間を容易に移動するためのブックマークのリストがあります。Acrobat では、このナビゲートはブックマークタブにあります。PDF の仕様では、この構造をドキュメントの アウトラインと呼びます。

ドキュメントのアウトラインはブックマークの階層構造を含んでいます。階層構造の上位にあるブックマークはこのプロパティを使用して利用することができます。

詳しくは、Objects.Bookmark オブジェクトを参照してください。

Example

ありません。


Color プロパティ
型 | デフォルト値 | 読み取り専用 | 説明
[C#] XColor [Visual Basic] XColor | 黒 | いいえ | 現在の描画や塗りつぶしの色

Notes

このプロパティは線や図形またはテキストの描画および塗りつぶしの色を設定します。

Example

下記のコードは、赤色の背景で PDF ドキュメントを作成します。

[C#]
Doc theDoc = new Doc();
theDoc.Color.String = "255 0 0";
theDoc.FillRect();
theDoc.Save(Server.MapPath("doccolor.pdf"));
theDoc.Clear();
[Visual Basic]
Dim theDoc As Doc = New Doc()
theDoc.Color.String = "255 0 0"
theDoc.FillRect()
theDoc.Save(Server.MapPath("doccolor.pdf"))
theDoc.Clear()

doccolor.pdf


ColorSpace プロパティ
型 | デフォルト値 | 読み取り専用 | 説明
[C#] int [Visual Basic] Integer | 0 | いいえ | 現在のカラースペースの ID

Notes
このプロパティは現在のカラースペースを設定します。

Color のタイプを設定する時に、このプロパティを使用します。色のタイプが合わない時はデフォルト(デバイス)のカラースペースが使用されます。

たとえば、CMYK のカラースペースを追加し、それを ColorSpace プロパティに設定します。この時、使用するすべての CMYK の色はこのカラースペースに基づいて定義されます。しかし、RGB とグレースケールはデフォルト(デバイス)のカラースペースに基づいて定義され続けます。

カラースペースの ID を取得するには、AddColorSpaceFile や AddColorSpaceSpot のメソッドを使用して現在のドキュメントにカラースペースを追加する必要があります。

Example

下記のコードはイメージに色を付ける方法を示します。現在のページにイメージを追加し、それをグレースケールに変換します。そして新しくカラースペースを作成し、そのイメージにそのカラースペースを設定します。

[C#]
Doc theDoc = new Doc();
theDoc.Rect.Inset(20, 20);

XImage theImg = new XImage();
theImg.SetFile(Server.MapPath("../mypics/mypic.jpg"));
int theID = theDoc.AddImageObject(theImg, false);

theID = theDoc.GetInfoInt(theID, "XObject");
theDoc.SetInfo(theID, "Grayscale", "");

int theCS = theDoc.AddColorSpaceSpot("MAGENTA", "0 100 0 0");
theDoc.SetInfo(theID, "/ColorSpace:Ref", theCS.ToString());
theDoc.SetInfo(theID, "/Decode", "[1 0]");

theDoc.Save(Server.MapPath("doccolorspace.pdf"));
theDoc.Clear();
[Visual Basic]
Dim theDoc As Doc = New Doc()
theDoc.Rect.Inset(20, 20)

Dim theImg As XImage = New XImage()
theImg.SetFile(Server.MapPath("../mypics/mypic.jpg"))
Dim theID As Integer = theDoc.AddImageObject(theImg, False)

theID = theDoc.GetInfoInt(theID, "XObject")
theDoc.SetInfo(theID, "Grayscale", "")

Dim theCS As Integer = theDoc.AddColorSpaceSpot("MAGENTA", "0 100 0 0")
theDoc.SetInfo(theID, "/ColorSpace:Ref", theCS.ToString())
theDoc.SetInfo(theID, "/Decode", "[1 0]")

theDoc.Save(Server.MapPath("doccolorspace.pdf"))
theDoc.Clear()

doccolorspace.pdf


CropBox プロパティ

型 | デフォルト | 読み取り専用 | 説明
[C#] XRect [Visual Basic] XRect | Letter Size [0, 0, 612, 792]. | はい | 表示されている現在のドキュメントのページサイズ

Notes

このプロパティは、現在のページの CropBox （表示されているページサイズ）を示します。

現在のページの CropBox の変更方法については、MediaBox プロパティを参照してください。

Example

ありません。


Encryption プロパティ
型 | デフォルト値 | 読み取り専用 | 説明
[C#] XEncryption [Visual Basic] XEncryption | 暗号化なし | いいえ | 暗号化の設定

Notes

このプロパティは現在の暗号化の設定を行います。ドキュメントを保存する時に、このプロパティで設定された暗号化が用いられます。デフォルトではドキュメントの暗号化は行われません。PDF ドキュメントを読み込むと、ドキュメントの作成時に使用された暗号化の設定がこのプロパティに反映されます。

PDF の暗号化は2つの異なるパスワード(ユーザパスワードとオーナーパスワード)で行われます。ドキュメントを開く時に、このユーザパスワードかオーナーパスワードの問い合わせがあります。しかし、オーナーパスワードを与えなければ、認証が適用されたドキュメントへのアクセスが制限されます。

一般的に、PDF の暗号化はドキュメントに認証を設定するために使用されます。ユーザパスワードは空白のままにし、オーナーパスワードだけが与えられます。もしユーザパスワードが無くても、PDF リーダはパスワードの要求をしません。しかし、どんな認証も自動的に適用されます。こうして、どんなユーザもドキュメントを開くことができますが、テキストのコピーやドキュメントの印刷、イメージの取り出しなどの命令の実行に制限を加えることができます。

Example

下記のコードは、128 ビット暗号化キーを用いて PDF ドキュメントを保存します。ドキュメントからのテキストのコピーの制限を設定します。

[C#]
Doc theDoc = new Doc();
theDoc.FontSize = 96;
theDoc.AddText("Hello World!");
theDoc.Encryption.Type = 2;
theDoc.Encryption.CanCopy = false;
theDoc.Encryption.OwnerPassword = "owner";
theDoc.Save(Server.MapPath("docencrypt.pdf"));
[Visual Basic]
Dim theDoc As Doc = New Doc()
theDoc.FontSize = 96
theDoc.AddText("Hello World!")
theDoc.Encryption.Type = 2
theDoc.Encryption.CanCopy = false
theDoc.Encryption.OwnerPassword = "owner"
theDoc.Save(Server.MapPath("docencrypt.pdf"))


Font プロパティ
型 | デフォルト値 | 読み取り専用 | 説明
[C#] int [Visual Basic] Integer | 0 | いいえ | 現在のフォント ID

Notes
このプロパティは現在のフォントの ID をあらわし、AddText のようなメソッドでドキュメントに追加するテキストのフォントを設定します。

フォントIDを取得するには、 AddFont メソッドで現在のドキュメントにフォントを追加する必要があります。

Example

下記のコードは、ドキュメントに2つのテキストを追加します。最初のテキストは Helvetica で、2番目が Courier フォントを使用します。

[C#]
Doc theDoc = new Doc();
theDoc.FontSize = 96; // big text
theDoc.Font = theDoc.AddFont("Helvetica");
theDoc.AddText("Helvetica Text.");
theDoc.Font = theDoc.AddFont("Courier");
theDoc.AddText("Courier Text.");
theDoc.Save(Server.MapPath("docfont.pdf"));
theDoc.Clear();
[Visual Basic]
Dim theDoc As Doc = New Doc()
theDoc.FontSize = 96 ' big text
theDoc.Font = theDoc.AddFont("Helvetica")
theDoc.AddText("Helvetica Text.")
theDoc.Font = theDoc.AddFont("Courier")
theDoc.AddText("Courier Text.")
theDoc.Save(Server.MapPath("docfont.pdf"))
theDoc.Clear()

docfont.pdf


FontSize プロパティ
型 | デフォルト値 | 読み取り専用 | 説明
[C#] int [Visual Basic] Integer | 10 | いいえ | 現在のテキストのサイズ

Notes
このプロパティは AddText のようなメソッドでドキュメントに追加するテキストのサイズを設定します。

FontSize プロパティは XTextStyle.Size プロパティに相当しますが、Size と違い整数で設定します。

フォントサイズは現在の Units で設定されます。

Example

下記のコードは、ドキュメントに2つのテキストを追加します。最初のテキストは 96 ポイントで、2番目が 192 ポイントで設定します。

[C#]
Doc theDoc = new Doc();
theDoc.FontSize = 96;
theDoc.AddText("Small ");
theDoc.FontSize = 192;
theDoc.AddText("Big");
theDoc.Save(Server.MapPath("docfontsize.pdf"));
theDoc.Clear();
[Visual Basic]
Dim theDoc As Doc = New Doc()
theDoc.FontSize = 96
theDoc.AddText("Small ")
theDoc.FontSize = 192
theDoc.AddText("Big")
theDoc.Save(Server.MapPath("docfontsize.pdf"))
theDoc.Clear()

docfontsize.pdf


Form プロパティ

型 | デフォルト値 | 読み取り専用 | 説明
[C#] XForm [Visual Basic] XForm | なし | いいえ | ドキュメントのフォームとフィールド

Notes

このプロパティは、ドキュメントのフォームやフィールドの確認や処理を行うことができます。

一般的にフィールドは、完全修飾名を使用して取得されます。フルネームは、ピリオドをデリミタとして使用してフィールドの階層構造から特定のフィールドオブジェクトまでのパスを記述します。

フィールドが取得されると、その値の取得や変更ができます。ドキュメントにフィールドを永久的にスタンプするには、Field.Stamp メソッドを使用して固定的にスタンプすることができます。

詳しくは、XForm オブジェクトを参照してください。

Example

ありません。


HPos プロパティ
型 | デフォルト値 | 読み取り専用 | 説明
[C#] double [Visual Basic] Double | 0.0 | いいえ | 現在の水平方向の位置

Notes
このプロパティはテキストの領域の横方向の位置を設定します。

この位置の値は左端からの距離で、テキストのアラインメントを設定します。0 は左端、0.5 は中央、1 は右端をあらわします。

縦方向のテキストのアラインメントは VPos プロパティで設定します。またテキストの両端揃えを行うには、 XTextStyle.Justification プロパティを使用してください。

Example

下記のコードは、ドキュメントに2つのテキストを追加します。最初のテキストは左端に設定し、2番目のテキストは右端に設定します。

[C#]
Doc theDoc = new Doc();
theDoc.FontSize = 96;
theDoc.Rect.Magnify(1.0, 0.5);
theDoc.Rect.Inset(40, 40);
theDoc.FrameRect();
theDoc.AddText("Left justified text...");
theDoc.Rect.Move(0, theDoc.Rect.Height + 80);
theDoc.FrameRect();
theDoc.HPos = 1.0;
theDoc.AddText("Right justified text...");
theDoc.Save(Server.MapPath("dochpos.pdf"));
theDoc.Clear();
[Visual Basic]
Dim theDoc As Doc = New Doc()
theDoc.FontSize = 96
theDoc.Rect.Magnify(1.0, 0.5)
theDoc.Rect.Inset(40, 40)
theDoc.FrameRect()
theDoc.AddText("Left justified text...")
theDoc.Rect.Move(0, theDoc.Rect.Height + 80)
theDoc.FrameRect()
theDoc.HPos = 1.0
theDoc.AddText("Right justified text...")
theDoc.Save(Server.MapPath("dochpos.pdf"))
theDoc.Clear()

dochpos.pdf


HtmlOptions プロパティ

型 | デフォルト値 | 読み取り専用 | 説明
[C#] XHtmlOptions [Visual Basic] XHtmlOptions | なし | いいえ | HTML や URL のレンダリングオプションと制御

Notes

このプロパティは、HTML の作成方法を制御します。

このオブジェクトのプロパティは、AddImageUrl メソッドや AddImageHtml メソッドの操作方法を制御するために使用できます。

このオブジェクトのメソッドは、Doc.AddImageUrl メソッドや Doc.AddImageHtml メソッドを使用して追加されたオブジェクトに作用します。一部は内容を変更します。その他は、追加された内容に関する情報を提供します。

詳細は、XHtmlOptions オブジェクトを参照してください。

Example

ありません。


Layer プロパティ
型 | デフォルト値 | 読み取り専用 | 説明
[C#] int [Visual Basic] Integer | 1 | いいえ | 新しい項目の挿入位置

Notes
このプロパティは新しい項目の挿入位置を設定します。

デフォルトの値は 1 で1番上に挿入します。もしページが 10 レイヤからなっている場合に1番下に挿入すると、11番目の位置に挿入することになります。

Example

ありません。


LayerCount プロパティ
型 | デフォルト値 | 読み取り専用 | 説明
[C#] int [Visual Basic] Integer | なし | はい | 現在のページのレイヤの数

Notes
このプロパティは現在のページのレイヤの数をあらわします。

AddText や AddImage などのメソッドをコールすることによりページにレイヤが追加されます。詳しくは Layer プロパティを参照してください。

Example

ありません。


License プロパティ
型 | デフォルト値 | 読み取り専用 | 説明
[C#] string [Visual Basic] String | 説明を参照してください | いいえ | 現在のライセンス情報

Notes
このプロパティはライセンス情報をあらわします。

もし体験版の ABCpdf .NET がインストールしてあれば、残りの使用可能日時が設定されます。

また、正式版の ABCpdf .NET がインストールしてあれば、ライセンスの表記と設定したキーが設定されます。

Example

ASP のコードによるサンプルです。

[C#]
Doc theDoc = new Doc();
Response.Write(theDoc.License);
[Visual Basic]
Dim theDoc As Doc = New Doc()
Response.Write(theDoc.License)

体験版の例

Trial License - 26 days 02:18:19 Left


MediaBox プロパティ
型 | デフォルト値 | 読み取り専用 | 説明
[C#] XRect [Visual Basic] XRect | レターサイズ [0, 0, 612, 792] | いいえ | 現在ドキュメントのページサイズ

Notes

このプロパティは現在のページサイズを表します。また AddPage プロパティで作成した新しいページのサイズにもなります。

注意： MediaBox プロパティを変更しても現在の Rect は変更されません。基本的にコードは以下のようになります。

[C#]
theDoc.MediaBox.String = "0 0 200 300";
theDoc.Rect.String = theDoc.MediaBox.String;
[Visual Basic]
theDoc.MediaBox.String = "0 0 200 300"
theDoc.Rect.String = theDoc.MediaBox.String

このプロパティを設定した後に AddPage を呼び出して作成されたページのサイズが変更されます。しかし、既に作成されているページサイズが変わる訳ではありません。作成済みのページサイズを変更するには、SetInfo メソッドを使用してください。

例：

[C#]
theDoc.SetInfo(theDoc.Page, "/MediaBox:Rect", "0 0 200 300");
[Visual Basic]
theDoc.SetInfo(theDoc.Page, "/MediaBox:Rect", "0 0 200 300")

CropBox、BleedBox、TrimBox、ArtBox など、その他のページサイズを変更する場合も同様です。

[C#]
theDoc.SetInfo(theDoc.Page, "/CropBox:Rect", "20 20 180 280");
[Visual Basic]
theDoc.SetInfo(theDoc.Page, "/CropBox:Rect", "20 20 180 280")

デフォルトのページサイズはよく使われるページサイズですが、PDF のページサイズをそれぞれ違うサイズにしなければならない場合があります。その場合に実際の大きさではなく用紙サイズで設定することもできます。詳しくは Rect.String プロパティを参照してください。

Example

下記のコードは、PDF ドキュメントのページサイズをそれぞれレター、A4、B5 で作成します。

[C#]
Doc theDoc = new Doc();
theDoc.Page = theDoc.AddPage();
theDoc.MediaBox.String = "A4";
theDoc.Page = theDoc.AddPage();
theDoc.MediaBox.String = "B5";
theDoc.Page = theDoc.AddPage();
theDoc.Save(Server.MapPath("docmediabox.pdf"));
theDoc.Clear();
[Visual Basic]
Dim theDoc As Doc = New Doc()
theDoc.Page = theDoc.AddPage()
theDoc.MediaBox.String = "A4"
theDoc.Page = theDoc.AddPage()
theDoc.MediaBox.String = "B5"
theDoc.Page = theDoc.AddPage()
theDoc.Save(Server.MapPath("docmediabox.pdf"))
theDoc.Clear()


ObjectSoup プロパティ
型 | デフォルト値 | 読み取り専用 | 説明
[C#] ObjectSoup [Visual Basic] ObjectSoup | なし | はい | PDF を構成するオブジェクトのコレクション

Notes

このプロパティはドキュメントの ObjectSoup のリファレンスを含んでいます。ObjectSoup は、PDF ドキュメントの内容を構成する間接オブジェクトのコレクションです。

ObjectSoup あるいは ObjectSoup の内容は、変更内容を確認するまで変更しないでください。不適切な変更があると PDF の出力に支障をきたします。

Example

ありません。


Options プロパティ
型 | デフォルト値 | 読み取り専用 | 説明
[C#] string [Visual Basic] String | "" | いいえ | 現在の状態のオプション

Notes

このプロパティは PDF の描画を低レベルで制御できる、高度な機能です。この機能を使用する場合は、十分に注意する必要があります。間違って使用すると、PDF のドキュメントを壊す場合があります。

このプロパティ値は、状態が確立してから描画が行われるまでの間に PDF のコンテンツストリームに挿入されます。これは破線の描画によく使われます。

FillRect、FrameRect、AddLine、AddArc メソッドはこのプロパティを使用します。

このプロパティの詳細については、PDF Reference を参照してください。

Example

下記のコードは、ドキュメントに円弧を追加します。円弧を実線ではなく破線にするためにこのプロパティを使用しています。

[C#]
Doc theDoc = new Doc();
theDoc.Width = 24;
theDoc.Color.String = "0 120 0";
theDoc.Options = "[6 10] 6 d";
theDoc.AddArc(0, 270, 300, 400, 200, 300);
theDoc.Save(Server.MapPath("docoptions.pdf"));
theDoc.Clear();
[Visual Basic]
Dim theDoc As Doc = New Doc()
theDoc.Width = 24
theDoc.Color.String = "0 120 0"
theDoc.Options = "[6 10] 6 d"
theDoc.AddArc(0, 270, 300, 400, 200, 300)
theDoc.Save(Server.MapPath("docoptions.pdf"))
theDoc.Clear()

docoptions.pdf


Page プロパティ
型 | デフォルト値 | 読み取り専用 | 説明
[C#] int [Visual Basic] Integer | 0 | いいえ | 現在のページ ID

Notes

このプロパティは現在のページの ID を表します。ドキュメントに新しいオブジェクトが追加される時、現在のページに追加されます。

例えば、 AddText、 AddLine、AddImage、FrameRect、 FillRect はすべて現在のページで処理されます。

このプロパティを変更すると、Pos プロパティは現在の Rect の左上にリセットされます。

注意： PageNumber プロパティは Page プロパティとは違います。Page プロパティは AddPage メソッドで返されたオブジェクト ID を表します。一方、PageNumber は 1～ PageCount までのインデックスを使ってページを表します。

現在のページを設定するには、Page か PageNumber を使用します。

ページの指定が無ければ、現在のページがドキュメントの最初のページになります。

Example

下記のコードは、2ページのドキュメントを作成し、各ページにテキストを追加します。

[C#]
Doc theDoc = new Doc();
theDoc.FontSize = 96; // big text
theDoc.Page = theDoc.AddPage();
theDoc.AddText("Page One");
theDoc.Page = theDoc.AddPage();
theDoc.AddText("Page Two");
theDoc.Save(Server.MapPath("docpage.pdf"));
theDoc.Clear();
[Visual Basic]
Dim theDoc As Doc = New Doc()
theDoc.FontSize = 96 ' big text
theDoc.Page = theDoc.AddPage()
theDoc.AddText("Page One")
theDoc.Page = theDoc.AddPage()
theDoc.AddText("Page Two")
theDoc.Save(Server.MapPath("docpage.pdf"))
theDoc.Clear()

docpage.pdf


PageCount プロパティ
型 | デフォルト値 | 読み取り専用 | 説明
[C#] int [Visual Basic] Integer | 0 | いいえ | ドキュメントのページ数

Notes
このプロパティはドキュメントのページ数をあらわします。

AddPage メソッドでドキュメントにページを追加できます。

Example

ありません。


PageNumber プロパティ
型 | デフォルト値 | 読み取り専用 | 説明
[C#] int [Visual Basic] Integer | 0 | いいえ | 現在のページのページ番号

Notes

このプロパティは現在のページ番号を表します。ドキュメントに新しいオブジェクトが追加される時、現在のページに追加されます。

例えば、 AddText、 AddLine、AddImage、FrameRect、FillRect はすべて現在のページで処理されます。

このプロパティを変更すると、Pos プロパティは現在の Rect の左上にリセットされます。

注意： PageNumber プロパティは Page プロパティとは違います。Page プロパティは AddPage メソッドで返されたオブジェクト ID を表します。一方、PageNumber は 1～ PageCount までのインデックスを使ってページを表します。

現在のページを設定するには、Page か PageNumber を使用します。

ページの指定が無ければ、現在のページがドキュメントの最初のページになります。

最適化のヒント

PDF ドキュメントは、ページに速くアクセスするために最適化されます。ページ番号を指定してドキュメントの特定ページに移動すると操作が速くなります。現在ページを指定してその前後のページを簡単に見つける方法があるので、このようにページにアクセスすると、とりわけ速くなります。

しかし、PageNumber プロパティを取得するのは想像以上に大変だということはあまり知られていません。ABCpdf は前回 PageNumber にアクセスしたのと同じ PDF であるかがわからないので、必ずしも前回と同じページ番号を返すことができません。何らかの方法でページを再編成し、少なくともそのページをテストで取得して現在のページ番号を確認しなければならないという最悪の事態を想定しなければなりません。一番最悪な場合では、ページツリー全体に目を通して現在のページがどこであるかを確認しなければなりません。

通常、ページ番号の取得はそんなに難しくはありませんが、何千回もアクセスされるコードを記述する場合は大変です。ループで PageNumber を繰り返し取得する場合は、PageNumber を個別の変数に保存し、代わりにそれを使用することを検討してください。そうすることで最適化が簡単になります。

Example

ありません。


Pos Property

Pos プロパティ

型 | デフォルト値 | 読み取り専用 | 説明
[C#] XPoint [Visual Basic] XPoint | 現在の Rect の左上 | いいえ | 現在の描画位置

Notes

このプロパティは現在の描画位置をあらわします。これは AddText メソッドで使用されます。

Page や Rect プロパティを変更すると、Pos は自動的に現在の Rect の左上にリセットされます。AddText メソッドでテキストを追加すると、Pos は次のテキストの挿入位置(最後に描画された文字の直後)に更新されます。

AddText または AddHtml メソッドでテキストを追加する時に、Pos は文字の左上端を指定し、テキストの行は左から右に配置され、上から下に進みます。しかし、Font プロパティが縦フォント（縦書きモードのフォント/FontObject.WritingMode）に設定されている場合、東アジアの文字のようにテキストの列が上から下に配置され、右から左に進みます。Pos の値は Font プロパティでは変更されません。これは、縦書きのテキストで処理するので、内部変換（テキスト処理の表現だけ）が Pos に適用され（Pos だけで他には適用されません）、すべての横方向の位置決めは縦座標に適用されるからです。また、その反対も同じです。（XTextStyle.CharSpacing や XTextStyle.WordSpacing の処理は writing モードに依存することを忘れないでください。）変換処理は座標系を時計回りに90度づつ回転し、Rect の左上端を Rect の右上端にマップします。従って、Pos のデフォルトの初期値は縦書きのテキストが Rect の左上端から開始するよう指定します。これは、東アジアフォントを使用する Windows のテキスト処理と似ており、フォント名の前に @ を付けて最終段階に変換処理だけ行います。

縦フォントのテキストと横フォントのテキストの位置を決めずに追加してもきちんと挿入されないので、Font プロパティが縦フォントに設定されている時に AddHtml メソッドを使用して横フォントを使用するのはお勧めしません。また、その逆も同じです。

Example

下記のコードは、テキストの挿入位置を変えて PDF ドキュメントを作成します。

[C#]
Doc theDoc = new Doc();
theDoc.FontSize = 48;
for (int i = 1; i <= 8; i++) {
  theDoc.Pos.X = i * 40;
  theDoc.Pos.Y = i * 80;
  theDoc.AddText("Pos = " + theDoc.Pos.String);
}
theDoc.Save(Server.MapPath("docpos.pdf"));
theDoc.Clear();
[Visual Basic]
Dim theDoc As Doc = New Doc()
theDoc.FontSize = 48
For i As Integer = 1 To 8
  theDoc.Pos.X = i * 40
  theDoc.Pos.Y = i * 80
  theDoc.AddText("Pos = " + theDoc.Pos.String)
Next
theDoc.Save(Server.MapPath("docpos.pdf"))
theDoc.Clear()

docpos.pdf


Rect プロパティ
型 | デフォルト値 | 読み取り専用 | 説明
[C#] XRect [Visual Basic] XRect | 現在のページサイズ | いいえ | 描画命令で使用する現在の四角形

Notes

このプロパティは現在の四角形の大きさをあらわします。これは、AddText や AddImage、FrameRect および FillRect など多くの命令で使用されます。

XRect オブジェクトは2次元座標の四角形をあらわします。XRect オブジェクトのプロパティは領域の左下と右上をあらわします。

AddText は現在の四角形にテキストを折り返して追加します。

AddImage は現在の四角形にに合うようにイメージをスケーリングして追加します。

FrameRect は現在の四角形のフレームを追加し、FillRect は現在の四角形を塗りつぶします。

このプロパティを変更すると、Pos プロパティは Rect の左上にリセットされます。

Example

下記のコードは、中心が同じ四角形（枠）をたくさん含んだドキュメントを作成します。

[C#]
Doc theDoc = new Doc();
theDoc.Rect.String = "50 50 550 550";
for (int i = 1; i <= 20; i++) {
  theDoc.FrameRect();
  theDoc.Rect.Inset(20, 20);
}
theDoc.Save(Server.MapPath("docrect.pdf"));
theDoc.Clear();
[Visual Basic]
Dim theDoc As Doc = New Doc()
theDoc.Rect.String = "50 50 550 550"
For i As Integer = 1 To 20
  theDoc.FrameRect()
  theDoc.Rect.Inset(20, 20)
Next
theDoc.Save(Server.MapPath("docrect.pdf"))
theDoc.Clear()

docrect.pdf


Rendering プロパティ

型 | デフォルト値 | 読み取り専用 | 説明
[C#] XRendering [Visual Basic] XRendering | なし | いいえ | レンダリングオプションと制御

Notes
このプロパティは、PDF のレンダリングの方法を制御します。

詳細は、XRendering を参照してください。

Example

ありません。


Root プロパティ
型 | デフォルト値 | 読み取り専用 | 説明
[C#] int [Visual Basic] Integer | 0 | はい | ルートのカタログオブジェクト

Notes
このプロパティはカタログオブジェクトの ID を表します。

カタログとは PDF ドキュメント全体のルートで、ルートの Page オブジェクトと Outline オブジェクトの情報を含んでいます。

動的に作成したドキュメントでは、そのドキュメントのルートは常に1つです。しかし、既存の PDF ファイルから読み込んだドキュメントは違うルート ID を使用することがあります。

Example

下記のコードは、PDF ドキュメントの情報を取得する例です。

[C#]
Doc theDoc = new Doc();
theDoc.Read(Server.MapPath("../mypics/mydoc.pdf"));
string theVers, theNames, thePages, theOutlines;
theVers = theDoc.GetInfo(theDoc.Root, "Version");
theNames = theDoc.GetInfo(theDoc.Root, "Names");
thePages = theDoc.GetInfo(theDoc.Root, "pages");
theOutlines = theDoc.GetInfo(theDoc.Root, "outlines");
Response.Write("Version " + theVers + "<br>");
Response.Write("Names " + theNames + "<br>");
Response.Write("Pages ID " + thePages + "<br>");
Response.Write("Outlines ID " + theOutlines + "<br>");
theDoc.Clear();
[Visual Basic]
Dim theDoc As Doc = New Doc()
theDoc.Read(Server.MapPath("../mypics/mydoc.pdf"))
Dim theVers As String,theNames As String,thePages As String,theOutlines As String
theVers = theDoc.GetInfo(theDoc.Root, "Version")
theNames = theDoc.GetInfo(theDoc.Root, "Names")
thePages = theDoc.GetInfo(theDoc.Root, "pages")
theOutlines = theDoc.GetInfo(theDoc.Root, "outlines")
Response.Write("Version " + theVers + "<br>")
Response.Write("Names " + theNames + "<br>")
Response.Write("Pages ID " + thePages + "<br>")
Response.Write("Outlines ID " + theOutlines + "<br>")
theDoc.Clear()

取得した情報：

Version /1.4
Names 12 0 R
Pages ID 618
Outlines ID 2169


SaveOptions プロパティ

型 | デフォルト値 | 読み取り専用 | 説明
[C#] XSaveOptions [Visual Basic] XSaveOptions | なし | いいえ | 保存オプションと制御

Notes

このプロパティは、PDF ドキュメントの保存またはストリーム方法を制御できます。

このオブジェクトのプロパティは Save メソッドや GetData メソッドの動作を制御するために使用 します。

詳しくは、XSaveOptions オブジェクトを参照してください。

Example

ありません。


TextStyle プロパティ
型 | デフォルト値 | 読み取り専用 | 説明
[C#] XTextStyle [Visual Basic] XTextStyle | 10ポイントのテキスト | いいえ | テキストの現在の描画スタイル

Notes

このプロパティはテキストの現在の描画スタイルをあらわします。このスタイルで、テキストが追加されます。

Example

下記のコードは、PDF ドキュメントを作成し、プロパティを設定してテキストを追加します。

[C#]
Doc theDoc = new Doc();
string theText = "Gallia est omnis divisa in partes tres, quarum unam incolunt Belgae, aliam Aquitani, tertiam qui ipsorum lingua Celtae, nostra Galli appellantur. Hi omnes lingua, institutis, legibus inter se differunt. Gallos ab Aquitanis Garumna flumen, a Belgis Matrona et Sequana dividit.";
theText = theText + "\r\n" + theText + "\r\n" + theText + "\r\n";
theDoc.Rect.Inset(20, 20);
theDoc.TextStyle.Size = 32;
theDoc.TextStyle.Justification = 1;
theDoc.TextStyle.Indent = 64;
theDoc.TextStyle.ParaSpacing = 32;
theDoc.AddText(theText);
theDoc.Save(Server.MapPath("doctextstyle.pdf"));
theDoc.Clear();
[Visual Basic]
Dim theDoc As Doc = New Doc()
Dim theText As String = "Gallia est omnis divisa in partes tres, quarum unam incolunt Belgae, aliam Aquitani, tertiam qui ipsorum lingua Celtae, nostra Galli appellantur. Hi omnes lingua, institutis, legibus inter se differunt. Gallos ab Aquitanis Garumna flumen, a Belgis Matrona et Sequana dividit."
theText = theText + vbCrLf + theText + vbCrLf + theText + vbCrLf
theDoc.Rect.Inset(20, 20)
theDoc.TextStyle.Size = 32
theDoc.TextStyle.Justification = 1
theDoc.TextStyle.Indent = 64
theDoc.TextStyle.ParaSpacing = 32
theDoc.AddText(theText)
theDoc.Save(Server.MapPath("doctextstyle.pdf"))
theDoc.Clear()

doctextstyle.pdf


TopDown プロパティ
型 | デフォルト値 | 読み取り専用 | 説明
[C#] bool [Visual Basic] Boolean | false | いいえ | 現在の原点の位置

Notes
PDF の座標値はドキュメントの下から上方向に増えます。しかし、レイアウトのタイプによっては、座標値がドキュメントの上から下方向に増えるほうが便利な場合もあります。

このプロパティを True に設定することにより、座標値はドキュメントの上から開始されます。

なお、これは原点が現在の MediaBox の左上にあるともいえます。

座標系を変更するには、他の座標空間 があります。

Example

下記のコードは、PDF ドキュメントを作成し、インチでグリッドを追加する例です。

[C#]
Doc theDoc = new Doc();
theDoc.Units = UnitType.Inches;
theDoc.TopDown = true;
theDoc.Width = 1.0 / 8.0;
theDoc.FontSize = 1;
theDoc.Rect.Pin = XRect.Corner.TopLeft;
for (int i = 0; i <= 12; i += 2) {
  theDoc.AddLine(0, i, 12, i);
  theDoc.Rect.Position(0, i);
  theDoc.AddText(i.ToString());
  theDoc.AddLine(i, 0, i, 12);
  theDoc.Rect.Position(i, 0);
  theDoc.AddText(i.ToString());
}
theDoc.Save(Server.MapPath("doctopdown.pdf"));
theDoc.Clear();
[Visual Basic]
Dim theDoc As Doc = New Doc()
theDoc.Units = UnitType.Inches
theDoc.TopDown = True
theDoc.Width = 1.0 / 8.0
theDoc.FontSize = 1
theDoc.Rect.Pin = XRect.Corner.TopLeft
For i As Integer = 0 To 12 Step 2
  theDoc.AddLine(0, i, 12, i)
  theDoc.Rect.Position(0, i)
  theDoc.AddText(i.ToString())
  theDoc.AddLine(i, 0, i, 12)
  theDoc.Rect.Position(i, 0)
  theDoc.AddText(i.ToString())
Next
theDoc.Save(Server.MapPath("doctopdown.pdf"))
theDoc.Clear()

doctopdown.pdf


Transform プロパティ
型 | デフォルト値 | 読み取り専用 | 説明
[C#] XTransform [Visual Basic] XTransform | なし | いいえ | 描画のための現在の変換

Notes

このプロパティは現在の基本座標系の変換を設定します。AddText や AddImage、AddLine、FrameRect および FillRect のメソッドで描画する時に作用します。

変換とは、回転や変形、拡大や傾斜などの命令です。

注意： 複数の変換を行う場合、その命令の順序は重要です。たとえば、「変形→回転」 と 「回転→変形」 は同じではありません。

基本座標系の変換はオブジェクトの変換とは違い、座標空間を変換します。

注意： 変換を行う場合はオリジナルの PDF 座標系を使用してください。また Units や TopDown を使用すると基本の座標系が変更されるので操作が難しくなります。

Example

下記のコードは、PDF ドキュメントを作成し、45度反時計周りで回転したテキストと四角形を追加します。

[C#]
Doc theDoc = new Doc();
string theText;
theText = "Gallia est omnis divisa in partes tres, quarum unam incolunt Belgae, aliam Aquitani, tertiam qui ipsorum lingua Celtae, nostra Galli appellantur. Hi omnes lingua, institutis, legibus inter se differunt. Gallos ab Aquitanis Garumna flumen, a Belgis Matrona et Sequana dividit.";
theText = theText + "\r\n" + theText + "\r\n" + theText + "\r\n";
theDoc.Rect.Magnify(0.5, 0.5);
theDoc.Rect.Position(151, 198);
theDoc.FrameRect();
theDoc.Transform.Rotate(45, 302, 396);
theDoc.FrameRect();
theDoc.FontSize = 24;
theDoc.AddText(theText);
theDoc.Save(Server.MapPath("doctransform.pdf"));
theDoc.Clear();
[Visual Basic]
Dim theDoc As Doc = New Doc()
Dim theText As String
theText = "Gallia est omnis divisa in partes tres, quarum unam incolunt Belgae, aliam Aquitani, tertiam qui ipsorum lingua Celtae, nostra Galli appellantur. Hi omnes lingua, institutis, legibus inter se differunt. Gallos ab Aquitanis Garumna flumen, a Belgis Matrona et Sequana dividit."
theText = theText + vbCrLf + theText + vbCrLf + theText + vbCrLf
theDoc.Rect.Magnify(0.5, 0.5)
theDoc.Rect.Position(151, 198)
theDoc.FrameRect()
theDoc.Transform.Rotate(45, 302, 396)
theDoc.FrameRect()
theDoc.FontSize = 24
theDoc.AddText(theText)
theDoc.Save(Server.MapPath("doctransform.pdf"))
theDoc.Clear()

doctransform.pdf


Units Property

Units プロパティ

型 | デフォルト値 | 読み取り専用 | 説明
[C#] UnitType [Visual Basic] UnitType | UnitType.Points | いいえ | 現在の単位

Notes

このプロパティは現在の単位系を表します。

UnitType 列挙体は次の値を取得できます。

  • points (PostScript Points) - 1/72 インチ
  • twips (Twentieths of a Point の略) - 1/20 PostScript ポイント
  • didots (ディドーポイント) - 1/72 フランスロイヤル版インチ
  • ATAPoints (ATA Points) - 1/72.272 インチ
  • TeXPoints (テフポイント) - 1/72.27 インチ
  • INPoints - 0.4 mm (フランス国立印刷局のポイント)
  • Picas - パイカ（12 PostScript ポイント）
  • Ciceros - シセロ（12 ディドーポイント)
  • ATACiceros - 12 ATA ポイント
  • TeXCiceros - 12 テフポイント
  • Microns - 1/1000000 メートル
  • Mm - 1/1000 メートル
  • Cm - 1/100 メートル
  • M - メートル
  • Inches
  • Feet

座標系の変更には、他の座標空間があります。

Units プロパティが string 型なのは？

ABCpdf の旧バージョンでは、Units プロパティは string 型だったので、次のようなコードがありました。

theDoc.Units = "mm"

バージョン８で、このプロパティは列挙体に変更されました。これはご使用の値が有効であることをコンパイラが確認できるので、より安全なコーディングの方法です。新しいコードはこのようになるはずです。

theDoc.Units = UnitType.Mm

UnitType 列挙体の項目名は旧バージョンで使用されていた文字列の値と同じなので、コードを変更するには簡単な検索と命令を置換するだけです。

他の方法としては、列挙体と文字列を自動的に変換しなければならない場合は次のように行えます。文字列から列挙体に変換するには、次のコードを使用します。

UnitType unitType = (UnitType)Enum.Parse(typeof(UnitType), unitString, true)

列挙体から文字列に変換するには、次のコードを使用します。

string unitString = unitType.ToString("G")

Example

TopDown プロパティを参照してください。


VPos プロパティ
型 | デフォルト値 | 読み取り専用 | 説明
[C#] double [Visual Basic] Double | 0.0 | いいえ | 現在の垂直方向の位置

Notes
このプロパティはテキスト領域の縦方向の位置を設定します。

この位置の値は上端からの距離で、テキストのアラインメントを設定します。0 は上端、0.5 は中央、1 は下端をあらわします。

横方向のテキストのアラインメントは HPos プロパティで設定します。またテキストの両端揃えを行うには、XTextStyle.Justification プロパティを使用してください。

Example

下記のコードはドキュメントに2つのテキストを追加します。最初のテキストは上端に設定し、2番目のテキストは下端に設定します。

[C#]
Doc theDoc = new Doc();
theDoc.FontSize = 96;
theDoc.Rect.Magnify(1.0, 0.5);
theDoc.Rect.Inset(40, 40);
theDoc.FrameRect();
theDoc.AddText("Top aligned text...");
theDoc.Rect.Move(0, theDoc.Rect.Height + 80);
  theDoc.FrameRect();
theDoc.VPos = 1.0;
theDoc.AddText("Bottom aligned text...");
theDoc.Save(Server.MapPath("docvpos.pdf"));
theDoc.Clear();
[Visual Basic]
Dim theDoc As Doc = New Doc()
theDoc.FontSize = 96
theDoc.Rect.Magnify(1.0, 0.5)
theDoc.Rect.Inset(40, 40)
theDoc.FrameRect()
theDoc.AddText("Top aligned text...")
theDoc.Rect.Move(0, theDoc.Rect.Height + 80)
theDoc.FrameRect()
theDoc.VPos = 1.0
theDoc.AddText("Bottom aligned text...")
theDoc.Save(Server.MapPath("docvpos.pdf"))
theDoc.Clear()

docvpos.pdf


Width プロパティ
型 | デフォルト値 | 読み取り専用 | 説明
[C#] double [Visual Basic] Double | 1.0 | いいえ | 現在の線の太さ

Notes

このプロパティは AddLine や FrameRect のようなメソッドで描画する線の太さをあらわします。この太さはの単位は現在の Units となります。

AddLine メソッドは指定した点の中央で線を作成します。たとえば 10 の太さの水平線を描画する場合、指定した位置の上に 5、その下に 5 の、太さが 10 の線となります。

FrameRect メソッドは指定した四角形の外に線を描画します。もしフレームの四角形の幅が10の場合、指定した四角形より外側に 10 づつ拡張したフレームを描画します。

Example

下記のコードは、ドキュメントに2つの直線を追加します。最初の直線の幅は 10 ポイントで、2番目の直線の幅は 20 ポイントです。

[C#]
Doc theDoc = new Doc();
theDoc.Width = 10;
theDoc.AddLine(10, 10, 300, 300);
theDoc.Width = 20;
theDoc.AddLine(10, 300, 300, 10);
theDoc.Save(Server.MapPath("docwidth.pdf"));
theDoc.Clear();
[Visual Basic]
Dim theDoc As Doc = New Doc()
theDoc.Width = 10
theDoc.AddLine(10, 10, 300, 300)
theDoc.Width = 20
theDoc.AddLine(10, 300, 300, 10)
theDoc.Save(Server.MapPath("docwidth.pdf"))
theDoc.Clear()

docwidth.pdf


XColor Class

XColor オブジェクト

このオブジェクトは色をあらわします。色は RGB、CMYK あるいはグレースケールで表現されます。
最初に作成される時の色はデフォルトの黒 [RGB(0, 0, 0)] となります。

System.Object
   WebSupergoo.ABCpdf9.XColor

メソッド | 説明
SetColor | 色を設定します。
SetCmyk | 色を CMYK の値に設定します。
SetGray | 色をグレースケールの値に設定します。
SetRgb | 色を RGB の値に設定します。
SetRandom | 色を ランダムな値に設定します。
ToString | オブジェクトの文字列を返します。

プロパティ | 説明
String | 文字列による指定
Red | RGB の赤の値
Green | RGB の緑の値
Blue | RGB の青の値
Gray | グレースケールの値
Cyan | CMYK のシアンの値
Magenta | CMYK のマゼンタの値
Yellow | CMYK の黄の値
Black | CMYK の黒の値
Alpha | 色の透明度の値
ColorSpace | カラースペース
Color | System.Drawing.Color


SetColor Function

SetColor メソッド

色を設定します。

Syntax

[C#]
virtual void SetColor(XColor color)
[Visual Basic]
Overridable Sub SetColor(color As XColor)

Params
名称 | 説明
color | ソースの色

Notes

このメソッドはパラメータから値をコピーします。

Example

ありません。


SetGray Function

SetGray メソッド

色をグレースケールの値に設定します。

Syntax

[C#]
virtual void SetGray(int gray)
virtual void SetGray(int gray, int alpha)
[Visual Basic]
Overridable Sub SetGray(gray As Integer)
Overridable Sub SetGray(gray As Integer, alpha as Integer)

Params
名称 | 説明
gray | 黒の量（0～255）
alpha | 透明から完全な不透明までの不透明度のレベル（0～255）

Notes

色をグレースケールに設定し、そのための値を用意します。

オプションでアルファ値を設定して、透明度のレベルを指定してください。このパラメータを省略すると、色は完全な不透明（透明度なし）に設定されます。

Example

ありません。


SetRgb Function

SetRgb メソッド

色を RGB の値に設定します。

Syntax

[C#]
virtual void SetRgb(int red, int green, int blue)
virtual void SetRgb(int red, int green, int blue, int alpha)
[Visual Basic]
Overridable Sub SetRgb(red As Integer, green As Integer, blue As Integer)
Overridable Sub SetRgb(red As Integer, green As Integer, blue As Integer, alpha as Integer)

Params
名称 | 説明
red | 赤の量（0～255）
green | 緑の量（0～255）
blue | 青の量（0～255）
alpha | 透明から完全な不透明までの不透明度のレベル（0～255）

Notes

色を RGB に設定し、そのための値を用意します。

オプションでアルファ値を設定して、透明度のレベルを指定してください。このパラメータを省略すると、色は完全な不透明（透明度なし）に設定されます。

Example

ありません。


SetCmyk Function

SetCmyk メソッド

色を CMYK の値に設定します。

Syntax

[C#]
virtual void SetCmyk(int cyan, int magenta, int yellow, int black)
virtual void SetCmyk(int cyan, int magenta, int yellow, int black, int alpha)
[Visual Basic]
Overridable Sub SetCmyk(cyan As Integer, magenta As Integer, yellow As Integer, black As Integer)
Overridable Sub SetCmyk(cyan As Integer, magenta As Integer, yellow As Integer, black As Integer, alpha as Integer)

Params
名称 | 説明
cyan | シアンの量（0～100）
magenta | マゼンタの量（0～100）
yellow | 黄色の量（0～100）
black | 黒の量（0～100）
alpha | 透明から完全な不透明までの不透明度のレベル（0～255）

Notes

色を CMYK に設定し、そのための値を用意します。

オプションでアルファ値を設定して、透明度のレベルを指定してください。このパラメータを省略すると、色は完全な不透明（透明度なし）に設定されます。

Example

ありません。


SetRandom Function

SetRandom メソッド

色を現在のカラースペースのランダムな不透明の値に設定します。

Syntax

[C#]
virtual void SetRandom ()
[Visual Basic]
Overridable Sub SetRandom ()

Params
名称 | 説明
なし |

Notes

色を現在のカラースペースのランダムな不透明の値に設定します。

Example

ありません。


ToString Function

ToString メソッド

オブジェクトの文字列を返します。

Syntax

[C#]
override string ToString()
[Visual Basic]
Overrides Function ToString() As String

Params
名称 | 説明
戻り値 | オブジェクトの文字列

Notes

このメソッドはオブジェクトの文字列を返します。これはオブジェクトの String プロパティを読むことと同じです。

Example

ありません。


Alpha プロパティ
型 | デフォルト値 | 読み取り専用 | 説明
[C#] int [Visual Basic] Integer | 255 | いいえ | 透明度

Notes
このプロパティは色の透明度を設定します。

値は 0 から 255 までの値で設定します。0 の場合は透明、255 の場合は不透明です。

Example

下記のコードは、アルファ値を変更して、いろいろな透明度のテキストを追加した PDF ドキュメントを作成します。

[C#]
Doc theDoc = new Doc();
theDoc.Rect.Inset(20,20);
theDoc.FontSize = 300;
for (int i = 1; i <= 10; i++) {
  theDoc.Color.Alpha = 255 / i;
  theDoc.AddText(theDoc.Color.Alpha.ToString());
  theDoc.Rect.Move(25, -50);
}
theDoc.Save(Server.MapPath("coloralpha.pdf"));
theDoc.Clear();
[Visual Basic]
Dim theDoc As Doc = New Doc()
theDoc.Rect.Inset(20,20)
theDoc.FontSize = 300
For i As Integer = 1 To 10
  theDoc.Color.Alpha = 255 / i
  theDoc.AddText(theDoc.Color.Alpha.ToString())
  theDoc.Rect.Move(25, -50)
Next
theDoc.Save(Server.MapPath("coloralpha.pdf"))
theDoc.Clear()

coloralpha.pdf


Black プロパティ
型 | デフォルト値 | 読み取り専用 | 説明
[C#] int [Visual Basic] Integer | 0 | いいえ | CMYK の黒の値

Notes
このプロパティは CMYK の黒の値を設定します。

値は 0 から 100 までの値で設定します。

このプロパティを取得しても ColorSpace は変更されません。現在のカラースペースが RGB やグレースケールの場合、CMYK で近い値を取得します。

このプロパティの値を設定すると、カラースペースが CMYK に自動的に変更されます。

Example

ありません。


Blue プロパティ
型 | デフォルト値 | 読み取り専用 | 説明
[C#] int [Visual Basic] Integer | 0 | いいえ | RGB の青の値

Notes
このプロパティは RGB の青の値を設定します。

値は 0 から 255 までの値で設定します。

このプロパティを取得しても ColorSpace は変更されません。現在のカラースペースが CMYK やグレースケールの場合、RGB で近い値を取得します。

このプロパティの値を設定すると、カラースペースが RGB に自動的に変更されます。

Example

ありません。


Color プロパティ
型 | デフォルト値 | 読み取り専用 | 説明
[C#] Color [Visual Basic] Color | なし | いいえ | System.Drawing.Color

Notes

System.Drawing のネームスペースから標準の .NET の Color として Color にアクセスできます。

Example

ありません。


ColorSpace プロパティ
型 | デフォルト値 | 読み取り専用 | 説明
[C#] int [Visual Basic] Integer | 3 | いいえ | カラースペース

Notes
このプロパティは現在のカラースペースの設定し、カラースペースのコンポーネントの数になります。各カラースペースのコンポーネントの数は、RGB は 3、CMYK は 4、グレースケールは 1 となります。

もしこのプロパティを変更すると、現在の色は自動的に指定されたカラースペースに変換されます。

Example

ありません。


Cyan プロパティ
型 | デフォルト値 | 読み取り専用 | 説明
[C#] int [Visual Basic] Integer | 0 | いいえ | CMYK のシアンの値

Notes

このプロパティは CMYK のシアンの値を設定します。

値は 0 から 100 までの値で設定します。

このプロパティを取得しても ColorSpace は変更されません。現在のカラースペースが RGB やグレースケールの場合、CMYK で近い値を取得します。

このプロパティの値を設定すると、カラースペースが CMYK に自動的に変更されます。

Example

ありません。


Gray プロパティ
型 | デフォルト値 | 読み取り専用 | 説明
[C#] int [Visual Basic] Integer | 0 | いいえ | グレースケールの値

Notes
このプロパティはグレースケールの値を設定します。

値は 0(黒)から 255(白)までの値で設定します。

このプロパティを取得しても ColorSpace は変更されません。現在のカラースペースが CMYK や RGB の場合、グレースケールで近い値を取得します。

このプロパティの値を設定すると、カラースペースがグレースケールに自動的に変更されます。

このプロパティはスポットカラーのレベルを指定するのにも使用されます。このレベルは 0 (0%の濃度)から 255 (100%の濃度)の値になります。詳しくは AddColorSpaceSpot のメソッドを参照してください。

Example

ありません。


Green プロパティ
型 | デフォルト値 | 読み取り専用 | 説明
[C#] int [Visual Basic] Integer | 0 | いいえ | RGB の緑の値

Notes
このプロパティは RGB の緑の値を設定します。

値は 0 から 255 までの値で設定します。

このプロパティを取得しても ColorSpace は変更されません。現在のカラースペースが CMYK やグレースケールの場合、RGB で近い値を取得します。

このプロパティの値を設定すると、カラースペースが RGB に自動的に変更されます。

Example

ありません。


Magenta プロパティ
型 | デフォルト値 | 読み取り専用 | 説明
[C#] int [Visual Basic] Integer | 0 | いいえ | CMYK のマゼンタの値

Notes
このプロパティは CMYK のマゼンタの値を設定します。

値は 0 から 100 までの値で設定します。

このプロパティを取得しても ColorSpace は変更されません。現在のカラースペースが RGB やグレースケールの場合、CMYK で近い値を取得します。

このプロパティの値を設定すると、カラースペースが CMYK に自動的に変更されます。

Example

ありません。


Red プロパティ
型 | デフォルト値 | 読み取り専用 | 説明
[C#] int [Visual Basic] Integer | 0 | いいえ | RGB の赤の値

Notes
このプロパティは RGB の赤の値を設定します。

値は 0 から 255 までの値で設定します。

このプロパティを取得しても ColorSpace は変更されません。現在のカラースペースが CMYK やグレースケールの場合、RGB で近い値を取得します。

このプロパティの値を設定すると、カラースペースが RGB に自動的に変更されます。

Example

ありません。


String プロパティ

型 | デフォルト値 | 読み取り専用 | 説明
[C#] string [Visual Basic] String | "0 0 0" | いいえ | 色を文字列で表します。

Notes
このプロパティは色を文字列で表します。

RGB カラースペースの時、文字列は赤、緑、青の値を表します。たとえば "100 150 200" のようになります。

CMYK カラースペースの時、文字列はシアン、マゼンタ、黄、黒の値を表します。たとえば "30 60 90 10" のようになります。

グレースケールカラースペースの時、文字列はグレーの値を表します。たとえば "150" のようになります。

現在のカラースペースを取得するためには、ColorSpace プロパティを使用してください。

'a' を使用することにより、アルファ値のコンポーネントが設定できます。例えば、"30 60 90 a120" は、アルファ値が 120 の RGB 値を表します。

Example

ありません。


Yellow プロパティ
型 | デフォルト値 | 読み取り専用 | 説明
[C#] int [Visual Basic] Integer | 0 | いいえ | CMYK の黄の値

Notes
このプロパティは CMYK の黄の値を設定します。

値は 0 から 100 までの値で設定します。

このプロパティを取得しても ColorSpace は変更されません。現在のカラースペースが RGB やグレースケールの場合、CMYK で近い値を取得します。

このプロパティの値を設定すると、カラースペースが CMYK に自動的に変更されます。

Example

ありません。


XEncryption オブジェクト

現在の暗号化を設定します。

Type プロパティを設定しなければ、デフォルトで暗号化は適用されません。

System.Object
   WebSupergoo.ABCpdf9.XEncryption

メソッド | 説明
SetCryptMethods | type 4 以上の暗号化レベルの暗号メソッドを設定します

プロパティ | 説明
CanAssemble | ドキュメントをアセンブルできるようにします
CanChange | ドキュメントを修正できるようにします
CanCopy | ドキュメントからコピーできるようにします
CanEdit | ドキュメントを編集できるようにします
CanExtract | ドキュメントから抽出できるようにします
CanFillForms | ドキュメントのフォームに入力できるようにします
CanPrint | ドキュメントを印刷できるようにします
CanPrintHi | ドキュメントの高解像度印刷ができるようにします
EncryptMetadata | type 4 以上の暗号化レベルのドキュメントのメタデータを暗号化します
OwnerPassword | オーナーパスワード
Password | ユーザパスワード
StreamCryptionMethod | type 4 以上の暗号化レベルのストリームの暗号メソッド
StringCryptionMethod | type 4 以上の暗号化レベルの文字列の暗号メソッド
Type | 暗号化レベルを指定します


SetCryptMethods Function

SetCryptMethods メソッド

type 4 以上の暗号化レベルの暗号メソッドを設定します。

Syntax

[C#]
void SetCryptMethods(CryptMethodType method)
void SetCryptMethods(CryptMethodType stringMethod, CryptMethodType streamMethod)
[Visual Basic]
Sub SetCryptMethods(method As CryptMethodType)
Sub SetCryptMethods(stringMethod As CryptMethodType, streamMethod As CryptMethodType)

Throws Exceptions エラーの場合、Exception() が発生します。

Params
名称 | 説明
method | 文字列とストリームの暗号メソッド
stringMethod | 文字列の暗号メソッド
streamMethod | ストリームの暗号メソッド

Notes

Type 4 のデフォルトの暗号メソッドは V2 で、RC4 アルゴリズムを使用します。暗号メソッドの設定は Type が 4 以上の場合にのみ効果があります。

CryptMethodType 列挙体は次の値を取得します。

  • None – (サポートされていません) 使用時に例外がスローされます
  • Identity – 暗号化なし
  • V2 – RC4 アルゴリズムを使用します
  • AESV2 – 鍵長が128ビットの AES アルゴリズムを使用します
  • AESV3 – 鍵長が256ビットの AES アルゴリズムを使用します

Adobe Reader は1つのドキュメントに対して複数の暗号メソッドの使用をサポートしないので（つまり、stringMethod≠streamMethod）、複数の暗号メソッドを使おうとすると例外がスローされます。しかし、Identity （暗号化なし）は縮退なので、他の暗号メソッドで使用できます。

Example

ここでは、AESV2 （鍵長が128 ビットの AES 暗号）を使用します。

[C#]
Doc theDoc = new Doc();
theDoc.FontSize = 96;
theDoc.AddText("Hello World!");
theDoc.Encryption.Type = 4;
theDoc.Encryption.SetCryptMethods(CryptMethodType.AESV2);
theDoc.Save(Server.MapPath("docencrypt.pdf"));
[Visual Basic]
Dim theDoc As New Doc()
theDoc.FontSize = 96
theDoc.AddText("Hello World!")
theDoc.Encryption.Type = 4
theDoc.Encryption.SetCryptMethods(CryptMethodType.AESV2)
theDoc.Save(Server.MapPath("docencrypt.pdf"))


CanAssemble プロパティ
型 | デフォルト値 | 読み取り専用 | 説明
[C#] bool [Visual Basic] Boolean | True | いいえ | ドキュメントをアセンブルできるようにします

Notes
このプロパティはドキュメントをアセンブルできるようにします。

「アセンブル」とはページの”挿入”、”回転”、”削除”、”ブックマークの作成”や”サムネイルイメージの作成”を意味します。CanChange プロパティを False に設定しても、このプロパティの設定は有効となります。

このプロパティは、Type が 2 以上の場合にのみ効果があります。

Example

Doc.Encryption プロパティを参照してください。


CanChange プロパティ
型 | デフォルト値 | 読み取り専用 | 説明
[C#] bool [Visual Basic] Boolean | True | いいえ | ドキュメントの修正ができるようにします

Notes

このプロパティはドキュメントを修正できるようにします。

「修正」とは、CanEdit、CanFillForms、CanAssemble 以外のプロパティでドキュメントを変更することを意味します。

このプロパティは、Type が 1 以上の場合にのみ効果があります。

Example

Doc.Encryption プロパティを参照してください。


CanCopy プロパティ
型 | デフォルト値 | 読み取り専用 | 説明
[C#] bool [Visual Basic] Boolean | True | いいえ | ドキュメントからコピーできるようにします

Notes
このプロパティはドキュメントからコピーできるようにします。

「コピー」とはドキュメントからテキストやグラフィックスをコピーまたは取得することを意味します。

このプロパティは、Type が 1 以上の場合にのみ効果があります。

Example

Doc.Encryption プロパティを参照してください。


CanEdit プロパティ
型 | デフォルト値 | 読み取り専用 | 説明
[C#] bool [Visual Basic] Boolean | True | いいえ | ドキュメントを編集できるようにします

Notes
このプロパティはドキュメントを編集できるようにします。

「編集」とはテキストの注釈を追加したり修正したり、または、インタラクティブなフォームにデータを入力することを意味します。CanChange プロパティを設定すると、インタラクティブなフォームの作成や修正もできます。

このプロパティは、Type が 1 以上の場合にのみ効果があります。

Example

Doc.Encryption プロパティを参照してください。


CanExtract プロパティ
型 | デフォルト値 | 読み取り専用 | 説明
[C#] bool [Visual Basic] Boolean | True | いいえ | ドキュメントから抽出できるようにします

Notes
このプロパティはドキュメントから抽出できるようにします。

「抽出」とはアクセシビリティでサポートしているテキストやグラフィックスの抽出を意味します。

なお、アクセシビリティとは視覚障害や運動障害など身体に障害のある方のための、デジタル情報にアクセスしやすくする機能です。

このプロパティは、Type が 2 以上の場合にのみ効果があります。

Example

Doc.Encryption プロパティを参照してください。


CanFillForms プロパティ
型 | デフォルト値 | 読み取り専用 | 説明
[C#] bool [Visual Basic] Boolean | True | いいえ | ドキュメントのフォームに入力できるようにします

Notes

このプロパティはドキュメントのフォームに入力できるようにします。

「フォームへの入力」とは存在するインタラクティブなフォームのフィールドに入力することを意味します。CanEdit プロパティを False に設定しても、このプロパティは有効です。

このプロパティは、Type が 2 以上の場合にのみ効果があります。

Example

Doc.Encryption プロパティを参照してください。


CanPrint プロパティ
型 | デフォルト値 | 読み取り専用 | 説明
[C#] bool [Visual Basic] Boolean | True | いいえ | ドキュメントの印刷ができるようにします

Notes
このプロパティはドキュメントの印刷ができるようにします。

CanPrintHi プロパティが False の場合、最高品質の印刷は利用ではない場合があります。

このプロパティは、Type が 1 以上の場合にのみ効果があります。

Example

Doc.Encryption プロパティを参照してください。


CanPrintHi プロパティ
型 | デフォルト値 | 読み取り専用 | 説明
[C#] bool [Visual Basic] Boolean | True | いいえ | ドキュメントの高解像度印刷ができるようにします

Notes

このプロパティはドキュメントの高解像度印刷ができるようにします。

このプロパティを False、CanPrint を True に設定すると、ドキュメントの印刷は低品質で行われます。

このプロパティは、Type が 2 以上の場合にのみ効果があります。

Example

Doc.Encryption プロパティを参照してください。


EncryptMetadata Property

EncryptMetadata プロパティ

型 | デフォルト値 | 読み取り専用 | 説明
[C#] bool [Visual Basic] Boolean | true | いいえ | type 4 以上の暗号化レベルのドキュメントのメタデータを暗号化します

Notes

このプロパティは、ドキュメントのメタデータを暗号化します。Type が 4 以上の場合にのみ効果があります。

ドキュメントのメタデータを暗号化せずに保存できるので、PDF の暗号化をサポートしていないツールでもメタデータを使用してドキュメントのインデックス付け/ドキュメント処理が行えます。

Example

ありません。


OwnerPassword プロパティ
型 | デフォルト値 | 読み取り専用 | 説明
[C#] string [Visual Basic] String | "" | いいえ | オーナーパスワード

Notes
このプロパティはドキュメントのオーナーパスワードを設定します。

ユーザパスワードやオーナーパスワードを使用することにより暗号化してあるドキュメントをオープンして表示することできます。また、オーナーパスワードを使用するとドキュメントのセキュリティの設定を変更したり、ドキュメントの完全な制御ができます。一方、ユーザパスワードの使用には、セキュリティの制限があります。

詳しくは Doc.Encryption プロパティを参照してください。

Example

Doc.Encryption プロパティを参照してください。


Password プロパティ
型 | デフォルト値 | 読み取り専用 | 説明
[C#] string [Visual Basic] String | "" | いいえ | ユーザパスワード

Notes
このプロパティはドキュメントのユーザパスワードを設定します。

ユーザパスワードやオーナーパスワードを使用することにより暗号化してあるドキュメントをオープンして表示することできます。また、オーナーパスワードを使用するとドキュメントのセキュリティの設定を変更したり、ドキュメントの完全な制御ができます。一方、ユーザパスワードの使用には、セキュリティの制限があります。

通常はユーザパスワードは空白に設定してユーザーがドキュメントを表示できるようにします。

詳しくは Doc.Encryption プロパティを参照してください。

Example

Doc.Encryption プロパティを参照してください。


StreamCryptionMethod Property

StreamCryptionMethod プロパティ

型 | デフォルト値 | 読み取り専用 | 説明
[C#] CryptMethodType [Visual Basic] CryptMethodType | V2 | はい | type 4 以上の暗号化レベルのストリームの暗号メソッド

Notes

このプロパティは、ストリームの暗号メソッドを返します。暗号メソッドの設定は Type が 4 以上の場合にのみ効果があります。

この値を変更するには、 SetCryptMethods を使用してください。

Example

ありません。


StringCryptionMethod Property

StringCryptionMethod プロパティ

型 | デフォルト値 | 読み取り専用 | 説明
[C#] CryptMethodType [Visual Basic] CryptMethodType | V2 | はい | type 4 以上の暗号化レベルの文字列の暗号メソッドを返します。

Notes

このプロパティは、文字列の暗号メソッドを返します。暗号メソッドの設定は Type が 4 以上の場合にのみ効果があります。

この値を変更するには、 SetCryptMethods を使用してください。

Example

ありません。


Type Property

Type プロパティ

型 | デフォルト値 | 読み取り専用 | 説明
[C#] int [Visual Basic] Integer | 0 | いいえ | 暗号化のレベルを指定します

Notes

このプロパティはドキュメントを保存する時の暗号化のレベルを指定します。デフォルト値(0)を設定すると、暗号化は行われません。

暗号化のレベルが高くなるほどセキュリティのレベルも高くなりますが、PDF 表示にはより最新の Adobe Acrobat のバージョンが必要になります。

Type 値 | 0 | 1 | 2 | 4 | 5
Acrobat バージョン | 任意 | 2.0 | 5.0 | 7.0 | 9.0
暗号化の鍵長（ビット） | なし | 40 | 128 | 128 | 256
暗号アルゴリズム | Identity | RC4 | RC4 | Identity/RC4/AES | Identity/AES
Can Assemble |  |  |  |  |
Can Change |  |  |  |  |
Can Copy |  |  |  |  |
Can Edit |  |  |  |  |
Can Extract |  |  |  |  |
Can Fill Forms |  |  |  |  |
Can Print |  |  |  |  |
Can Print Hi |  |  |  |  |

Example

Doc.Encryption プロパティと SetCryptMethods メソッドを参照してください。


XFont Class

XFont オブジェクト

ABCpdf で利用可能なフォント情報を提供します。

System.Object
   WebSupergoo.ABCpdf9.XFont

メソッド | 説明
S» FindAll | システムにインストールされている全てのフォントを検索します
S» FindByName | 指定した名前のフォントをすべて検索します
S» FindByStyle | 特定のフォントファミリーから指定したスタイルのフォントを検索します
S» FindFamily | 特定のフォントファミリーに属する全てのフォントを検索します
S» FindFamilyNames | すべてのフォントファミリーの名前を検索します
TextWidth | テキストの幅を取り出します（PDF の 1/1000 単位）
Unload | 使えないように、フォントをアンロードします。

プロパティ | 説明
Baseline | フォントのベースライン（1/1000 単位）
FamilyName | フォントのファミリー名
FixedPitch | フォントが固定ピッチかを表します
Italic | フォントが斜体かを表します
Name | フォント名（フルネーム）を表します
Names | フォント名を示す完全なリストを表します
PostScriptName | PostScript プリンタで使用するフォント名を表します
Script | スクリプトフォントかを表します
Serif | フォントが Serif かを表します
Weight | フォントの幅を表します
Widths | そのフォントで書かれた文字幅


FindAll Function

FindAll メソッド

システムにインストールされている全てのフォントを検索します。

Syntax

[C#]
static XFont[] FindAll()
[Visual Basic]
Shared Function FindAll() As XFont()

Params
名称 | 説明
戻り値 | 見つけたフォント

Notes

システムにインストールされている全てのフォントを検索します。

Example

ありません。


FindFamily Function

FindFamily メソッド

特定のフォントファミリーに属する全てのフォントを検索します。

Syntax

[C#]
static XFont[] FindFamily(string family)
[Visual Basic]
Shared Function FindFamily(family As String) As XFont()

Params
名称 | 説明
family | フォントファミリー名
戻り値 | 見つけたフォント

Notes

このメソッドは特定のフォントファミリーに属する全てのフォントを検索します。

Example

ありません。


FindFamilyNames Function

FindFamilyNames メソッド

すべてのフォントファミリーの名前を検索します。

Syntax

[C#]
static string[] FindFamilyNames()
[Visual Basic]
Shared Function FindFamilyNames() As String()

Params
名称 | 説明
戻り値 | ファミリ名のセット

Notes

現在利用可能なすべてのフォントファミリーの名前を検索します。

Example

ありません。


FindByName Function

FindByName メソッド

指定した名前のフォントを検索します。

Syntax

[C#]
static XFont[] FindByName(string name)

[Visual Basic]
Shared Function FindByName(name As String) As XFont()

Params
名称 | 説明
name | フォント名
戻り値 | 見つけたフォント

Notes

指定した名前のフォントを検索します。

各フォントは別の名前をいくつも含んでいることがあります。一部のフォントは他のフォント名よりユニークなので、名前で検索する場合はできるだけ具体的に指定してください。

Example

ありません。


FindByStyle Function

FindByStyle メソッド

特定のフォントファミリーから指定したスタイルのフォントを検索します。

Syntax

[C#]
static XFont FindByStyle(string family, FontWeight weight, bool italic)
static XFont FindByStyle(string family, int weight, bool italic)
[Visual Basic]
Shared Function FindFamily(family As String, weight As FontWeight, italic As Boolean) As XFont
Shared Function FindFamily(family As String, weight As Integer, italic As Boolean) As XFont

Params
名称 | 説明
family | フォントファミリー名
weight | フォントの幅
italic | 斜体フォントの設定
戻り値 | 一致するフォント。一致するフォントを見つけられなかった場合は null を返します。

Notes

このメソッドは、特定のフォントファミリーから指定したスタイルのフォントを検索します。

一致するフォントが見つからない場合は、null を返します。

weight は、整数か FontWeight 列挙体の値として渡すことができます。

Example

ありません。


TextWidth Function

TextWidth メソッド

テキストの幅を取り出します。

Syntax

[C#]
int TextWidth(string text)
[Visual Basic]
Function TextWidth(text As String) As Integer

Params
名称 | 説明
text | テキスト
戻り値 | テキストの幅（1/1000単位）

Notes

このメソッドは指定したテキストの幅を計算します。

戻り値は 1/1000 単位なので、ページ上の物理サイズを計算するには、その戻り値とフォントサイズを乗算し、1000 で除算してください。

Example

ありません。


Unload Function

Unload メソッド

使えないように、フォントをアンロードします。

Syntax

[C#]
void Unload()
[Visual Basic]
Sub Unload()

Params
名称 | 説明
なし |

Notes

使えないように、フォントをアンロードします。

アンロードした時点で、確実に ABCpdf がそのフォントを使っていないことが重要です。つまり、他のスレッドがそのフォントを使って PDF ドキュメントを作成するかもしれないということも考慮しなければなりません。使われているフォントをアンロードしてしまうと、予想もつかない動作や出力になりかねません。

Example

ありません。


FamilyName プロパティ
型 | デフォルト値 | 読み取り専用 | 説明
[C#] string [Visual Basic] String | なし | はい | フォントのファミリー名。

Notes

フォントのファミリー名。

フォントには特定のスタイルのバリエーションを提供するコレクションがあります。 各スタイルのフォント名は違っても、ファミリー名は同じになります。

Example

ありません。


FixedPitch プロパティ
型 | デフォルト値 | 読み取り専用 | 説明
[C#] bool [Visual Basic] Boolean | なし | はい | フォントが固定ピッチかを表します。

Notes

このプロパティはフォントが固定ピッチの場合に true となります。

固定ピッチのフォントはすべての文字が同じ幅となります。 "Courier" はその一例です。

Example

ありません。


Italic プロパティ
型 | デフォルト値 | 読み取り専用 | 説明
[C#] bool [Visual Basic] Boolean | なし | はい | フォントが斜体かを表します。

Notes

このプロパティはフォントが斜体の場合に true となります。

Example

ありません。


Name プロパティ
型 | デフォルト値 | 読み取り専用 | 説明
[C#] string [Visual Basic] String | なし | はい | フォント名（フルネーム）を表します。

Notes

フォント名（フルネーム）を表します。

フォント名はユニークではありませんが、重複もほとんどありません。

Example

ありません。


Names プロパティ
型 | デフォルト値 | 読み取り専用 | 説明
[C#] System.Collections.Specialized.StringCollection [Visual Basic] System.Collections.Specialized.StringCollection | なし | はい | フォント名を示す完全なリストを表します。

Notes

フォント名を示す完全なリストを表します。

フォントは複数の名称を持つことができます。 フォントは短い名称、長い名称、ユニークな名称、特定の目的のための名称、 あるいは異なる言語の名称などを持つことができます。

Example

ありません。


PostScriptName プロパティ
型 | デフォルト値 | 読み取り専用 | 説明
[C#] string [Visual Basic] String | なし | はい | PostScript プリンタで使用するフォント名を表します。

Notes

一般的に PDF ドキュメントは PostScript で使用するフォント名を参照します。

このプロパティで PostScript プリンタで使用するフォント名を取得できます。

Example

ありません。


Script プロパティ
型 | デフォルト値 | 読み取り専用 | 説明
[C#] bool [Visual Basic] Boolean | なし | はい | スクリプトフォントかを表します。

Notes

このプロパティはスクリプトフォントの場合に true となります。

スクリプトフォントは手書きの筆記体のように表示されます。 "Comic Sans MS" はスクリプトフォントの一例です。

Example

ありません。


Serif プロパティ
型 | デフォルト値 | 読み取り専用 | 説明
[C#] bool [Visual Basic] Boolean | なし | はい | フォントが Serif (セリフ)かを表します。

Notes

このプロパティはフォントが Serif （セリフ）の場合に true となります。

フォントにはセリフとサンセリフがあります。セリフはストロークの終わりに構造的な要素がありますが サンセリフにはありません。

"Times" はセリフ、"Arial" はサンセリフの一例です。

Example

ありません。


Weight プロパティ
型 | デフォルト値 | 読み取り専用 | 説明
[C#] int [Visual Basic] Integer | なし | はい | フォントの幅を表します。

Notes

フォントの幅は細字、標準、太字などのスタイルを決定します。

このプロパティの値は FontWeight 列挙体と比較できます。

FontWeight 列挙体には次の値が含まれます:

  • DontCare = 0
  • Thin = 100
  • ExtraLight = 200
  • Light = 300
  • Normal = 400
  • Medium = 500
  • SemiBold = 600
  • Bold = 700
  • ExtraBold = 800
  • Heavy = 900

Example

ありません。


Baseline Property

Baseline プロパティ

型 | デフォルト値 | 読み取り専用 | 説明
[C#] int [Visual Basic] Integer | なし | はい | フォントのベースライン（1/1000 単位）

Notes

フォントのベースラインを 1/1000 単位で定義します。

フォントのベースを取得するには、フォントサイズとこの測定基準を一緒に使用してテキスト領域の上端からフォントのベースラインまでの距離を取得してください。

例えば、ベースラインが 800 で、フォントサイズが 100 ポイントの場合、フォントのベースは現在の四角形の上端から 80 ポイントのところになります。

Example

ありません。


Widths Property

Widths プロパティ

型 デフォルト値 読み取り専用 説明
[C#]
int[]

[Visual Basic]
Integer() 		なし はい そのフォントで書かれた文字幅

Notes

そのフォントで書かれたすべての文字の文字幅。

配列に Unicode の値を代入できます。例えば、（ASCII 32 の）スペースの幅を取得するには、配列に item 32 を代入するだけです。

値は PDF の 1/1000 単位です。文字がそのフォントで書かれていない場合は、幅-1が返されます。

Example

ありません。


XForm Object

XForm オブジェクト

ドキュメントに関連付けられているフォームやフィールドを表します。

PDF の仕様では、フィールドとその表示を区別します。

一般的には、1つのフィールドはドキュメントに1つ表示されますが、いくつも表示したり非表示にすることもできます。

例えば、ラジオボタングループは1つの値を表し、1つのフィールドで表されますが、各ラジオボタンはドキュメントに個別に表示されます。従って、1つのラジオボタンのフィールドが複数表示される場合があります。

このため、フィールドは階層構造内で存在します。各フィールドが表示/非表示になる場合、子を持つ/持たない場合があります。これらの子はそれら自体フィールドになり得、それぞれ子を持つ場合があります。

一般的に、フィールドは完全修飾名で参照されます。完全名とは、ピリオドをデリミタとして使用してフィールドの階層構造から特定のフィールドオブジェクトまでのパスを表します。例えば、'person.address.city' というフィールド名は、'person' という上位の親を持つ 'address' という親を持つ 'city' という部分的なフィールド名でフィールドを参照します。 Item メソッドを使用して完全修飾名のフィールドを取得できます。

フィールドを取得したら、その値を取得たり変更したりできます。そのフィールドを永久的なドキュメントに変換するには、Stamp メソッドを使用します。

System.Object
   WebSupergoo.ABCpdf9.XForm

メソッド | 説明
GetFieldNames | ドキュメントの全てのフィールドのフルネームを取得します
Item | フルネームで参照した特定のフィールドを返します
MakeFieldsUnique | 共有のフィールドを一意にします
Refresh | ドキュメントのフィールドを更新し、再読み込みを行います
Stamp | ドキュメントに全てのフィールドをスタンプします

プロパティ | 説明
DateTimeFormat | 日時形式を定義するためのフォーマット プロバイダ
Fields | フォーム内の全ての上位フィールド
FormatFields | フィールドに挿入する前に値を書式設定します
GenerateAppearances | フィールドの見た目をあらかじめ生成しておきます
NeedAppearances | ビューアが自動的にフィールドの見た目を再生成します


GetFieldNames Function

GetFieldNames メソッド

ドキュメントの全てのフィールドのフルネームを取得します。

Syntax

[C#]
string[] GetFieldNames()
[Visual Basic]
Function GetFieldNames() As String()

Params
名称 | 説明
戻り値 | ドキュメントの全ての eForm フィールド名

Notes

このメソッドはフィールドのツリーをスキャンし、ドキュメントの全てのフィールドのフルネームを取得します。

Example

ありません。


MakeFieldsUnique Function

MakeFieldsUnique メソッド

共有の XForm フィールドを一意にします。

Syntax

[C#]
void MakeFieldsUnique()
void MakeFieldsUnique(string token)
[Visual Basic]
Sub MakeFieldsUnique()
Sub MakeFieldsUnique(token As String)

Params
名称 | 説明
token | 既存のフィールド名に、ページ番号と一緒に追加されるトークン。これは、フィールド名を一意にします。デフォルト値は "_page" です。

Notes

共有の XForm フィールドを一意にします。

RemapPages や Append メソッドなどを呼び出してページをコピーしたら、フィールドがページに共有されてしまうということになりかねません。つまり、あるページのあるフィールドを更新すると、他のページの同じフィールドにも影響を及ぼしてしまうということです。これはほとんどの場合、好ましいことではありませんし、フィールドを一意にしなくてはなりません。ページにあるフィールドを変更してもフィールドが一意であれば、他のページに影響はありません。このメソッドは、フィールドを一意にします。例えば、RemapPages("1 1") は最初のページのコピーを2つ作成します。つまり、最初のページのどのフィールドも両方のページに共有されます。RemapPages メソッドを呼び出した後に MakeFieldsUnique メソッドを呼び出すことで、フィールドのそれぞれのコピーに一意の名前を付けて作成します。

名前を一意にするには、token パラメータを使用します。これはフィールド名に追加される文字列です。また、その後にはページ番号が付きます。例えば、token パラメータに、"_page" （デフォルト値）を設定できます。そしてフィールド名は ExistnigName_page1 に変更されます。つまり、ExistingName がそのフィールドの現在の名前で、そのフィールドが1ページ目にあるということを表します。フィールドは一意な名前でなければなりません。これは、PDF の仕様に準拠しています。

フィールド名の末尾に数字の付いてないトークンが既にある場合、ページ番号だけ変更されます。トークンは2度追加されません。つまり、的確なトークンの末尾に数字が付いているフィールド名がある場合は、その数字がページ番号に置き換えられるだけで他は何も変更されません。

トークンを空文字にすることはできますが、フィールド名の末尾に付く数字はどれもページ番号に置き換えられるので注意してください。トークンが空文字の場合、デフォルトのトークン： _page に置き換えられます。

あるフィールドが、同一ページまたは違うページ上で複数のウィジェット 注釈によって共有される場合、そのフィールドを一意にする時にこの共有を壊さないよう最善を尽くします。共有されたフィールドをコピーする時、そのフィールド名のページ番号はそのフィールドが出てくる最後のページの番号になります。例えば、"title" というフィールドを取得し、1ページ目と2ページ目で共有される場合、リマッピング： "1 1 2 2" が行われ、次に MakeFieldsUnique メソッドが呼び出されます。そして1ページ目と3ページ目が title_page3 というフィールドを共有し、2ページ目と4ページ目が title_page4 というフィールドを共有します。"1 2 1 2" でリマッピングする場合、最初の2ページが title_page2 というフィールドを共有し、終わりの2ページが title_page4 というフィールドを共有します。

Example

ありません。


Item Function

Item メソッド

フルネームで参照した特定のフィールドを返します。

Syntax

[C#]
Field this[string name]
[Visual Basic]
Default Property Item(name As String) As Field

Params
名称 | 説明
name | フィールドの完全修飾名
戻り値 | 一致するフィールド

Notes

このメソッドは、フルネームで参照したフィールドを取得します。

一致するフィールドがない場合、null 値が返されます。

C#ではこのプロパティはそのクラスのインデックスとなります。

完全修飾名の構築方法に関する詳細は、XForm オブジェクトを参照してください。

Example

ありません。


Refresh Method

Refresh メソッド

ドキュメントのフィールドを更新し、再読み込みを行います。

Syntax

[C#]
void Refresh()
[Visual Basic]
Sub Refresh()

Params
名称 | 説明
なし |

Notes

このメソッドは、ドキュメントのフィールドを更新し、再読み込みを行います。

フォームが最初に要求されると、フィールドデータがキャッシュされます。

Example

ありません。


Stamp Method

Stamp メソッド

ドキュメントに全てのフィールドをスタンプします。

Syntax

[C#]
void Stamp()
[Visual Basic]
Sub Stamp()

Params
名称 | 説明
なし |

Notes

このメソッドは、ドキュメントに全てのフィールドを永久的にスタンプします。

このメソッドが呼び出されると、全てのフィールドのデータはドキュメントに永久にスタンプされた状態で表示され、そのフィールドは削除されます。

各フィールドは、そのページ上で新しいレイヤになるので(Doc.LayerCount プロパティを参照)、反映されたページで Doc.Flatten メソッドを呼び出す必要があります。

Field.Stamp メソッドを使用してドキュメントに各フィールドをスタンプできます。

Example

ありません。


DateTimeFormat Property

DateTimeFormat プロパティ

型 | デフォルト値 | 読み取り専用 | 説明
[C#] IFormatProvider [Visual Basic] IFormatProvider | null | いいえ | 日時形式を定義するためのフォーマット プロバイダ。

Notes

このプロパティは、AFDate_FormatEx や AFTime_FormatEx など javascript の関数を使用するフィールドに表示する日時形式を指定します。

Null 値はその地域に依存しないデフォルト形式を使用することを表します。

PDF をイメージにする時にその外観を確認できます。

フィールドをスタンプしないと、Adobe Reader は指定した形式を無視して別の形式にしてしまうことがあるので、Adobe Reader で表示した時に日時が指定した形式で表示されない場合があります。

Example

ありません。


Fields プロパティ

型 | デフォルト値 | 読み取り専用 | 説明
[C#] Fields [Visual Basic] Fields | 説明を参照してください。 | はい | フォームのすべての上位フィールド

Notes

このプロパティは、フォームのすべての上位フィールドのコレクションを表します。

このコレクションのフィールドは部分的なフィールド名またはゼロから始まるインデックスで参照できます。

全てのコレクションで Count プロパティを使用して、含まれているフィールドの数を定義したり、プログラム言語に合った標準メソッドを使用してコレクションをループできます。

Example

ありません。


FormatFields プロパティ

型 | デフォルト値 | 読み取り専用 | 説明
[C#] bool [Visual Basic] Boolean | true | いいえ | フィールドに挿入する前に値を書式設定します。

Notes
このプロパティは、挿入前に値を書式設定します。

Acrobat は数値や日付形式を設定するために JavaScript を使用します。これは、PDF の仕様ではなく Acrobat の仕様ですが、ABCpdf はこの書式を設定するスクリプトをサポートしています。

このプロパティが true の場合、ABCpdf はこれらの標準スクリプトを検出し、スクリプトに合った書式を生成します。

通常、このプロパティの値を変更する必要はありません。

Example

ありません。


GenerateAppearances プロパティ

型 | デフォルト値 | 読み取り専用 | 説明
[C#] bool [Visual Basic] Boolean | true | いいえ | フィールドの見た目をあらかじめ生成しておきます。

Notes
このプロパティは、フィールドの見た目をあらかじめ生成しておきます。

多くの PDF の表示アプリケーションはフィールドの見た目を動的に生成できません。つまり、そのフィールドやその値を指定したフィールドを表示できないということになります。代わりに、フィールドの見た目をあらかじめ生成しておく必要があります。

新しい見た目は必要なときだけ生成されます。一般的に、これはフィールドの値が変更した場合です。

通常、このプロパティの値を変更する必要はありません。

Example

ありません。


NeedAppearances プロパティ

型 | デフォルト値 | 読み取り専用 | 説明
[C#] bool [Visual Basic] Boolean | true | いいえ | ビューアがフィールドの見た目を自動的に再生成します。

Notes
このプロパティは、フィールド値が変更された場合に PDF 内の NeedAppearances フラグを設定します。

NeedAppearances フラグは PDF に埋め込まれた見た目を使用するのではなく、自動的にフィールドの見た目を生成するよう表示アプリケーションに通知します。

一般的には、表示アプリケーションが独自の見た目を生成させ、あらかじめ生成されたものを代替システムとして使用できるのがベストです。

通常、このプロパティの値を変更する必要はありません。

Example

ありません。


XHtmlOptions Object

XHtmlOptions オブジェクト

現在の HTML レンダリングの設定を表します。

このオブジェクトのプロパティは、Doc.AddImageUrl メソッドや Doc.AddImageHtml メソッドの制御に使用します。

このオブジェクトのメソッドは、Doc.AddImageUrl メソッドや Doc.AddImageHtml メソッドを使用して追加されたオブジェクトに効果があります。メソッドの一部はドキュメントを変更し、その他は追加されているコンテンツの情報を提供します。

ABCpdf 8.0 以降、さまざまな HTML エンジンを使って HTML ドキュメントをインポートできます。現在サポートされているエンジンは、（マイクロソフトのインターネット エクスプローラで使用されている） MSHTML エンジンと ABCpdf で動作するよう変更された Mozilla Firefox の Gecko エンジンの修正バージョンです。エンジンごとに HTML ドキュメントの解釈が異なり、サポートしている HTML オプションも異なります。詳細は、Engine プロパティを参照してください。

System.Object
   WebSupergoo.ABCpdf9.XHtmlOptions

メソッド | 説明
GetHttpStatusCode | HTTP ステータスコードを取得します
GetScriptReturn | クライアント側のオンロードスクリプトの戻り値を取得します
GetTagIDs | タグ付きで表示されている HTML オブジェクトの ID を取得します
GetTagRects | タグ付きで表示されているオブジェクトの位置を取得します
GetTagUntransformedRects | Doc.Transform が適用される前のタグ付きで表示されているオブジェクトの位置を取得します
LinkDestinations | 外部リンクを内部リンクに変換します
LinkPages | 可能であればどこでも外部リンクを内部リンクに変換します
PageCacheClear | HTML ページのキャッシュをクリアします
PageCachePurge | HTML ページのキャッシュを消去します

プロパティ | 説明
Engine | 使用する HTML エンジンを指定します
ForMSHtml | MSHTML エンジンでサポートされている HTML オプションにだけアクセスを提供するオブジェクト
ForGecko | Gecko HTML エンジンでサポートされている HTML オプションにだけアクセスを提供するオブジェクト
AddForms | フォームのフィールドを有効にするかを定義します
AddLinks | ハイパーリンクを有効にするかを定義します
AddMovies | ムービーなどのアクティブなコンテンツを追加しないよう設定します
AddTags | 特定のタグの位置を示すかを定義します
AutoTruncate | ページの末尾にある不要なコンテンツを自動的にクリッピングします
BreakMethod | HTML の改ページ ロジック
BreakZoneSize | HTML の改ページ可能な現在の描画領域の割合（パーセント）
BrowserWidth | 仮想ブラウザの幅（ピクセル単位）
CoerceVector | 強制的にベクトル出力にする条件
ContentCount | ページを有効にするために必要な最低項目数
DeactivateWebBrowser | WebBrowser を無効にします
DisableVectorCoercion | ベクトル出力を無効にする条件
DoMarkup | PDF に変換する前に HTML ページをマークアップします
FontEmbed | フォントを参照ではなく組み込むかを定義します
FontProtection | フォントを保護します
FontSubset | サブセットフォントを組み込むかを定義します
FontSubstitute | ファイルサイズを縮小するために代替フォントを使用します
HideBackground | ページの背景色を透明にするかを定義します
HostWebBrowser | WebBrowser コントロールをホストします
HtmlCallback | HTML のレンダリング時に呼び出されるマルチキャスト デリゲート
HtmlEmbedCallback | HTML のレンダリング時に、オブジェクトを組み込む時に呼び出されるマルチキャスト デリゲート
HttpAdditionalHeaders | 要求に送る、追加の HTTP ヘッダー
ImageQuality | JPEG などのイメージに設定する圧縮品質
InitialWidth | 自動サイズのページに使用する最小幅
LogonName | 認証に使用するユーザー名
LogonPassword | 認証に使用するパスワード
MakeFieldNamesUnique | フィールド名を一意にします
MaxAtomicImageSize | イメージが極めて小さいものであると判断するための最大サイズ
Media | HTML ページを作成する時に使用する CSS スタイルシートのセット
NoCookie | 自動 Cookie 処理を無効設定
OnLoadScript | ページを読み込んだ後に実行するスクリプト
PageCacheEnabled | ページをレンダリングする前にページのキャッシュを検索します
PageCacheExpiry | ページのキャッシュの保持時間（ミリ秒）
PageCacheSize | キャッシュに保持できるページ数
Paged | HTML をマルチページ PDF に変換します
RequestMethod | URL の要求メソッド
RetryCount | ページが使用不可または無効の場合に再試行する回数
TargetLinks | ハイパーリンクを新しいブラウザウィンドウに表示するかを定義します
Timeout | ページの取得に許される最大時間（ミリ秒）
UseActiveX | ActiveX を有効にするかを定義します
UseJava | Java を有効にするかを定義します
UseNoCache | プロキシサーバーが項目内容を再要求するかを定義します
UseResync | 全ての項目内容を再読込するかを定義します
UseScript | JavaScript や VBScript を有効にするかを定義します
UseVideo | Video を有効にするかを定義します


GetHttpStatusCode Method

GetHttpStatusCode メソッド

HTTP ステータスコードを取得します。

Syntax

[C#]
virtual int GetHttpStatusCode(int id)
[Visual Basic]
Overridable Function GetHttpStatusCode(id As Integer) As Integer

Params
名称 | 説明
id | アクセスするウェブページのオブジェクト ID
戻り値 | HTTP ステータスコード。取得できない場合はゼロ。

Notes

URL が HTTP プロトコルを使用している場合、HTTP ステータスコードを取得します。

ID は Doc.AddImageUrl メソッドの呼び出しから取得してください。

HostWebBrowser プロパティが true の場合、エラーを表すコードしか取得できません。200など、エラー以外のコードは取得できません。

Example

ありません。


GetScriptReturn Method

GetScriptReturn メソッド

クライアント側のオンロードスクリプトの戻り値を取得します。

Syntax

[C#]
virtual string GetScriptReturn(int id)
[Visual Basic]
Overridable Function GetScriptReturn(id As Integer) As String

Params
名称 | 説明
id | アクセスする Web ページのオブジェクト ID
戻り値 | 返された値

Notes

このメソッドは、クライアント側のオンロードスクリプトの戻り値を取得します。

Doc.AddImageUrl メソッドまたは Doc.AddImageHtml メソッドを呼び出して ID を取得してください。

詳細は、OnLoadScript プロパティを参照してください。

Example

UseScript プロパティを参照してください。


GetTagIDs Function

GetTagIDs メソッド

タグ付きで表示されている HTML オブジェクトの ID を取得します。

Syntax

[C#]
virtual string[] GetTagIDs(int id)
[Visual Basic]
Overridable Function GetTagIDs(id As Integer) As String()

Params
名称 | 説明
id | オブジェクトの ID
戻り値 | タグ付きで表示されている HTML オブジェクトの ID を取得します。

Notes

このメソッドは、タグ付きで表示されている HTML オブジェクトの ID を取得します。

このメソッドを使用するには、タグ機能を有効にする必要があります。詳細は、AddTags プロパティを参照してください。

このメソッドは Doc.AddImageUrl メソッド、Doc.AddImageHtml メソッド、Doc.AddImageToChain メソッドを呼び出して取得した ID を取得し、出力された PDF のページに表示されているオブジェクトの ID を返します。

例えば、下記の段落に関連付けられている ID は "p1" です。

<p id="p1" style="abcpdf-tag-visible: true">Gallia est omnis divisa in partes tres.<p>

オブジェクトが複数の領域に分けられている場合、ID は繰り返されることがあります。

ID は GetTagRects メソッドまたは GetTagUntransformedRects メソッドで返された XRects と一致します。

Example

GetTagRects メソッドを参照してください。


GetTagRects Function

GetTagRects メソッド

タグ付きで表示されているオブジェクトの位置を取得します。

Syntax

[C#]
virtual XRect[] GetTagRects(int id)
[Visual Basic]
Overridable Function GetTagRects(id As Integer) As XRect()

Params
名称 | 説明
id | オブジェクトの ID
戻り値 | タグ付きで表示されている HTML オブジェクトの位置

Notes

このメソッドは、タグ付きで表示されているオブジェクトの位置を取得します。位置は Doc.Transform プロパティで使用される位置と同じです。

このメソッドを使用するには、タグ機能を有効にする必要があります。詳細は、AddTags プロパティを参照してください。

このメソッドは Doc.AddImageUrl、 Doc.AddImageHtml、または Doc.AddImageToChain メソッドの呼び出しで取得した ID を取得し、出力された PDF ページに表示されているオブジェクトの位置を返します。

位置は GetTagIDs メソッドで返された ID とまさに一致します。

Example

下記のサンプルは、HTML レンダリングでのこのパラメータの効果を示します。

[C#]
Doc theDoc = new Doc();
theDoc.Rect.Inset(100, 100);
theDoc.Rect.Top = 700;
// スタイル 'abcpdf-tag-visible' 'true' を持つタグ要素
theDoc.HtmlOptions.AddTags = true;
int id = theDoc.AddImageHtml("<FONT id=\"p1\" style=\"abcpdf-tag-visible: true; font-size: 72pt\">Gallia est omnis divisa in partes tres.</FONT>");
// タグ付き要素のフレームの位置
XRect[] tagRects = theDoc.HtmlOptions.GetTagRects(id);
foreach (XRect theRect in tagRects) {
  theDoc.Rect.String = theRect.ToString();
  theDoc.FrameRect();
}
// tag ID の出力
string[] tagIds = theDoc.HtmlOptions.GetTagIDs(id);
theDoc.Rect.String = theDoc.MediaBox.String;
theDoc.Rect.Inset(20, 20);
theDoc.FontSize = 64;
theDoc.Color.String = "255 0 0";
theDoc.AddText("Tag ID \"" + tagIds[0] +"\":") ;
// ドキュメントを保存
theDoc.Save(Server.MapPath("HtmlOptionsGetTagRects.pdf"));
theDoc.Clear();
[Visual Basic]
Dim theDoc As Doc = New Doc()
theDoc.Rect.Inset(100, 100)
theDoc.Rect.Top = 700
' スタイル 'abcpdf-tag-visible' 'true' を持つタグ要素
theDoc.HtmlOptions.AddTags = true
Dim id As Integer
id = theDoc.AddImageHtml("<FONT id=""p1"" style=""abcpdf-tag-visible: true; font-size: 72pt"">Gallia est omnis divisa in partes tres.</FONT>")
' タグ付き要素のフレームの位置
Dim tagRects As XRect()
tagRects = theDoc.HtmlOptions.GetTagRects(id)
Dim theRect As XRect
For Each theRect in tagRects
  theDoc.Rect.String = theRect.ToString()
  theDoc.FrameRect()
Next
' tag ID の出力
Dim tagIds As String()
tagIds = theDoc.HtmlOptions.GetTagIDs(id)
theDoc.Rect.String = theDoc.MediaBox.String
theDoc.Rect.Inset(20, 20)
theDoc.FontSize = 64
theDoc.Color.String = "255 0 0"
theDoc.AddText("Tag ID """ + tagIds(0) +""":")
' ドキュメントを保存
theDoc.Save(Server.MapPath("HtmlOptionsGetTagRects.pdf"))
theDoc.Clear()

HtmlOptionsGetTagRects.pdf


GetTagUntransformedRects Function

GetTagUntransformedRects メソッド

Doc.Transform プロパティが適用される前の、タグ付きで表示されているオブジェクトの位置を取得します。

Syntax

[C#]
virtual XRect[] GetTagUntransformedRects(int id)
[Visual Basic]
Overridable Function GetTagUntransformedRects(id As Integer) As XRect()

Params
名称 | 説明
id | そのオブジェクトのオブジェクト ID
戻り値 | タグ付きで表示されている HTML オブジェクトの（Doc.Transform が適用される前の）位置

Notes

タグ付きで表示されているオブジェクトの位置を取得します。ID を取得した時と同じ位置が Doc.Transform プロパティの値に使用されます。

このメソッドを使用するには、タグ機能を有効にする必要があります。詳しくは、 AddTags プロパティを参照してください。

このメソッドは、Doc.AddImageUrl, Doc.AddImageHtml または Doc.AddImageToChain メソッドで取得した ID を取得し、出力された PDF ページに表示されているすべてのオブジェクトの位置を返します。

位置は GetTagIDs メソッドで返された ID とまさに一致します。

Example

GetTagRects メソッドを参照してください。


LinkDestinations Method

LinkDestinations メソッド

外部リンクを内部リンクに変換します。

Syntax

[C#]
virtual int LinkDestinations(IEnumerable<int> ids)
virtual int LinkDestinations(IEnumerable<int> linkIDs, IEnumerable<int> destIDs, bool linkPages)
[Visual Basic]
Overridable Sub LinkDestinations(ids As IEnumerable(Of Integer))
Overridable Sub LinkDestinations(linkIDs As IEnumerable(Of Integer), destIDs As IEnumerable(Of Integer), linkPages As Boolean)

Params
名称 | 説明
ids | linkIDs と destIDs （リンク ID と ジャンプ先 ID） を指定します。
linkIDs | リンク（href 属性を持つアンカータグ）を含んでいる表示オブジェクトの ID リスト
destIDs | ジャンプ先（name 属性を持つアンカータグ）を含んでいる表示オブジェクトの ID リスト
linkPages | HTML ページの URL を指すリンク（フラグメントなしの URL） を内部リンクに変換するかを定義します。デフォルト値は false です。
戻り値 | 変換されたリンクの数

Notes

このメソッドは linkIDs に指定した表示オブジェクトをスキャンして、 destIDs に指定した表示オブジェクト内でそのジャンプ先が見つかった場合、外部リンクを内部リンクに変換します。これは LinkPages メソッドに似ていますが、表示オブジェクトのリストだけ変換することができます。

デフォルトでは、作成された HTML 内のリンクはそのまま保持されます。つまり、Web ページのリンクは外部の URL につながります。URL をクリックするとブラウザーウィンドウが起動し、外部のリンク先が表示されます。

場合によっては、外部のブラウザウィンドウを起動するのではなく PDF 内のページを表示するようにドキュメントのリンクを変換したい場合があります。

例えば、互いにリンクする Web ページを複数追加します。オリジナルのウェブサイトからそのページにリンクするのではなく、PDF に表示されている通りにそのページを指すようリンクを定義したい場合があります。

同様に、ドキュメント内のリンクの特定の部分 (HTML フラグメント)を使用する場合、このメソッドを使用して外部リンクから内部リンクに変換したい場合があります。

Example

このサンプルは特定のジャンプ先を使った HTML ページのインポート方法を示しています。

まず、Doc オブジェクトを作成し、HTML がページの中央に表示されるよう枠を挿入します。リンクが有効になるように HTML のオプションを設定します。

[C#]
Doc theDoc = new Doc();
theDoc.Rect.Inset(18, 18);
theDoc.HtmlOptions.AddLinks = true;

[Visual
            Basic]
Dim theDoc As Doc = New Doc()
theDoc.Rect.Inset(18, 18)
theDoc.HtmlOptions.AddLinks = True

ドキュメントにページを追加します。

[C#]
List<int> theList = new List<int>();
int theID = theDoc.AddImageUrl("http://www.websupergoo.com/support.htm");
while (true) {
  theList.Add(theID);
  if (!theDoc.Chainable(theID))
    break;
  theDoc.Page = theDoc.AddPage();
  theID = theDoc.AddImageToChain(theID);
}

[Visual Basic]
Dim theList As List(Of Integer) = New List(Of Integer)
Dim theID As Integer
theID = theDoc.AddImageUrl("http://www.websupergoo.com/support.htm")
While True
  theList.Add(theID)
  If Not theDoc.Chainable(theID) Then
    Exit While
  End If
  theDoc.Page = theDoc.AddPage()
  theID = theDoc.AddImageToChain(theID)
End While

設定した URL には、特定のジャンプ先がたくさん設定されています。オリジナルの URL にリンクするのではなく、これらの特定のジャンプ先を使って PDF ページの特定の部分を表示するようにしています。

ページを追加した後、ページを平坦化することができます。平坦化すると以前の ID は無効になってつながりが無くなってしまうので、ページが完全に追加されるまでは平坦化することはできません。

[C#]
theDoc.HtmlOptions.LinkDestinations(theList);
for (int i = 1; i <= theDoc.PageCount; i++) {
theDoc.PageNumber = i;
theDoc.Flatten();
}

[Visual
            Basic]
theDoc.HtmlOptions.LinkDestinations(theList)
For i As Integer = 1 To theDoc.PageCount
theDoc.PageNumber = i
theDoc.Flatten()
Next

最後に保存します。

[C#]theDoc.Save(Server.MapPath("linkpages.pdf"));
theDoc.Clear();

[Visual Basic]
theDoc.Save(Server.MapPath("linkpages.pdf"))
theDoc.Clear()

実行結果は下記の通りです。PDF 内のリンクにジャンプします。

linkpages.pdf [Page 1]
linkpages.pdf [Page 2]


LinkPages Method

LinkPages メソッド

可能な限り、外部リンクを内部リンクに変換します

Syntax

[C#]
virtual void LinkPages()
[Visual Basic]
Overridable Sub LinkPages()

Params
名称 | 説明
戻り値 | なし

Notes

このメソッドは、ドキュメント全体をスキャンして、可能な限り外部リンクを内部リンクに変換します。代わりに LinkDestinations メソッドを使用して、指定した範囲だけ変換することができます。

デフォルトでは、作成された HTML のリンクはそのまま保持されます。つまり、Web ページ内のリンクは外部の URL につながります。URL をクリックすると、ブラウザウィンドウが起動し、外部のリンク先が表示されます。

場合によっては、外部のブラウザウィンドウを起動するのではなく PDF 内のページを表示するようにドキュメントのリンクを変換したい場合があります。

例えば、互いにリンクする Web ページを複数追加します。オリジナルのウェブサイトからそのページにリンクするのではなく、PDF に表示されている通りにそのページを指すようリンクを定義したい場合があります。

同様に、ドキュメント内のリンクに特定のジャンプ先 (HTML フラグメント)を使用する場合、このメソッドを使用して外部リンクから内部リンクに変換したい場合があります。

Example

このサンプルは、特定のリンク先を使っている HTML ページのインポート方法を示しています。

まず、Doc オブジェクトを作成し、HTML がページの中央に表示されるように枠を挿入します。リンクが有効になるように HTML のオプションを設定します。

[C#]
Doc theDoc = new Doc();
theDoc.Rect.Inset(18, 18);
theDoc.HtmlOptions.AddLinks = true;

[Visual
            Basic]
Dim theDoc As Doc = New Doc()
theDoc.Rect.Inset(18, 18)
theDoc.HtmlOptions.AddLinks = True

ドキュメントにページを追加します。

[C#]
int theID = theDoc.AddImageUrl("http://www.websupergoo.com/support.htm");
while (true) {
  if (!theDoc.Chainable(theID))
    break;
  theDoc.Page = theDoc.AddPage();
  theID = theDoc.AddImageToChain(theID);
}

[Visual Basic]
Dim theID As Integer
theID = theDoc.AddImageUrl("http://www.websupergoo.com/support.htm")
While True
  If Not theDoc.Chainable(theID) Then
    Exit While
  End If
  theDoc.Page = theDoc.AddPage()
  theID = theDoc.AddImageToChain(theID)
End While

参照した URL は、特定のジャンプ先をフル活用しています。オリジナルの URL にリンクするのではなく、これらの特定のジャンプ先が PDF のページを表示するようにします。

ページを追加した後、ページを平坦化することができます。平坦化すると以前の ID は無効になってつながりが無くなってしまうので、ページが完全に追加されるまでは平坦化することはできません。

[C#]
theDoc.HtmlOptions.LinkPages();
for (int i = 1; i <= theDoc.PageCount; i++) {
theDoc.PageNumber = i;
theDoc.Flatten();
}

[Visual
            Basic]
theDoc.HtmlOptions.LinkPages()
For i As Integer = 1 To theDoc.PageCount
theDoc.PageNumber = i
theDoc.Flatten()
Next

最後に保存します。

[C#]
theDoc.Save(Server.MapPath("linkpages.pdf"));
theDoc.Clear();

[Visual
            Basic]
theDoc.Save(Server.MapPath("linkpages.pdf"))
theDoc.Clear()

実行結果は下記の通りです。PDF のどこにでもリンクします。

linkpages.pdf [Page 1]
linkpages.pdf [Page 2]


PageCacheClear Method

PageCacheClear メソッド

HTML ページのキャッシュをクリアします。

Syntax

[C#]
virtual void PageCacheClear()
[Visual Basic]
Overridable Sub PageCacheClear()

Params
名称 | 説明
戻り値 | なし

Notes

ABCpdf は、最近使用した URL のキャッシュを5分間だけ保持します。

このメソッドを呼び出して、全ページのキャッシュをクリアすることができます。

Example

ありません。


PageCachePurge Method

PageCachePurge メソッド

HTML ページのキャッシュを消去します。

Syntax

[C#]
virtual void PageCachePurge()
[Visual Basic]
Overridable Sub PageCachePurge()

Params
名称 | 説明
戻り値 | なし

Notes

ABCpdf は、最近使用した URL のキャッシュを5分間だけ保持します。

このメソッドを呼び出して、有効期限切れのページすべてのキャッシュを消去することができます。

Example

ありません。


Engine Property

Engine プロパティ

型 | デフォルト値 | 読み取り専用 | 説明
[C#] EngineType [Visual Basic] EngineType | MSHtml | いいえ | HTML のインポート処理に使用するエンジン

Notes

HTML ページのインポート時に使用する HTML エンジンを指定します。

EngineType の列挙体は次のいづれかの値を取得できます。

  • MSHtml 特性：
    • 生成プロセス時に、Screen スタイルシートが使用されます。
    • ページ単位でページの高さを変えることができます。HTML 文書のセグメントは、Doc.AddImageToChain の各呼び出し時に対象の四角形にできるだけぴったり収まるように動的に作成されます。つまり、大きくして収めるのではなく、対象の四角形が大きいほどより多くのコンテンツが収まるということです。

    インターネット エクスプローラ 9 のサポート Internet Explorer 9 support

    ABCpdf は、マイクロソフトのインターネット エクスプローラ 9 に導入されたアーキテクチャ変更を自動検出して対応します。多くのサーバ アプリケーションにとって、これは分かりやすくコードを変更する必要がありません。

    Fusion ログ ビューアは MSHtml エンジンの初期化を妨げることで知られています。何か問題が起きた場合は、ログ ビューアを無効にするか、ローカルのカスタムログのパスを指定してみてください。

    現在、IE9 での MSHtml エンジンの使用にはいくつか制限があります。

    • HtmlCallback プロパティはサポートされていません。
    • HtmlEmbedCallback プロパティはサポートされていません。
    • ページのキャッシュは無効になっています。
  • Gecko 特性：
    • Gecko エンジンは OS の他の部分に左右されないコンポーネントで、インターネット エクスプローラまたはローカルの Firefox をアップグレードしても影響を受けることはありません。
    • HTML5 や CSS3 スタンダードを幅広くサポートしています。
    • 大半の SVG Full プロファイルをサポートしています。Web ページに埋め込まれた SVG グラフィックスはネイティブに PDF プリミティブに変換します。あるいは Doc.AddImageUrl に SVG ファイルの位置を指定するか、もしくは Doc.AddImageHtml に一連の SVG コンテンツを提供しそれを Gecko エンジンを使って PDF に変換することができます。
    • XSLT や MathML を使った XML ページをサポートしています。
    • Media プロパティを使って、使用するスタイルシート（印刷用/画面用）を指定できます。
    • 複数ページに及ぶ大きな表で、thead や tfoot 要素が複数ページに渡って適切に反復されます。
    • 生成される HTML は常に現在の四角形全体を埋め尽くします。最初に Doc.AddImageUrl または Doc.AddImageHtml を呼び出した後、ページの高さはそのポイントに固定されます。Doc.AddImageToChain メソッドで作成された後続ページは、（コンテンツをリフローせずに）現在の四角形にできるだけ収まるように自動的にスケーリングされます。
    • ActiveX のコンポーネントはサポートされていません。
    • Paged プロパティは常に true と見なします。
    • Gecko エンジンはページのキャッシュを使用しません。つまり、生成した PDF は決してメモリのキャッシュには保存されないという事です。
    • 一方、Web のキャッシュは、インターネットでダウンロードしたコンテンツを保存するために使用され、UseNoCache プロパティとの併用で設定可能です。
    • OnLoadScript の JavaScript は、直接 document オブジェクトを変更できません。例えば、document.write("hello world"); は機能しません。ほとんどの場合、ご希望の効果を得るには、（例えば document.body.innerHTML = "hello world"; のように）ページの要素を間接的に変更することで対処できます。
    • OnLoadScript を使用するのに UseScript は必要ありません。HTML で JavaScript の実行を許可しなくても、自由に JavaScript を使ってページをカスタマイズすることができます。

    Gecko の構成

    Firefox の設定を使って、Gecko エンジンの設定が行えます。

    • Firefox で「about:config」という URI を表示する
    • いつも通りに設定を変更する
    • Firefox を閉じる。Firefox を完全に閉じた時だけ、ファイルにその設定が保存されます。
    • %APPDATA\Mozilla\Firefox\profile.ini の「Path」値を参照する（パス値の例：Profiles/sx4fgjw2.default）
    • （profile.ini のパスの）「Path」値に示されたフォルダの prefs.js を XULRunner\defaults\pref にコピーする
      例：C:\Users\<user>\AppData\Roaming\Mozilla\Firefox\Profiles\sx4fgjw2.default\prefs.js
      を
      XULRunner\defaults\pref
      にコピーする
    • コピーした prefs.js で、user_pref() メソッドの呼び出しを pref() に変更する
    • prefs.js の最初の行を削除または変更しないでください。設定変更に関係のある行だけが必要なので、関係のない行は削除できます。

    サポートされている付加的な設定：

    値 | デフォルト値
    print.print_shrink_to_fit | true
    print.print_scaling | "1"

各 HTML エンジンは HtmlOptions のメソッドやプロパティのサブセットをサポートしています。IDE でサポートされているオプションをフィルタ処理するには、フィルタ オブジェクトの1つ（ForMSHtml か ForGecko ）を使用できます。


ForMSHtml Property

ForMSHtml プロパティ

型 | 説明
[C#] IHtmlMSHtmlOptions [Visual Basic] IHtmlMSHtmlOptions | MSHTML エンジンでサポートされている HTML オプションにだけアクセスを提供するオブジェクト

Notes

サポートされているメソッド

  • GetHttpStatusCode
  • GetScriptReturn
  • GetTagIDs
  • GetTagRects
  • GetTagUntransformedRects
  • LinkDestinations
  • LinkPages
  • PageCacheClear
  • PageCachePurge

サポートされているプロパティ

  • AddForms
  • AddLinks
  • AddMovies
  • AddTags
  • AutoTruncate
  • BreakMethod
  • BreakZoneSize
  • BrowserWidth
  • CoerceVector
  • ContentCount
  • DeactivateWebBrowser
  • DisableVectorCoercion
  • DoMarkup
  • FontEmbed
  • FontProtection
  • FontSubset
  • FontSubstitute
  • HideBackground
  • HostWebBrowser
  • HtmlCallback
  • HtmlEmbedCallback
  • HttpAdditionalHeaders
  • ImageQuality
  • InitialWidth
  • LogonName
  • LogonPassword
  • MakeFieldNamesUnique
  • MaxAtomicImageSize
  • NoCookie
  • OnLoadScript
  • PageCacheEnabled
  • PageCacheExpiry
  • PageCacheSize
  • Paged
  • RequestMethod
  • RetryCount
  • TargetLinks
  • Timeout
  • UseActiveX
  • UseJava
  • UseNoCache
  • UseResync
  • UseScript
  • UseVideo

Example

[C#]
Doc doc = new Doc();
doc.HtmlOptions.Engine = EngineType.MSHtml;
doc.HtmlOptions.ForMSHtml.AddLinks = true;

// You can store a reference to the filter to reduce code repetition
IHtmlMSHtmlOptions options = doc.HtmlOptions.ForMSHtml;

options.UseActiveX = true;
options.AutoTruncate = true;

doc.AddImageUrl("http://websupergoo.com");
doc.Save(Server.MapPath("wsg.pdf"));
[Visual Basic]
Dim theDoc As Doc = New Doc()
theDoc.HtmlOptions.Engine = EngineType.MSHtml
theDoc.HtmlOptions.ForMSHtml.AddLinks = True

' You can store a reference to the filter to reduce code repetition
Dim theOptions As IHtmlMSHtmlOptions = theDoc.HtmlOptions.ForMSHtml

theOptions.UseActiveX = True
theOptions.AutoTruncate = True

theDoc.AddImageUrl("http://websupergoo.com")
theDoc.Save(Server.MapPath("wsg.pdf"))


ForGecko Property

ForGecko プロパティ

型 | 説明
[C#] IHtmlGeckoOptions [Visual Basic] IHtmlGeckoOptions | Gecko HTML エンジンでサポートされている HTML オプションにだけアクセスを提供するオブジェクト

Notes

サポートされているメソッド

  • GetHttpStatusCode
  • GetScriptReturn
  • GetTagIDs
  • GetTagRects
  • GetTagUntransformedRects
  • LinkDestinations
  • LinkPages

サポートされているプロパティ

  • AddForms
  • AddLinks
  • AddMovies （Flash のみ）
  • AddTags
  • BrowserWidth
  • FontEmbed
  • FontSubset
  • FontSubstitute
  • FontProtection
  • HideBackground
  • ImageQuality
  • LogonName
  • LogonPassword
  • MakeFieldNamesUnique
  • Media
  • OnLoadScript
  • RequestMethod
  • UseNoCache
  • RetryCount
  • Timeout
  • UseScript

Example

[C#]
Doc doc = new Doc();
doc.HtmlOptions.Engine = EngineType.Gecko;
doc.HtmlOptions.ForGecko.AddLinks = true;

// You can store a reference to the filter to reduce code repetition
IHtmlGeckoOptions options = doc.HtmlOptions.ForGecko;

options.AddLinks = true;

doc.AddImageUrl("http://websupergoo.com");
doc.Save(Server.MapPath("wsg.pdf"));
[Visual Basic]
Dim theDoc As Doc = New Doc()
theDoc.HtmlOptions.Engine = EngineType.Gecko
theDoc.HtmlOptions.ForGecko.AddLinks = True

' You can store a reference to the filter to reduce code repetition
Dim theOptions As IHtmlGeckoOptions = theDoc.HtmlOptions.ForGecko

theOptions.AddLinks = True

theDoc.AddImageUrl("http://websupergoo.com")
theDoc.Save(Server.MapPath("wsg.pdf"))


AddForms プロパティ

型 | デフォルト値 | 読み取り専用 | 説明
[C#] bool [Visual Basic] Boolean | false | いいえ | フォームのフィールドを有効にするかを定義します

Notes

このプロパティは、フォームのフィールドを有効にするかを定義します。

PDF のフォームフィールドは、HTML のフォームフィールドと全く同じに動作しないので、出力結果は似ていますが、同じではありません。

Example

下記のサンプルは、このパラメータの HTML レンダリングでの効果を示します。

[C#]
Doc theDoc = new Doc();
// Covert html form fields to the pdf form fields in the output file
theDoc.HtmlOptions.AddForms = true;
int id = theDoc.AddImageUrl("http://www.websupergoo.com/download.htm");
// Save the document
theDoc.Save(Server.MapPath("HtmlOptionsAddForms.pdf"));
theDoc.Clear();
[Visual Basic]
Dim theDoc As Doc = New Doc()
' Covert html form fields to the pdf form fields in the output file
theDoc.HtmlOptions.AddForms = True
Dim id As Integer = theDoc.AddImageUrl("http://www.websupergoo.com/download.htm")
' Save the document
theDoc.Save(Server.MapPath("HtmlOptionsAddForms.pdf"))
theDoc.Clear()

HtmlOptionsAddForms.pdf


AddLinks プロパティ

型 | デフォルト値 | 読み取り専用 | 説明
[C#] bool [Visual Basic] Boolean | false | いいえ | ハイパーリンクを有効にするかを定義します。

Notes

このプロパティは、HTML 内のリンクを PDF に設定するかを定義します。

無効のリンクは、クリックしても対象となるリンクにリンクしません。

有効なリンクは、指定した Web ページにリンクします。この Web ページはブラウザに表示されます。

外部リンクを内部の PDF リンクに変更するには、Doc.LinkPages メソッドを参照してください。

Example

Doc.LinkPages メソッドを参照してください。


AddMovies プロパティ

型 | デフォルト値 | 読み込み専用 | 説明
[C#] bool [Visual Basic] Boolean | false | いいえ | ムービーなどのアクティブなコンテンツを追加するかを定義します

Notes

Flash (SWF)、AVI、MPEG、WMV のようなコンテンツの埋め込みを行えます。

Flash / SWFのプレビュー ABCpdf は Flash （SWF）ムービーの静止プレビューを自動的に作成します。

プレビューは Flash がインストールされていない場合に見るもので、PDF を印刷する際に使用するものです。通常は、Acrobat 以外のビューアを使用して PDF を開く場合に見るものです。

プレビューは特定の解像度で作成し、ムービーの特定ポイントの内容を使用している必要があります。デフォルトでは、値は FlashPreviewTime や FlashPreviewDPI のレジストリ キーから取得されます。しかし、これらのデフォルトをオーバーライドするために、EMBED タグ内で ABCpdf_PreviewTime 属性や ABCpdf_PreviewDPI 属性を指定できます。

例えば、300 dpi でムービー内の 2000 ミリ秒のプレビューを取得するには、次の HTML を使用できます。

<EMBED src="frogger.swf"
WIDTH="700" HEIGHT="500"
ABCpdf_PreviewTime="2000"
ABCpdf_PreviewDPI="300"></EMBED>

一部のムービーはスクリプトを使用して表示方法を定義するので描画に時間がかかります。ABCpdf_PreviewWaitTime 属性を使用してプレビューが作成される前にムービーを初期化する時間（ミリ秒単位）を定義できます。

これらの属性は、設定が PDF ではなくムービーの内容に依存する場合に役立ちます。

Example

ありません。


AddTags Property

AddTags プロパティ

型 | デフォルト値 | 読み取り専用 | 説明
[C#] bool [Visual Basic] Boolean | false | いいえ | 特定のタグの位置を示すかを定義します

Notes

このプロパティは、後でタグの位置がわかるように HTML の特定のタグを強調するかを定義します。

Web ページの追加後に、GetTagIDs や GetTagRects メソッドを使用して PDF ページのオブジェクト情報を取得できます。

最終的な出力で実際のビジュアル的な表現がある HTML 要素にしかタグが付けられません。例えば、<form> 要素はビジュアル的な表現がないのでタグ付けされません。

HTML 要素に無理に CSS スタイルの命令を付けて作成できる場合があります。

<form style="border: 1px solid red"></form>
<form style="outline: 1px solid transparent"></form>

MSHTML エンジンの構文

スタイルの全要素 'abcpdf-tag-visible' 'true' にタグが付けられます。

例：

<p id="p1" style="abcpdf-tag-visible: true">Gallia est omnis divisa in partes tres.<p>

Gecko エンジンの構文

タグ付けしたい HTML 要素に abcpdf-tag-visible クラスを追加してください。

<style type="text/css">.abcpdf-tag-visible { border: 1px solid transparent; }</style>
...
<p id="p1" class="abcpdf-tag-visible">Lorem ipsum dolor sit amet</p>

Example

GetTagRects と GetTagUntransformedRects メソッドを参照してください。


AutoTruncateプロパティ
型 | デフォルト値 | 読み取り専用 | 説明
[C#] bool [Visual Basic] Boolean | true | いいえ | ページ末尾の不要なコンテンツを自動的にクリッピングします

Notes

このプロパティは HTML ページの末尾にある不要なコンテンツを表示するかしないか設定します。

不要なものはいろいろな条件で決まります。最も一般的な例としては、表示される必要のない繰り返される背景画像があります。

Example

ありません。


BreakMethod Property

BreakMethod プロパティ

型 | デフォルト値 | 読み取り専用 | 説明
[C#] HtmlBreakMethodType [Visual Basic] HtmlBreakMethodType | CumulativeCohesion または GlobalOptimum | いいえ | HTML の改ページ ロジック

Notes

このプロパティは改ページのアルゴリズムを指定します。

HtmlBreakMethodType 列挙体は次の値と

  • CumulativeCohesion − それぞれの横方向の行/縦方向の位置を使用するすべてのオブジェクトの累積的な凝集度を使用します
  • MaximumCohesion − それぞれの横方向の行/縦方向の位置を使用するオブジェクトの中の最大凝集度を使用します
次の値を組み合わせて取得できます。
  • GlobalOptimum − 改ページ位置の周辺を全体的に最適化します
  • LocalOptimum − 改ページ位置の周辺を局部的に最適化します
  • NoOptimization − 最適化なし

HTML ページで表現されるどのオブジェクトも凝集度が関連しています。フォームフィールドに変換されたテキスト、イメージ、フォームコントロールは凝集度が高く、簡単な線や形は凝集度が低いです。

改ページは凝集度が低いところで行われます。

凝集度の高いオブジェクトがなく凝集度の低いオブジェクトが多数あるところで改ページする場合は、MaximumCohesion を使用してください。

改ページの位置は凝集度によって最適化されます。局部的に最適化される場合、最終的な改ページ位置と予想される改ページ位置の間の凝集度の値は単調関数です。

Example

ありません。


BreakZoneSize Property

BreakZoneSize プロパティ

型 | デフォルト値 | 読み取り専用 | 説明
[C#] int [Visual Basic] Integer | 75 | いいえ | HTML の改ページ可能な現在の描画領域の割合（パーセント）。

Notes

HTML を PDF に 追加する時、HTML は現在の Doc.Rect の中に配置されます。

通常、この領域の最初の方で改ページしたくはないので、ABCpdf は改ページに適した下の方だけを調べます。

このプロパティは、改ページに適した位置として ABCpdf が下からどの辺りまで調べるかをパーセントで定義します。

Example

ありません。


BrowserWidth Property

BrowserWidth プロパティ

型 | デフォルト値 | 読み取り専用 | 説明
[C#] int [Visual Basic] Integer | 0 | いいえ | 仮想ブラウザの幅（ピクセル単位）

Notes

MSHtml エンジンの場合

このプロパティは、HTML のレンダリング時の仮想ブラウザの幅を表します。

HTML のドキュメントにはあらかじめ定義された幅や高さがありません。このドキュメントの幅はクライアントのブラウザの幅によって変わります。その内容がどのくらい表示されるかは、ブラウザの幅によります。

HTML レンダリングの幅を制御するには、Width パラメータを使用します。これは、指定した幅のブラウザウィンドウに HTML を表示します。一般的な値は 640 または 800 です。

Width パラメータが 0 の場合、Web ページを左から右にスクロールしなくても全内容が表示されるサイズになります。このデフォルトを使用して、HTML の内容すべてを表示することができます。

Gecko エンジンの場合

この値は、Gecko エンジンでレイアウトする時に使用する用紙の幅（ピクセル単位）を定義します。Gecko エンジンは常にページ分割された状態で生成してスクロールする必要がないので、この幅を超えるコンテンツは縦に再回り込みされることがよくあります。例えば、CSS の float プロパティを使って設定されたサイドバーは、用紙の幅が両方の項目を入れるのに十分ではないので、「メインコンテンツ領域」の下に表示されることがあります。値が 0 の場合、用紙の幅は現在の Rect の大きさから定義されます。

Example

下記のサンプルは、このパラメータの PDF レンダリングでの効果を示しています。

[C#]
Doc theDoc = new Doc();
string theURL = "http://www.nasa.gov/multimedia/imagegallery/image_feature_313.html";
// Render html page with default browser width
theDoc.AddImageUrl(theURL);
// Save the document
theDoc.Save(Server.MapPath("HtmlOptionsBrowserWidth0.pdf"));
theDoc.Clear();
// Render html page with browser width = 300
theDoc.HtmlOptions.BrowserWidth = 300;
theDoc.AddImageUrl(theURL);
// Save the document
theDoc.Save(Server.MapPath("HtmlOptionsBrowserWidth300.pdf"));
theDoc.Clear();
[Visual Basic]
Dim theDoc As Doc = New Doc()
Dim theURL As String = "http://www.nasa.gov/multimedia/imagegallery/image_feature_313.html"
' Render html page with default browser width
theDoc.AddImageUrl(theURL)
' Save the document
theDoc.Save(Server.MapPath("HtmlOptionsBrowserWidth0.pdf"))
theDoc.Clear()
' Render html page with browser width = 300
theDoc.HtmlOptions.BrowserWidth = 300
theDoc.AddImageUrl(theURL)
' Save the document
theDoc.Save(Server.MapPath("HtmlOptionsBrowserWidth300.pdf"))
theDoc.Clear()

HtmlOptionsBrowserWidth0.pdf

HtmlOptionsBrowserWidth300.pdf


CoerceVector Property

CoerceVector プロパティ

型 | デフォルト値 | 読み取り専用 | 説明
[C#] HtmlRenderConditions [Visual Basic] HtmlRenderConditions | Default | いいえ | 強制的にベクトル出力にする条件

Notes
HtmlRenderConditions 列挙体は以下の値の組み合わせです。
  • Never – ベクトル出力を強制しない
  • Always – 常に強制的にベクトル出力にする
  • Default – デフォルトでは、強制的にベクトル出力にする。現在は、OnFiltersDisabled と同じ動きになります。
  • OnFiltersDisabled – DirectX フィルタが無効の場合は強制的にベクトル出力にする
  • OnPartialContent – 無視されます
  • OnVectorCoercionFailed – 無視されます

このプロパティが DisableVectorCoercion で無効にされていない場合に強制的にベクトル出力にする条件を定義します。これは Microsoft XPS ドキュメント ライターのプリンタや WebBrowser のホストが必要です。このプリンタが利用できない場合や HostWebBrowser が false の場合、このプロパティは無視され Never （ベクトル出力を強制しない）とみなされます。

DirectX フィルタまたは ActiveX コントロールなど、何らかの構造が HTML ページで使われている場合、出力がラスター化される場合があります。強制的にベクトル出力にするようになっている場合、ベクトル出力にはなりますが出力のラスター化を引き起こすオブジェクトはベクトル出力では表示されないことがあります。

強制的にベクトル出力するようになっている場合、DeactivateWebBrowser は無視され、false とみなされます。

Example

UseScript プロパティを参照してください。


ContentCount プロパティ

型 | デフォルト値 | 読み取り専用 | 説明
[C#] int [Visual Basic] Integer | 36 | いいえ | ページを有効にするために必要な最低項目数

Notes
このプロパティは、HTML ページに含める最低項目数を表します。

項目数がこのプロパティ値より少ない場合、そのページは無効となります。RetryCount プロパティの設定に応じて、そのページの再読み込みを要求するか、エラーが返されます。

Example

RetryCount プロパティを参照してください。


DeactivateWebBrowser Property

DeactivateWebBrowser プロパティ

型 | デフォルト値 | 読み取り専用 | 説明
[C#] bool [Visual Basic] Boolean | true | いいえ | WebBrowser を無効にします。

Notes

このプロパティは、レンダリングの前に WebBrowser を無効にします。

WebBrowser を有効にしておくと出力がラスター化される場合があるので、CoerceVector プロパティ が有効になっていない場合、デフォルトでは WebBrowser は無効になります。

Google マップなど、WebBrowser を有効にしておく必要があるページをレンダリングするには、このプロパティを false にし、場合によっては CoerceVector プロパティを無効にしてください。

Example

ありません。


DisableVectorCoercion Property

DisableVectorCoercion プロパティ

型 | デフォルト値 | 読み取り専用 | 説明
[C#] HtmlRenderConditions [Visual Basic] HtmlRenderConditions | Default | いいえ | ベクトル出力を無効にする条件

Notes

HtmlRenderConditions 列挙体は以下の値の組み合わせです。

  • Never – ベクトル出力は無効にはならない
  • Always – 常にベクトル出力にしない
  • Default – デフォルトでは、ベクトル出力にしない。 現在は OnPartialContent や OnVectorCoercionFailed と同じ動きになります。
  • OnFiltersDisabled – DirectX フィルタが無効の場合はベクトル出力にしない
  • OnPartialContent – HTML ページがベクトル出力でサポートされているサイズよりも大きい場合はベクトル出力にしない
  • OnVectorCoercionFailed – ベクトル出力に失敗した時はベクトル出力にはせずにレンダリングを続ける

このプロパティは、ベクトル出力を無効にする条件を定義します。そうでない場合は、CoerceVector で指定されているように強制的にベクトル出力になります。強制的にベクトル出力にするためのサイズ制限があります。HTML ページがそのサイズ制限よりも大きい場合、デフォルトの動作はこの場合ベクトル出力を無効にすることなのでベクトル出力にはなりません。

予期せぬエラーでベクトル出力が失敗することがあります。OnVectorCoercionFailed が指定されている場合、そのページはベクトル出力にはならずにレンダリングされます。そうでなければ、例外がスローされます。ベクトル出力がラスター化されてしまったら、HostWebBrowser を false にしてレンダリングしてみてください。

Example

UseScript プロパティを参照してください。


DoMarkupプロパティ
型 | デフォルト値 | 読み取り専用 | 説明
[C#] bool [Visual Basic] Boolean | true | いいえ | PDF に変換する前に HTML ページをマークアップします。

Notes

このプロパティは HTML ページを PDF に変換する前にマークアップします。

マークアップは一般的な HTML の問題点を自動的に解決します。また、改ページの CSS タグを有効にしたり、フィールドを追加したり、タグ付きコンテンツの識別にも必要となります。

しかし、これらの特徴を使用していなければ、マークアップを省略してドキュメントの処理時間を速くすることができます。

Example

ありません。


FontEmbed プロパティ

型 | デフォルト値 | 読み取り専用 | 説明
[C#] bool [Visual Basic] Boolean | false | いいえ | 可能であればフォントを埋め込むか定義します。

Notes
このプロパティは、可能であればフォントを埋め込むか定義します。

HTML をレンダリングするには、PDF ドキュメントにフォントを追加する必要があります。

デフォルトでは、フォントは参照設定となります。この設定を True （フォントを埋め込む）にすると、処理時間と PDF ドキュメントのサイズ が大きくなりますが、その出力は正確なものとなります。

Example

ありません。


FontProtection プロパティ

型 | デフォルト値 | 読み取り専用 | 説明
[C#] bool [Visual Basic] Boolean | true | いいえ | フォントを保護します。

Notes
このプロパティは、フォントを保護します。

HTML をレンダリングするには、PDF ドキュメントにフォントを埋め込む必要があります。

フォントにライセンス情報が含まれている場合がよくあります。デフォルトでは、ABCpdf は埋め込み許可のないフォントを埋め込みません。

デフォルト値を変更することにより、このフォントの使用を許可します。

Example

ありません。


FontSubset Property

FontSubset プロパティ

型 | デフォルト値 | 読み取り専用 | 説明
[C#] bool [Visual Basic] Boolean | true | いいえ | 可能であればサブセットフォントを埋め込みます

Notes

このプロパティは、可能であればサブセットフォントを埋め込みます。

HTML レンダリングは、PDF ドキュメントにフォントを埋め込むよう要求することがあります。

デフォルトでは、これらのフォントはどこでも参照されます。フォントが確実に埋め込まれるようにするには、FontEmbed を使用できます。FontEmbed が true の場合、このプロパティを使用してサブセットフォントを埋め込むか（必要なグリフだけを埋め込むか、それとも全部のフォントを埋め込むのか）を指定できます。これは出力サイズと処理時間が大幅に増えます。

Example

ありません。


FontSubstitute プロパティ

型 | デフォルト値 | 読み取り専用 | 説明
[C#] bool [Visual Basic] Boolean | true | いいえ | ファイルサイズを縮小するために代替フォントを使用します。

Notes
このプロパティは、代替フォントを使用します。

多くの場合、指定したフォントの代わりにデフォルトの内蔵フォントを代替フォントとして使用できます。

これは、出力品質をほとんどあるいは全く損なわずに処理速度を速め、ファイルサイズを縮小することができます。

Example

ありません。


HideBackground プロパティ

型 | デフォルト値 | 読み取り専用 | 説明
[C#] bool [Visual Basic] Boolean | false | いいえ | ページの背景色を透明にするかを定義します。

Notes
このプロパティは、HTML ページの背景色を透明にするかを定義します。

背景色は背景イメージやタイルイメージとは違います。このプロパティは背景色だけを対象とします。

Example
下記のサンプルは、このパラメータの HTML レンダリングでの効果を示しています。

[C#]
Doc theDoc = new Doc();
string theURL = "http://www.usa.gov/";
// Add some content
theDoc.Color.String = "0 255 255"; // light blue
theDoc.FillRect(200, 200);
// Hide the background of the HTML page so content shows through
theDoc.HtmlOptions.HideBackground = true;
theDoc.AddImageUrl(theURL);
// Save the document
theDoc.Save(Server.MapPath("HtmlOptionsHideBackground.pdf"));
theDoc.Clear();
[Visual Basic]
Dim theDoc As Doc = New Doc()
Dim theURL As String = "http://www.usa.gov/"
' Add some content
theDoc.Color.String = "0 255 255" ' light blue
theDoc.FillRect(200, 200)
' Hide the background of the HTML page so content shows through
theDoc.HtmlOptions.HideBackground = True
theDoc.AddImageUrl(theURL)
' Save the document
theDoc.Save(Server.MapPath("HtmlOptionsHideBackground.pdf"))
theDoc.Clear()

HtmlOptionsHideBackground.pdf


HostWebBrowser Property

HostWebBrowser プロパティ

型 | デフォルト値 | 読み取り専用 | 説明
[C#] bool [Visual Basic] Boolean | true (レジストリの値でオーバーライドできます) | いいえ | WebBrowser コントロールをホストします

Notes

WebBrowser コントロールをホストします。

デフォルトでは、WebBrowser コントロールはホストされます。スクリプトにアクセス可能なプロパティ（left、top、width、height、 offsetLeft、offsetTop、offsetWidth、offsetHeight、clientLeft、clientTop、clientWidth、clientHeight、 pixelLeft、pixelTop、pixelWidth、pixelHeight、posLeft、posTop、posWidth、posHeight）は適切な値を保持します。ソースドキュメントは HTML との互換性があればどんな形式でも構いません。例えば、WebBrowser コントロールは XML を HTML に変換するので、（XSL を適用した/しない）XML を使用できます。

WebBrowser コントロールがホストされない場合、スクリプトにアクセス可能な動的なジオメトリック プロパティは常にゼロです。ソースドキュメントは HTML できちんと解釈されます。

このプロパティは CoerceVector プロパティ、NoCookie プロパティ、GetHttpStatusCode メソッドに影響を与えます。

現在、IE9 ではこの値の効果はありません。OS に IE9 がインストールされている場合、常にこの値を False と見なします。

Example

HttpAdditionalHeaders プロパティを参照してください。


HtmlCallback プロパティ

型 | デフォルト値 | 読み取り専用 | 説明
[C#] HtmlCallback [Visual Basic] HtmlCallback | null | いいえ | HTML のレンダリング時に呼び出されるマルチキャストデリゲート。

Notes

このプロパティは、HTML のレンダリング時に呼び出されるマルチキャストデリゲート。

HTML のレンダリング時にデリゲートを定期的に呼び出します。これは進行状況を把握したり、稼動中にページを取得して、変更または問い合わせるためのメカニズムを提供します。

ページを cache から取得した場合、このデリゲートは呼び出されません。

コールバック時の処理量は最小限に控えるよう注意してください。

[C#]
delegate void HtmlCallback(string stage, object page);

[Visual Basic]
Delegate Sub HtmlCallback(ByVal stage As String, ByRef page As Object);

各処理での値は、'get width'、 'get height'、'render' です。詳細は Microsoft のヘルプを参照してください。

Example

下記のサンプルは、HTML レンダリングでの効果を示しています。

[C#]
Doc theDoc = new Doc();
string theURL = "http://www.nasa.gov/multimedia/imagegallery/image_feature_302.html";
// Setup the callback
theDoc.HtmlOptions.HtmlCallback = MyHtmlCallback;
// Render html page
theDoc.AddImageUrl(theURL);
// Add log over the top of the content
theDoc.Rect.Inset(100, 100);
theDoc.Color.String = = "255 0 0";
theDoc.FontSize = 96;
theDoc.AddText(theLog);
// Save the document
theDoc.Save(Server.MapPath("HtmlOptionsCallback.pdf"));
theDoc.Clear();

[C#]
private static string theLog = "";
public static void MyHtmlCallback(string stage, object page)
{
  theLog += stage + "\n";
}
[Visual Basic]
Dim theDoc As Doc = New Doc()
Dim theURL As String = "http://www.nasa.gov/multimedia/imagegallery/image_feature_302.html"

' Setup the callback
theDoc.HtmlOptions.HtmlCallback = AddressOf MyHtmlCallback
' Render html page
theDoc.AddImageUrl(theURL)
' Add log over the top of the content
theDoc.Rect.Inset(100, 100)
theDoc.Color.String = "255 0 0"
theDoc.FontSize = 96
theDoc.AddText(theLog)
' Save the document
theDoc.Save(Server.MapPath("HtmlOptionsCallback.pdf"))
theDoc.Clear()

[Visual Basic]
Private Shared theLog As String = ""
Public Shared Sub MyHtmlCallback(stage As String, page As Object)
  theLog = theLog + stage + "\n"
End Sub

HtmlOptionsCallback.pdf


HtmlEmbedCallback Property

HtmlEmbedCallback プロパティ

型 | デフォルト値 | 読み取り専用 | 説明
[C#] HtmlEmbedCallback [Visual Basic] HtmlEmbedCallback | null | いいえ | HTML のレンダリング時に、オブジェクトを埋め込む時に呼び出されるマルチキャスト デリゲート

Notes

このデリゲートはオブジェクトを埋め込む時に呼び出されます。

HTML に埋め込まれるオブジェクト（HTML の埋め込みタグが付いているオブジェクトなど）が特定のコンテンツ型の場合、コールバックを発生します。このコールバックは埋め込みオブジェクトのパラメータの変更方法を提供します。

HtmlEmbedCallback マルチキャスト デリゲートの定義は次の通りです。

[C#]
delegate void HtmlEmbedCallback(Doc doc, HtmlEmbedInfo info);

[Visual Basic]
Delegate Sub HtmlEmbedCallback(doc As Doc, info As HtmlEmbedInfo);

doc は、追加する HTML の目標の Doc です。HtmlEmbedInfo のプロパティは次の通りです。

HtmlEmbedInfo のプロパティ | 型 | デフォルト値 | 読み取り専用 | 説明
Url | [C#] string [Visual Basic] String | なし | はい | 埋め込みオブジェクトの URL
BaseUrl | [C#] string [Visual Basic] String | なし | はい | 相対 URL を決定するための基準となる URL。 これは HTML の URL または base タグの URL になります。
EmbedType | HtmlEmbedType | 説明を参照 | はい | 埋め込みオブジェクトのコンテンツ型。利用可能な値は下表を参照してください。
ParameterNamesAreCaseSensitive | [C#] bool [Visual Basic] Boolean | なし | はい | パラメータの名前の大文字/小文字を区別するかを定義します
Parameters | HtmlParameterDictionary | なし | はい | 埋め込みオブジェクトのパラメータ。 EmbedType の値に依存します。HtmlParameterDictionary のパブリック API は System.Collections.Generic.Dictionary のものと非常に似ており、文字列キーや HtmlParameter 値を持つ辞書のように動作します。

パラメータは以下の通り EmbedType に依存します。

EmbedType | EmbedType の説明 | ParameterNamesAreCaseSensitive | パラメータ
None | コンテンツなし。この値は使用されません。 |  |
Swf | SWF ファイル | SWF ファイルのバージョンが 7 またはそれ以上の場合は True | Parameters プロパティは FlashVars パラメータの中のパラメータと、SWF ファイルの URL の中のパラメータを含んでいます。

HtmlParameterDictionary の中の値は HtmlParameter 型の値です。

HtmlParameter のプロパティ 型 デフォルト値 読み取り専用 説明
Value [C#]
string

[Visual Basic]
String 		なし いいえ そのパラメータの値
Conversion HtmlParameterConversionType None いいえ その値を変換します
HtmlParameterConversionType | 説明
None | 変換なし
UrlToTextFileContent | Value で指定したファイルのテキスト内容に、その値を URL として設定します。

Example

下記のコードは、このパラメータの HTML レンダリングでの効果を示します。

[C#]
Doc theDoc = new Doc();
string theURL = "file:///C:/myChart.html";
// Setup the callback
theDoc.HtmlOptions.HtmlEmbedCallback = MyHtmlEmbedCallback;
// Render html page
theDoc.AddImageUrl(theURL);
// Save the document
theDoc.Save(Server.MapPath("HtmlOptionsEmbedCallback.pdf"));
theDoc.Clear();

[C#]
public static void MyHtmlEmbedCallback(Doc doc, HtmlEmbedInfo info)
{
  if (info.EmbedType==HtmlEmbedType.Swf) {
    HtmlParameter param;
    if (info.Parameters.TryGetValue("dataURL", out param)) {
      info.Parameters.Remove("dataURL");
      param.Conversion = HtmlParameterConversionType.UrlToTextFileContent;
      info.Parameters["dataXML"] = param;
    }
  }
}

[Visual Basic]
Dim theDoc As Doc = New Doc()
Dim theURL As String = "file:///C:/myChart.html"
' Setup the callback
theDoc.HtmlOptions.HtmlEmbedCallback = AddressOf MyHtmlEmbedCallback
' Render html page
theDoc.AddImageUrl(theURL)
' Save the document
theDoc.Save(Server.MapPath("HtmlOptionsEmbedCallback.pdf"))
theDoc.Clear()

[Visual Basic]
Public Shared Sub MyHtmlEmbedCallback(doc As Doc, info As HtmlEmbedInfo)
  If info.EmbedType = HtmlEmbedType.Swf Then
    Dim param As HtmlParameter
    If info.Parameters.TryGetValue("dataURL", param) Then
      info.Parameters.Remove("dataURL")
      param.Conversion = HtmlParameterConversionType.UrlToTextFileContent
      info.Parameters("dataXML") = param
    End If
  End If
End Sub


HttpAdditionalHeaders Property

HttpAdditionalHeaders プロパティ

型 | デフォルト値 | 読み取り専用 | 説明
[C#] string [Visual Basic] String | "" | いいえ | 要求に送る、追加の HTTP ヘッダー

Notes

このプロパティは、デフォルトのヘッダーに追加する HTTP ヘッダーを指定します。これは、HTTP ヘッダーの構文に従わなければなりません。

例えば、ある認証（例：ASP.NET のフォーム）で再認証しなくてすむように次の要求のセッション ID を返す場合に、応答から要求へクッキーを追加できます。HTTP ヘッダーにクッキーを指定する場合の詳細は NoCookie プロパティを参照してください。

Example

次のサンプルは、このプロパティの使用方法を示しています。

[C#]
Doc doc = new Doc();
string url = ...;
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
request.CookieContainer = new CookieContainer(); // required for
                                                HttpWebResponse.Cookies
request.Credentials = ...;
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
if(response.Cookies.Count>0) { // includes ASP.NET_SessionId
bool needsCookie2 = false;
StringBuilder builder = new StringBuilder("Cookie: ");
for(int i = 0; i<response.Cookies.Count; ++i) {
Cookie cookie = response.Cookies[i];
if(!needsCookie2 && cookie.Version!=1)
needsCookie2 = true;
if(i>0)
builder.Append("; ");
builder.Append(cookie.ToString());
}
builder.Append(!needsCookie2? "\r\n": "\r\nCookie2:
                                                $Version=1\r\n");
doc.HtmlOptions.HttpAdditionalHeaders = builder.ToString();
}
doc.HtmlOptions.NoCookie = true;
doc.HtmlOptions.HostWebBrowser = false;
// cookieless Forms Authentication adds authentication ticket to the URL
int id = doc.AddImageUrl(response.ResponseUri.AbsoluteUri);
doc.Save(Server.MapPath("HttpHeaders.pdf"));
doc.Clear();
[Visual Basic]
Dim doc As Doc = New Doc()
Dim url As String = ...
Dim request As HttpWebRequest = CType(WebRequest.Create(url), HttpWebRequest)
request.CookieContainer = New CookieContainer() ' required for
                                                HttpWebResponse.Cookies
request.Credentials = ...
Dim response As HttpWebResponse = CType(request.GetResponse(), HttpWebResponse)
If response.Cookies.Count > 0 Then ' includes ASP.NET_SessionId
Dim needsCookie2 As Boolean = False
Dim builder As StringBuilder = New StringBuilder("Cookie: ")
For i As Integer = 0 To response.Cookies.Count - 1
Dim cookie As Cookie = response.Cookies(i)
If Not needsCookie2 AndAlso cookie.Version <> 1
                                                Then
needsCookie2 = True
End If
If i > 0 Then builder.Append("; ")
builder.Append(cookie.ToString())
Next
If Not needsCookie2 Then
builder.Append(ControlChars.CrLf)
Else
builder.Append(ControlChars.CrLf & "Cookie2:
                                                $Version=1" & ControlChars.CrLf)
End If
doc.HtmlOptions.HttpAdditionalHeaders = builder.ToString()
End If
doc.HtmlOptions.NoCookie = True
doc.HtmlOptions.HostWebBrowser = False
' cookieless Forms Authentication adds authentication ticket to the URL
Dim id As Integer = doc.AddImageUrl(response.ResponseUri.AbsoluteUri)
doc.Save(Server.MapPath("HttpHeaders.pdf"))
doc.Clear()

ASP.NET_SessionId ASP.NET でアプリケーションを実行する場合、セッションを識別するのでアプリケーションの送信要求からクッキーを使用することはできません。対象の HTML ページを含んでいるサイトが違うサイトの場合、そのセッション ID は無効になります。サイトが同じ場合、同じセッションに再通信することになるので ASP.NET は同じセッションへの再通信を許可しません。


ImageQuality Property

ImageQuality プロパティ

型 | デフォルト値 | 読み取り専用 | 説明
[C#] int [Visual Basic] Integer | 101 | いいえ | JPEG などのイメージに設定する圧縮品質

Notes

このプロパティは、HTML の生成時に設定するイメージの品質を定義します。

ABCpdf は HTML の生成時のイメージ圧縮に高品質な可逆圧縮を使用します。

この設定を使用して、JPEG などのイメージに設定する圧縮品質を定義できます。

これにより、品質はほとんど/まったく損なわずにファイルサイズを小さくすることができます。

ここでの注意点は、再圧縮しなくてもデータを直接 Web から PDF に渡せるように MSHTML エンジンに最適化が含まれていることです。しかし、それはこのデータの再圧縮を指定しない場合のみ行えるので、出力サイズや出力品質に関してはデフォルトの設定のままにしておく方が効果的です。

値は 0 から 100 までの値になります（75 が標準的な値です）。100 以上の値は、すべてにおいて可逆圧縮が使用されます。

Example

下記のサンプルは、このパラメータの PDF レンダリングでの効果を示しています。

[C#]
Doc theDoc = new Doc();
string theURL = "http://www.nasa.gov/multimedia/imagegallery/image_feature_313.html";
// Set low image quality for HTML rendering
theDoc.HtmlOptions.ImageQuality = 5;
theDoc.AddImageUrl(theURL);
// Save the document
theDoc.Save(Server.MapPath("HtmlOptionsImageQuality5.pdf"));
theDoc.Clear();
// Set lossless image quality for HTML rendering
theDoc.HtmlOptions.ImageQuality = 101;
theDoc.AddImageUrl(theURL);
// Save the document
theDoc.Save(Server.MapPath("HtmlOptionsImageQuality101.pdf"));
theDoc.Clear();
[Visual Basic]
Dim theDoc As Doc = New Doc()
Dim theURL As String = "http://www.nasa.gov/multimedia/imagegallery/image_feature_313.html"
' Set low image quality for HTML rendering
theDoc.HtmlOptions.ImageQuality = 5
theDoc.AddImageUrl(theURL)
' Save the document
theDoc.Save(Server.MapPath("HtmlOptionsImageQuality5.pdf"))
theDoc.Clear()
' Set lossless image quality for HTML rendering
theDoc.HtmlOptions.ImageQuality = 101
theDoc.AddImageUrl(theURL)
' Save the document
theDoc.Save(Server.MapPath("HtmlOptionsImageQuality101.pdf"))
theDoc.Clear()

HtmlOptionsImageQuality5.pdf [file size 42 KB]

HtmlOptionsImageQuality101.pdf [file size 444 KB]


InitialWidth Property

InitialWidth プロパティ

型 | デフォルト値 | 読み取り専用 | 説明
[C#] int [Visual Basic] Integer | 800 | いいえ | 自動サイズのページに使用する最小幅

Notes

BrowserWidth プロパティが 0 の場合、ABCpdf はそのページに合ったサイズを自動的に定義します。

これを行うために、そのページのスクロール幅とスクロールの高さを定義します。この幅と高さは、スクロールしなくてもすべてのコンテンツが表示されるページサイズです。

自動サイズを取得する前に、そのページをデフォルトサイズに設定しておかなければなりません。この値が使用される幅を決定します。

つまり、常にこの最小幅で出力されます。幅の狭いページを扱う場合はこの値を減らしてください。

Example

ありません。


LogonName プロパティ

型 | デフォルト値 | 読み取り専用 | 説明
[C#] string [Visual Basic] String | "" | いいえ | 認証に使用するユーザー名

Notes
このプロパティは、セキュリティが設定してある Web サイトにアクセスする時に使用する認証ユーザー名を定義します。

このプロパティは、LogonPassword プロパティと共に使用する必要があります。

ログインすると、セッション時間が切れるかログアウトするまでログインされています。従って、ABCpdf を別のユーザとしてログオンする場合、 その前にログアウトしなければなりません。

Example

下記のサンプルは、このプロパティの使用法を示しています。

[C#]
Doc theDoc = new Doc();
string theURL = "http://www.top-secret-site.com";
// ユーザー名とパスワードの割り当て
theDoc.HtmlOptions.LogonName = "Steve";
theDoc.HtmlOptions.LogonPassword = "stevepassword";
// HTML ページの追加
theDoc.AddImageUrl(theURL);
// ドキュメントの保存
theDoc.Save(Server.MapPath("HtmlOptionsLogon.pdf"));
theDoc.Clear();
[Visual Basic]
Dim theDoc As Doc = New Doc()
Dim theURL As String = "http://www.top-secret-site.com"
' ユーザー名とパスワードの割り当て
theDoc.HtmlOptions.LogonName = "Steve"
theDoc.HtmlOptions.LogonPassword = "stevepassword"
' HTML ページの追加
theDoc.AddImageUrl(theURL)
' ドキュメントの保存
theDoc.Save(Server.MapPath("HtmlOptionsLogon.pdf"))
theDoc.Clear()


LogonPassword プロパティ

型 | デフォルト値 | 読み取り専用 | 説明
[C#] string [Visual Basic] String | "" | いいえ | 認証に使用するパスワード

Notes

このプロパティは、セキュリティが設定してある Web サイトにアクセスする時に使用する認証パスワードを定義します。

このプロパティは、LogonName プロパティと共に使用する必要があります。

Example

LogonName プロパティを参照してください。


MakeFieldNamesUnique Property

MakeFieldNamesUnique プロパティ

型 | デフォルト値 | 読み取り専用 | 説明
[C#] bool [Visual Basic] Boolean | true | いいえ | フィールド名を一意にします

Notes

同じ名前のフィールドを HTML フォームに含めることができます。

PDF の２つのフィールドが同じ名前の場合、フィールドは同じ値を取得します。

従って、PDF に同じ名前の HTML フィールドを複数追加すると、これらのフィールドはすべて同じ内容を表示します。オリジナルの HTML フィールドが違う内容を含んでいてもそうなります。

このプロパティを設定すると、内容が同じにならないように同じ名前のフィールドは名前が変更されます。

Example

ありません。


MaxAtomicImageSize プロパティ
型 | デフォルト値 | 読み取り専用 | 説明
[C#] int [Visual Basic] Integer | 480 | いいえ | イメージが極めて小さいものであると判断するための最大サイズ

Notes

ABCpdf は一般的にイメージを極めて小さい（複数のページに分割できない）ものだと考えます。

しかし、イメージが一定のサイズに達すると、イメージの分割を阻止できなくなります。阻止しようとするとイメージに予期せぬギャップが生じてしまうため、イメージが極めて小さいものだという考え方は無視されます。

Example

ありません。


Media Property

Media プロパティ

型 デフォルト値 読み取り専用 説明
[C#]
MediaType

[Visual Basic]
MediaType
         Print いいえ 使用する CSS のメディアタイプ

Notes

MediaType 列挙体は次の値のどちらかを使用できます。

  • Print
  • Screen

Gecko エンジンの場合、UseScript プロパティを True にして Screen メディアを使わなければなりません。正しく組み合わせないと（例：UseScript なしで Screen を使用）、実際に AddImageUrl または AddImageHtml メソッドを呼び出す時に例外が発生します。

各メディアタイプに複数の CSS スタイル命令を指定することで、色々なメディアで作成した時に同じ HTML ドキュメントがさまざまなビジュアル表現を得ることができます。Gecko エンジンは、印刷用スタイルシートや画面用スタイルシートを使った Web ページの作成をサポートします。


NoCookie Property

NoCookie プロパティ

型 | デフォルト値 | 読み取り専用 | 説明
[C#] bool [Visual Basic] Boolean | false | いいえ | 自動 Cookie 処理を無効にします

Notes

自動 Cookie 処理を無効に設定します。このプロパティが True の場合、HostWebBrowser プロパティを False にしなければなりません。

HTML エンジンは、HTTP/HTTPS の応答を受け取ったり HTTP/HTTPS の要求を送ったりする時に Cookie を操作します。このプロパティが true の場合、ローカルの Cookie のデータベースに保存された Cookie は要求には送られず、応答で受け取った Cookie はローカルの Cookie のデータベースには保存されません。

自動 Cookie 処理が有効になっている場合、HttpAdditionalHeaders プロパティで指定された Cookie は要求には送られません。HttpAdditionalHeaders プロパティで Cookie を指定する場合は、このプロパティを True にしてください。

Example

HttpAdditionalHeaders プロパティを参照してください。


OnLoadScript Property

OnLoadScript プロパティ

型 | デフォルト値 | 読み取り専用 | 説明
[C#] string [Visual Basic] String | "" | いいえ | ページを読み込んだ後に実行するスクリプト

Notes

このプロパティは、Web ページを PDF に生成する前に、Web ページに適用するクライアント側の JavaScript です。

この種のスクリプトは色々な目的に使用できます。例えば、背景イメージを非表示にする場合や、あらかじめ作成された情報をドキュメントから取得する場合です。

下記のように、documentElement の "abcpdf" プロパティを設定して戻り値を使用することができます。

document.documentElement.abcpdf = "my return value";

戻り値は、Doc.AddImageUrl メソッドまたは Doc.AddImageHtml メソッドから返された ID と一緒に GetScriptReturn メソッドを使ってアクセスできます。

MSHtml エンジンの場合、UseScript プロパティを True に設定しないと、アクセス拒否エラーが発生します。戻り値は OnLoadScript プロパティでのみ設定できます。Gecko エンジンにこのような制限はありません。

Example

UseScript プロパティを参照してください。


PageCacheEnabled プロパティ

型 | デフォルト値 | 読み取り専用 | 説明
[C#] bool [Visual Basic] Boolean | true | いいえ | ページのレンダリング前にページのキャッシュを検索します。

Notes
ABCpdf は、最近の使用した URL のキャッシュを5分間保持します。

URL をレンダリングする前にページのキャッシュを検索することにより、処理の最適化を行います。

キャッシュを無効にするには、このプロパティを false にしてください。 キャッシュが無効になると、レジストリ値 MakeURLsUnique によって実際の URL が変更される場合があります。

Example

ありません。


PageCacheExpiry プロパティ

型 | デフォルト値 | 読み取り専用 | 説明
[C#] int [Visual Basic] Integer | 300,000 | いいえ | ページのキャッシュの保持時間(ミリ秒)

Notes
ABCpdf は、最近の使用した URL のキャッシュを5分間保持します。

このパラメータを使用してページのキャッシュの保持時間を変更できます。この値を 0 にすることはできません。

この値はミリ秒単位です。

Example

ありません。


PageCacheSize プロパティ

型 | デフォルト値 | 読み取り専用 | 説明
[C#] int [Visual Basic] Integer | 100 | いいえ | キャッシュに保持できるページ数

Notes
ABCpdf は、最近の使用した URL のキャッシュを5分間保持します。

このパラメータを使用して、キャッシュに保持できるページ数を変更できます。この値を 0 にすることはできません。

Example

ありません。


Paged プロパティ

型 | デフォルト値 | 読み取り専用 | 説明
[C#] bool [Visual Basic] Boolean | true | いいえ | HTML をマルチページ PDF に変換します

Notes
このプロパティは、HTML をマルチページ PDF に変換します。

マルチページモードが使用された場合、ドキュメントの最初のページだけが作成されます。2ページ目以降は Doc.AddImageToChain メソッドを使用して作成 します。

マルチページ形式に変換した HTML とマルチページ形式に変換していない HTML とでは少し異なります。1ページしか作成しない場合でもこのパラメータを true に設定しておいてください。

Example

ありません。


RequestMethod Property

RequestMethod プロパティ

型 | デフォルト値 | 読み取り専用 | 説明
[C#] UrlRequestMethodType [Visual Basic] UrlRequestMethodType | Get | いいえ | URL の要求メソッド

Notes

UrlRequestMethodType 列挙体は次の値を取得できます。

  • Get
  • Post

このプロパティは、HTML ページを取得するために Doc.AddImageUrl がどのメソッドを使用するかを指定します。通常、その HTML ページに冪等処理を要求する時は Get の使用が好ましいです。しかし、Get メソッドは多くて2,048文字の URL をサポートします。URL が2,048文字よりも長くてパラメータを含んでいる場合は、Post メソッドを使用する必要があります。しかし、パラメータ（やクエスチョン マーク）のない URL はやはり2,048文字に制限されます。

URL にクエスチョン マークが含まれている場合（このプロパティが Post の場合）のみ Post メソッドが使用されます。URL にパラメータが含まれていなくても、URL にクエスチョン マーク を追加することで Post メソッドを使用できます。

Example

ありません。


RetryCount プロパティ

型 | デフォルト値 | 読み取り専用 | 説明
[C#] int [Visual Basic] Integer | 5 | いいえ | ページが使用不可または無効の場合に再試行する回数

Notes
このプロパティは、ABCpdf がページの取得を行う回数を設定します。

HTML のレンダリングは、最初は失敗しても2度目に成功する場合があります。これは、ABCpdf とは関係なく起こり得ます。

ABCpdf はそのページを取得できなかった場合には再試行します。これは、そのページの読み込みに失敗した場合に Web ブラウザの更新ボタンをクリックするのに似ています。

ページが使用不可または無効の場合の ABCpdf の動作については、ContentCount プロパティやTimeout プロパティを参照してください。

Example

下記のサンプルは、このパラメータの HTML レンダリングでの効果を示しています。

[C#]
Doc theDoc = new Doc();
string theURL = "http://www.nasa.gov/multimedia/imagegallery/image_feature_313.html";
// Set minimum number of items a page of HTML should contain.
// Otherwise the page will be assumed to be invalid.
theDoc.HtmlOptions.ContentCount = 20;
// Try to obtain html page 10 times
theDoc.HtmlOptions.RetryCount = 10;
// The page must be obtained in less then 10 seconds
theDoc.HtmlOptions.Timeout = 10000;
try
{
  theDoc.AddImageUrl(theURL);
}
catch
{
  // Page couldn't be loaded
}
// Save the document
theDoc.Save(Server.MapPath("HtmlOptionsRetryCount.pdf"));
theDoc.Clear();
[Visual Basic]
Dim theDoc As Doc = New Doc()
Dim theURL As String = "http://www.nasa.gov/multimedia/imagegallery/image_feature_313.html"
' Set minimum number of items a page of HTML should contain.
' Otherwise the page will be assumed to be invalid.
theDoc.HtmlOptions.ContentCount = 20
' Try to obtain html page 10 times
theDoc.HtmlOptions.RetryCount = 10
' The page must be obtained in less then 10 seconds
theDoc.HtmlOptions.Timeout = 10000
Try
  theDoc.AddImageUrl(theURL)
Catch
  ' Page couldn't be loaded
End Try
' Save the document
theDoc.Save(Server.MapPath("HtmlOptionsRetryCount.pdf"))
theDoc.Clear()

HtmlOptionsRetryCount.pdf


TargetLinks プロパティ

型 | デフォルト値 | 読み込み専用 | 説明
[C#] bool [Visual Basic] Boolean | false | いいえ | ハイパーリンクを新しいウィンドウに表示するかを定義します

Notes

ターゲット付きのハイパーリンクを新しいブラウザウィンドウに表示するかを定義します。

HTMLでは、ターゲットが空でも、"_self" でも、"_parent" でも、"_top" でもないハイパーリンクを新しいブラウザウィンドウに表示します。

このプロパティを True に設定すると、ブラウザに PDF ドキュメントを表示する時にこれと似たようなことが行えます。

Example

ありません。


Timeout プロパティ

型 | デフォルト値 | 読み取り専用 | 説明
[C#] int [Visual Basic] Integer | 15,500 | いいえ | ページを取得するための最大時間（ミリ秒）

Notes
このプロパティは、ページを取得するための最大時間（ミリ秒）を表します。

このプロパティの時間を過ぎると、ページは使用不可とみなされます。RetryCount プロパティの設定に応じて、そのページは再試行されるかエラーが返されます。

この値はミリ秒単位になります。

Example

RetryCount プロパティを参照してください。


UseActiveX プロパティ

型 | デフォルト値 | 読み取り専用 | 説明
[C#] bool [Visual Basic] Boolean | false | いいえ | ActiveX を有効にするかどうかを定義します。

Notes
このプロパティは、ActiveX を有効にするかどうかを定義します。

デフォルトでは、HTML ドキュメントのレンダリング時は ActiveX は無効になっています。

これは、セキュリティに関する理由から無効にしてあるので、この設定を変更しないでください。

しかし、ソースドキュメントがセキュリティの危険性を引き起こさないことを確信できる場合は、このプロパティを使用して ActiveX を有効にすることができます。

互換性 全ての ActiveX コントロールが使用できるとは限りません。特に画面への描画を行う ActiveX コントロールの場合、ABCpdf はこれらの ActiveX コントロールが使用できません。

Example

ありません。


UseJava プロパティ

型 | デフォルト値 | 読み取り専用 | 説明
[C#] bool [Visual Basic] Boolean | false | いいえ | Java を有効にするかを定義します

Notes
このプロパティは、Java を有効にするかを定義します。

デフォルトでは、HTML ドキュメントのレンダリング時は Java は無効になっています。

これは、セキュリティの理由から無効にしているのでこの設定を変更しないでください。

しかし、ソースドキュメントがセキュリティの危険性を引き起こさないことを確信できる場合は、このプロパティを使用して Java を有効にすることができます。

Example

ありません。


UseNoCache プロパティ

型 | デフォルト値 | 読み取り専用 | 説明
[C#] bool [Visual Basic] Boolean | false | いいえ | プロキシサーバーが項目内容を再要求するかを定義します

Notes
このプロパティは、キャッシュを有効にするかを定義します。

このプロパティを true に設定すると、プロキシサーバーはページを再要求します。

Example

ありません。


UseResync プロパティ

型 | デフォルト値 | 読み取り専用 | 説明
[C#] bool [Visual Basic] Boolean | false | いいえ | 全ての項目内容を再読込するかを定義します

Notes
このプロパティは、resync を有効にするかを定義します。

このプロパティを true に設定すると、そのページを再読込します。

Example

ありません。


UseScript Property

UseScript プロパティ

型 | デフォルト値 | 読み取り専用 | 説明
[C#] bool [Visual Basic] Boolean | false | いいえ | JavaScript や VBScript を無効にします

Notes

JavaScript や VBScript を無効にします。

デフォルトでは、HTML ドキュメントの生成時には JavaScript などクライアント側のスクリプトは無効になっています。

これはセキュリティ上の理由から無効にしてあるので、出来るだけこの設定を変更しないでください。

しかし、ソースドキュメントにセキュリティの危険性がないと確信できる場合は、このプロパティを使用して Script を有効にすることができます。

Windows サーバ（例：Windows Server 2008）で、MSHTML エンジンをお使いの場合、プログラム/アプリケーション プールを実行するユーザが JavaScript を実行できるように、セキュリティ強化の構成も無効にしなければならない場合があります。

スクリプトにアクセス可能なメソッドやプロパティ 以下は、HTML に含まれているスクリプトが window.external オブジェクトにアクセスできるメソッドやプロパティです。このメソッドの特徴は C# のような構文です。正しい数の引数を渡してください。

MSHTML のみ window.external.ABCpdf_RenderWait—ABCpdf の HTML ページの生成を遅らせます

Syntax 		bool ABCpdf_RenderWait()

Params
名称 | 説明
戻り値 | ABCpdf が待機する（メソッドが成功した）場合は True、そうでない場合は False

Notes 		ページの読込が完了したと判断する前にこのメソッドが呼び出された場合、ABCpdf_RenderComplete が呼び出されるまではページの読込が完了したとは見なしません。ABCpdf_RenderComplete が呼び出された場合、このメソッドは False を返します。これは、ページが timeout/asynchronous イベント（AJAX）に依存している場合に役立ちます。

MSHTML のみ window.external.ABCpdf_RenderComplete—ABCpdf の HTML ページの生成を再開します

Syntax 		bool ABCpdf_RenderComplete()
bool ABCpdf_RenderComplete(bool force)

Params
名称 | 説明
force | ABCpdf が通常のページの読込完了指示を無視するかを定義します。デフォルト値は False です。
戻り値 | ABCpdf が要求通りに生成を再開（メソッドが成功）した場合は True、そうでない場合は False。

Notes 		このメソッドを呼び出して、ABCpdf_RenderWait が呼び出されたか定義できます。force パラメータが False の場合、ABCpdf は通常の生成を再開します。force パラメータが True の場合、ABCpdf は他のあらゆるページ読込完了指示を無視して、すぐに生成を開始します。このメソッドは、force パラメータが False の場合や前にこのメソッドの force パラメータを True にして呼び出したことがある場合は False を返します。これは、ページが timeout/asynchronous イベント（AJAX）に依存している場合に役立ちます。

Gecko のみ window.ABCpdf_go—ABCpdf が HTML ページの生成を開始するかを指定します

Syntax 		bool ABCpdf_go

Params
値 | 説明
undefined (initial value), true | ABCpdf は HTML ページの生成を開始します
false | ABCpdf は待機します

Notes 		OnLoadScript でこのプロパティを false にブート処理して、このプロパティの設定を考慮させる必要があります。また、このプロパティを考慮させるには UseScript も true にする必要があります。ABCpdf は HTML ページを生成する前にこのプロパティが未定義か True のどちらかになるのを待ちます。それでも HTML 全体の生成処理は Timeout プロパティの値によって決まります。

Example

[C#]
Doc doc = new Doc();
doc.HtmlOptions.Engine = EngineType.Gecko;
doc.HtmlOptions.UseScript = true;

// 3 秒後に生成
doc.HtmlOptions.OnLoadScript = "(function(){ window.ABCpdf_go = false;
                                                                                setTimeout(function(){ window.ABCpdf_go = true; }, 3000); })();";

doc.AddImageUrl("http://websupergoo.com");
doc.Save(Server.MapPath("wsg.pdf"));

[Visual Basic]
Dim theDoc As Doc = New Doc()

theDoc.HtmlOptions.Engine = EngineType.Gecko
theDoc.HtmlOptions.UseScript = True

' 3 秒後に生成
theDoc.HtmlOptions.OnLoadScript = "(function(){ window.ABCpdf_go = false;
                                                                                setTimeout(function(){ window.ABCpdf_go = true; }, 3000); })();"

theDoc.AddImageUrl("http://websupergoo.com")
theDoc.Save(Server.MapPath("wsg.pdf"))

Example

下記のサンプルはサイト全体を PDF に変換するための方法を示しています。ここでは、JavaScript を使用して、そのページのリンクを定義します。しかし、HtmlCallback プロパティを使用して同じことが行えます。

[C#]
Doc theDoc = new Doc();
string theURL = "http://www.fbi.gov/";
// Set HTML options
theDoc.HtmlOptions.AddLinks = true;
theDoc.HtmlOptions.UseScript = true;
theDoc.HtmlOptions.PageCacheEnabled = false;
// JavaScript is used to extract all links from the page
theDoc.HtmlOptions.OnLoadScript = "var hrefCollection =
                                                document.all.tags(\"a\");" +
"var allLinks = \"\";" +
"for(i = 0; i < hrefCollection.length; ++i) {" +
"if (i > 0)" +
"  allLinks += \",\";" +
"allLinks += hrefCollection.item(i).href;" +
"};"+
"document.documentElement.abcpdf = allLinks;";
// Array of links - start with base URL
ArrayList links = new ArrayList();
links.Add(theURL);
for (int i = 0; i < links.Count; i++) {
// Stop if we render more than 20 pages
if (theDoc.PageCount > 20)
break;
// Add page
theDoc.Page = theDoc.AddPage();
int theID = theDoc.AddImageUrl(links[i] as string);
// Links from the rendered page
string allLinks = theDoc.HtmlOptions.GetScriptReturn(theID);
string[] newLinks = allLinks.Split(new char[] {','});
foreach (string link in newLinks) {
// Check to see if we allready rendered this page
if (links.BinarySearch(link) < 0) {
// Skip links inside the page
int pos = link.IndexOf("#");
if (! ( pos > 0 &&
                                                links.BinarySearch(link.Substring(0, pos)) >= 0)) {
if (link.StartsWith(theURL)) {
links.Add(link);
}
}
}
}
// Add other pages
while (true) {
theDoc.FrameRect();
if (!theDoc.Chainable(theID))
break;
theDoc.Page = theDoc.AddPage();
theID = theDoc.AddImageToChain(theID);
}
}
// Link pages together
theDoc.HtmlOptions.LinkPages();
// Flatten all pages
for (int i = 1; i <= theDoc.PageCount; i++) {
theDoc.PageNumber = i;
theDoc.Flatten();
}
// Save the document
theDoc.Save(Server.MapPath("HtmlOptionsJavaScript.pdf"));
theDoc.Clear();
[Visual Basic]
Dim theDoc As Doc = New Doc()
Dim theURL As String = "http://www.fbi.gov/"
' Set HTML options
theDoc.HtmlOptions.AddLinks = True
theDoc.HtmlOptions.UseScript = True
theDoc.HtmlOptions.PageCacheEnabled = False
' JavaScript is used to extract all links from the page
theDoc.HtmlOptions.OnLoadScript = "var hrefCollection =
                                                document.all.tags(""a"");" + _
"var allLinks = """";" + _
"for(i = 0; i < hrefCollection.length; ++i) {" + _
"if (i > 0)" + _
"  allLinks += "","";" + _
"allLinks += hrefCollection.item(i).href;" + _
"};" + _
"document.documentElement.abcpdf = allLinks;"
' Array of links - start with base URL
Dim links As ArrayList = New ArrayList()
links.Add(theURL)
Dim theID As Integer
For i As Integer = 0 To links.Count - 1
' Stop if we render more than 20 pages
If theDoc.PageCount > 20 Then Exit For
' Add page
theDoc.Page = theDoc.AddPage()
theID = theDoc.AddImageUrl(links(i))
' Links from the rendered page
Dim allLinks As String
allLinks = theDoc.HtmlOptions.GetScriptReturn(theID)
Dim newLinks() As String
newLinks = allLinks.Split(New Char() {","})
Dim link As String
For Each link in newLinks
' Check to see if we allready rendered this page
If links.BinarySearch(link) < 0 Then
' Skip links inside the page
Dim pos As Integer
pos = link.IndexOf("#")
If Not ( pos > 0 And
                                                links.BinarySearch(link.Substring(0, pos)) >= 0) Then
If link.StartsWith(theURL) Then
                                                links.Add(link)
End If
End If
Next
' Add other pages
Do
theDoc.FrameRect()
If Not theDoc.Chainable(theID) Then Exit Do
theDoc.Page = theDoc.AddPage()
theID = theDoc.AddImageToChain(theID)
Loop
Next
' Link pages together
theDoc.HtmlOptions.LinkPages()
' Flatten all pages
For i As Integer = 1 To theDoc.PageCount
theDoc.PageNumber = i
theDoc.Flatten()
Next
' Save the document
theDoc.Save(Server.MapPath("HtmlOptionsJavaScript.pdf"))
theDoc.Clear()

HtmlOptionsJavaScript.pdf - [Page 1] | HtmlOptionsJavaScript.pdf - [Page 2]
HtmlOptionsJavaScript.pdf - [Page 3] | HtmlOptionsJavaScript.pdf - [Page 4]


UseVideo プロパティ

型 | デフォルト値 | 読み取り専用 | 説明
[C#] bool [Visual Basic] Boolean | false | いいえ | Video を有効にするかを定義します

Notes

このプロパティは Video を有効にするかを定義します。

デフォルトでは、Video は HTML ドキュメントのレンダリング時には無効になっています。

これはセキュリティ上の理由から無効にしてあるので、出来るだけこの設定を変更しないでください。

しかし、ソースドキュメントがセキュリティの危険性がないと確信できる場合は、このプロパティを使用して Video を有効にすることができます。

Example

ありません。


XImage Class

XImage オブジェクト

ファイルまたはデータに保存されているイメージにアクセスします。イメージは Doc.AddImageObject メソッドを使用してドキュメントに追加することができます。

System.Object
   WebSupergoo.ABCpdf9.XImage

Implements: IDisposable

メソッド | 説明
S» Throws Exceptions FromFile | ファイルパスから XImage を作成します
S» Throws Exceptions FromData | バイト配列から XImage を作成します
S» Throws Exceptions FromStream | ストリームから XImage を作成します
Dispose | イメージを解放します
Clear | イメージをクリアします
Throws Exceptions SetData | データからイメージをロードします
Throws Exceptions SetFile | ファイルからイメージをロードします
Throws Exceptions SetStream | ストリームからイメージをロードします
Throws Exceptions SetMask | イメージにマスクを設定します

プロパティ | 説明
BoundingBox | イメージを囲む物理的な境界（ポイント）
Frame | 現在選択されているフレーム
Frame Count | イメージの中のフレーム数
Frame Rate | 移動するイメージのデフォルトのフレーム数
HasRealRes | イメージから解像度を取得するかを定義します
Height | 現在のフレームの高さ（ピクセル）
HRes | 現在のフレームの水平方向の解像度（DPI）
Indirect | イメージを間接モードで追加するかを定義します
NeedsFile | ファイルが存在していなければならないか定義します
NeedsStream | ストリームを開いたままにしておくか定義します
Selection | 現在選択されている四角形
Type | イメージの種類
VRes | 現在のフレームの垂直方向の解像度（DPI）
Width | 現在のフレームの幅（ピクセル）


FromFile Function

FromFile メソッド

ファイルパスから XImage を作成します。

Syntax

[C#]
static XImage FromFile(string path, XReadOptions options)
[Visual Basic]
Shared Function FromFile(path As String, options As XReadOptions) As XImage

Throws Exceptions エラーの場合、Exception() が発生します。

Params
名称 | 説明
path | イメージファイルのパス
options | 読込設定。XImage オブジェクトがこのパラメータを解放します。 デフォルトの ReadModule プロパティの関連プロパティ： PreserveTransparency プロパティ
戻り値 | 処理結果の IndirectObject

Notes

XImage オブジェクトは解放時に XReadOptions も解放します。Dispose メソッドや Clear メソッドのパラメータ化されたオーバーロードを使用することにより、XReadOptions オブジェクトを解放せずに XImage オブジェクトだけを解放することができます。XImage オブジェクトが XReadOptions も解放するよう設定されている場合、XReadOptions を変更することはできません。

イメージが追加情報を持っている（PreserveTransparency プロパティ）ということを除けば、デフォルトの ReadModule プロパティに対してこのメソッドは SetFile メソッドと同じ機能を提供します。更に、このメソッドはあらゆるドキュメント形式を読み込み、それをイメージとして処理することができます。サポートされているドキュメント形式の詳細は、Doc.Read メソッドを参照してください。

Operation プロパティ（Operation が実際に null か定義します）を使用するモジュールについては、NeedsFile プロパティが True の場合、XImage オブジェクトがクリア、解放、またはガベージコレクションされない限り、指定したファイルがなければなりません。XImage オブジェクトは解放時に指定したファイルを削除しません。

Example

ありません。


FromData Function

FromData メソッド

バイト配列から XImage を作成します。

Syntax

[C#]
static XImage FromData(byte[] data, XReadOptions options)
[Visual Basic]
Shared Function FromData(data() As Byte, options As XReadOptions) As XImage

Throws Exceptions  エラーの場合、Exception() が発生します。

Params
名称 | 説明
data | イメージを含んでいるデータ。
options | 読込設定。XImage オブジェクトがこのパラメータを解放します。 デフォルトの ReadModule プロパティに関連するプロパティ： PreserveTransparency プロパティ
戻り値 | 処理結果の IndirectObject

Notes

XImage オブジェクトは解放時に XReadOptions も解放します。Dispose メソッドや Clear メソッドのパラメータ化されたオーバーロードを使用することにより、XReadOptions オブジェクトを解放せずに XImage オブジェクトだけを解放することができます。XImage オブジェクトが XReadOptions も解放するよう設定されている場合、XReadOptions を変更することはできません。

デフォルトの ReadModule プロパティに対して、このメソッドはイメージが追加情報を持っている（PreserveTransparency プロパティ）ということを除けば SetData メソッドと同じ機能を提供します。

Operation プロパティ（Operation が実際に null か定義します）を使用するモジュールについては、NeedsFile プロパティが True の場合、XImage オブジェクトがクリア、解放、またはガベージコレクションされない限り、バイト配列を変更できません。

Example

ありません。


FromStream Function

FromStream メソッド

ストリームから XImage を作成します。

Syntax

[C#]
static XImage FromStrea(Stream stream, XReadOptions options)
[Visual Basic]
Shared Function FromStream(stream As Stream, options As XReadOptions) As XImage

Throws Exceptions  エラーの場合、Exception() が発生します。

Params
名称 | 説明
stream | イメージを含んでいるストリーム
options | 読込設定。XImage オブジェクトがこのパラメータを解放します。 デフォルトの ReadModule プロパティに関連するプロパティ： PreserveTransparency プロパティ
戻り値 | 処理結果の IndirectObject

Notes

XImage オブジェクトは解放時に XReadOptions も解放します。Dispose メソッドや Clear メソッドのパラメータ化されたオーバーロードを使用することにより、XReadOptions オブジェクトを解放せずに XImage オブジェクトだけを解放することができます。XImage オブジェクトが XReadOptions も解放するよう設定されている場合、XReadOptions を変更することはできません。

このメソッドはイメージが追加情報を持っている（PreserveTransparency プロパティ）ということを除けば、SetStream メソッドと同じ機能をデフォルトの ReadModule プロパティに提供します。

Operation プロパティ（null か定義します）を使用するモジュールについては、NeedsStream プロパティが True の場合、XImage オブジェクトはオブジェクトの解放時にストリームも解放します。Dispose メソッドや Clear メソッドのパラメータ化されたオーバーロードを使用することにより、ストリームを解放せずに XImage オブジェクトだけを解放することができます。XImage オブジェクトがクリア、解放、またはガベージコレクションされない限り、ストリームを変更することはできません。

NeedsStream プロパティが False の場合、ストリームを閉じる/解放することができます。

Example

ありません。


Dispose Function

Dispose メソッド

オブジェクトを解放します。

Syntax

[C#]
void Dispose()
void Dispose(out XReadOptions outOptions, out Stream outStream)
protected virtual void Dispose(bool disposing)
[Visual Basic]
Sub Dispose()
Sub Dispose(<Out> ByRef outOption As XReadOptions, <Out> ByRef outStream As Stream)
Protected Overridable Sub Dispose(disposing As Boolean)

Params
名称 | 説明
outOptions | オブジェクトを作成するために使用する XReadOptions
outStream | NeedsStream プロパティが True の場合、オブジェクトを作成するために使用するストリーム

Notes

このメソッドは、オブジェクトを明示的に解放し、ガベージコレクションのオーバーヘッドを軽減します。

パラメータなしのオーバーロードは XReadOptions と Stream を解放します。

出力パラメータ付きのオーバーロードは XReadOptions と Stream を返します。返されたオブジェクトは解放されていません。

このメソッドは IDisposable インターフェイスを実装するオブジェクトの標準のデザイン様式に従います。付加的なオブジェクトを解放したいサブクラスに、Dispose プロテクトメソッドをオーバーライドできます。

Dispose メソッドを呼び出した後にオブジェクトを使用しないでください。

Example

ありません。


Clear Function

Clear メソッド

イメージをクリアします。

Syntax

[C#]
virtual void Clear()
virtual void Clear(out XReadOptions outOptions, out Stream outStream)[Visual Basic]
Overridable Sub Clear()
Overridable Sub Clear(<Out> ByRef outOption As XReadOptions, <Out> ByRef outStream As Stream)

Params
名称 | 説明
outOptions | オブジェクトを作成するために使用する XReadOptions
outStream | NeedsStream プロパティが True の場合、オブジェクトを作成するために使用するストリーム

Notes

このメソッドはリソースを解放し、イメージを作成直後の状態に戻します。

パラメータなしのオーバーロードは XReadOptions と Stream を解放します。

出力パラメータ付きのオーバーロードは XReadOptions と Stream を返します。返されたオブジェクトは解放されていません。

Example

ありません。


SetData Function

SetData メソッド

データからイメージをロードします。

Syntax

[C#]
virtual void SetData(byte[] data)
[Visual Basic]
Overridable Sub SetData(data() As Byte)

Throws Exceptions  エラーの場合、Exception() が発生します。

Params
名称 | 説明
data | イメージを含むデータ

Notes

データからイメージをロードします。

このデータはバイトの配列で JPEG、GIF、TIFF、BMP、PNG、EXIF、WMF、EMF、EPS、PS、SWF (Flash) のいづれかになります 。

Frame プロパティを使用することにより、ファイル内の異なるイメージにアクセスできます。 また、Selection プロパティを使用すれば、イメージの別の部分を選択することができます。

Example

下記のコードは、TIFF ファイルを読み込み、XImage オブジェクトにデータを設定します。その後、ドキュメントにイメージを追加して PDF を保存します。

[C#]
XImage theImg = new XImage();
Doc theDoc = new Doc();
// read the data from a file
string thePath = Server.MapPath("../mypics/mypic.tif");
FileStream theStream = File.OpenRead(thePath);
byte[] theData = new Byte[theStream.Length];
theStream.Read(theData, 0, (int)theStream.Length);
theStream.Close();
// place the data into the image
theImg.SetData(theData);
theDoc.Rect.Inset(20, 20);
theDoc.AddImageObject(theImg, false);
theImg.Clear();
theDoc.Save(Server.MapPath("imagesetdata.pdf"));
theDoc.Clear();
[Visual Basic]
Dim theImg As XImage = New XImage()
Dim theDoc As Doc = New Doc()
' read the data from a file
Dim thePath As String = Server.MapPath("../mypics/mypic.tif")
Dim theStream As FileStream = File.OpenRead(thePath)
Dim theData(theStream.Length) As Byte
theStream.Read(theData, 0, CType(theStream.Length, Integer))
theStream.Close()
' place the data into the image
theImg.SetData(theData)
theDoc.Rect.Inset(20, 20)
theDoc.AddImageObject(theImg, False)
theImg.Clear()
theDoc.Save(Server.MapPath("imagesetdata.pdf"))
theDoc.Clear()

imagesetfile.pdf


SetFile Function

SetFile メソッド

ファイルからイメージをロードします。

Syntax

[C#]
virtual void SetFile(string path)
[Visual Basic]
Overridable Sub SetFile(path As String)

Throws Exceptions エラーの場合、Exception() が発生します。

Params
名称 | 説明
path | イメージファイルのパス

Notes

ファイルからイメージをロードします。

このファイルは JPEG、GIF、TIFF、BMP、PNG、EXIF、WMF、EMF、EPS、PS、SWF (Flash) のいずれかになります。

Frame プロパティを使用することにより、ファイル内の異なるイメージにアクセスできます。 また、Selection プロパティを使用すれば、イメージの別の部分を選択することができます。

Example

下記のコードは、TIFF ファイルを読み込み、XImage オブジェクトにデータを設定します。その後、ドキュメントにイメージを追加して PDF を保存します。

[C#]
XImage theImg = new XImage();
Doc theDoc = new Doc();
theImg.SetFile(Server.MapPath("../mypics/mypic.tif"));
theDoc.Rect.Inset(20, 20);
theDoc.AddImageObject(theImg, false);
theImg.Clear();
theDoc.Save(Server.MapPath("imagesetfile.pdf"));
theDoc.Clear();
[Visual Basic]
Dim theImg As XImage = New XImage()
Dim theDoc As Doc = New Doc()
theImg.SetFile(Server.MapPath("../mypics/mypic.tif"))
theDoc.Rect.Inset(20, 20)
theDoc.AddImageObject(theImg, False)
theImg.Clear()
theDoc.Save(Server.MapPath("imagesetfile.pdf"))
theDoc.Clear()

imagesetfile.pdf


SetMask Function

SetMask メソッド

イメージにマスクを設定します。

Syntax

[C#]
virtual void SetMask(XImage mask, bool invert)
[Visual Basic]
Overridable Sub SetMask(mask As XImage, invert As Boolean)

Throws Exceptions  エラーの場合、Exception() が発生します。

Params
名称 | 説明
mask | マスクを含むイメージ
invert | マスクを逆にするかの指定

Notes

イメージにマスクやアルファチャンネルを設定します。マスクはイメージの透明度の設定に使用されます。

指定されたマスクはグレースケールに変換され、イメージのサイズと同じくなるようにスケーリングされます。設定されたマスクは現在のイメージのすべてのフレームに適用されます。

Invert パラメータが設定されると、マスクは逆に働き、透明な領域と不透明な領域が入れ替わります。

Frame プロパティを使用することにより、ファイル内の異なるイメージにアクセスできます。 また、Selection プロパティを使用すれば、イメージの別の部分を選択することができます。

(注意)
Indirect プロパティが True (デフォルト)の場合、透明処理はイメージに適用されるだけです。

Example

下記のコードは、TIFF ファイルを読み込み、Image オブジェクトにデータを設定します。その後、マスクイメージを読み込みイメージにそれを設定します。最後に、ドキュメントにイメージを追加して PDF を保存します。

[C#]
Doc theDoc = new Doc();
XImage theImg = new XImage();
XImage theMsk = new XImage();
theImg.SetFile(Server.MapPath("../mypics/mypic.tif"));
theMsk.SetFile(Server.MapPath("../mypics/mymask.jpg"));
theImg.SetMask(theMsk, true);
theMsk.Clear();
theDoc.Color.String = "0 0 0";
theDoc.FillRect();
theDoc.Rect.Inset(20, 20);
theDoc.AddImageObject(theImg, true);
theImg.Clear();
theDoc.Save(Server.MapPath("imagesetmask.pdf"));
theDoc.Clear();

[Visual
            Basic]
Dim theDoc As Doc = New Doc()
Dim theImg As XImage = New XImage()
Dim theMsk As XImage = New XImage()
theImg.SetFile(Server.MapPath("../mypics/mypic.tif"))
theMsk.SetFile(Server.MapPath("../mypics/mymask.jpg"))
theImg.SetMask(theMsk, True)
theMsk.Clear()
theDoc.Color.String = "0 0 0"
theDoc.FillRect()
theDoc.Rect.Inset(20, 20)
theDoc.AddImageObject(theImg, True)
theImg.Clear()
theDoc.Save(Server.MapPath("imagesetmask.pdf"))
theDoc.Clear()

次のイメージとマスクを設定します。

mypic.tif
mymask.jpg

出力結果：

imagesetmask.pdf


SetStream Function

SetStream メソッド

ストリームからイメージをロードします。

Syntax

[C#]
virtual void SetStream(Stream stream)
[Visual Basic]
Overridable Sub SetStream(stream As Stream)

Throws Exceptions  エラーの場合、Exception() が発生します。

Params
名称 | 説明
Stream | イメージを含むストリーム

Notes

ストリームからイメージをロードします。

このデータはバイトの配列で、JPEG、GIF、TIFF、BMP、PNG、EXIF、WMF、EMF、EPS、PS、SWF (Flash) のいずれかになります。

Frame プロパティを使用することにより、ファイル内の異なるイメージにアクセスできます。 また、Selection プロパティを使用すれば、イメージの別の部分を選択することができます。

Example

下記のコードは、TIFF ファイルを読み込み、XImage オブジェクトにデータを設定します。その後、ドキュメントにイメージを追加して PDF を保存します。

[C#]
XImage theImg = new XImage();
string thePath;
thePath = Server.MapPath("../mypics/mypic.tif");
Stream theStream;
theStream = File.OpenRead(thePath);
theImg.SetStream(theStream);
theStream.Close();
Doc theDoc = new Doc();
theDoc.Rect.Inset(20, 20);
theDoc.AddImageObject(theImg, false);
theImg.Clear();
theDoc.Save(Server.MapPath("imagesetstream.pdf"));
theDoc.Clear();

[Visual Basic]
Dim theImg As XImage = New XImage()
Dim thePath As String
thePath = Server.MapPath("../mypics/mypic.tif")
Dim theStream As Stream
theStream = File.OpenRead(thePath)
theImg.SetStream(theStream)
theStream.Close()
Dim theDoc As Doc = New Doc()
theDoc.Rect.Inset(20, 20)
theDoc.AddImageObject(theImg, False)
theImg.Clear()
theDoc.Save(Server.MapPath("imagesetstream.pdf"))
theDoc.Clear()

imagesetstream.pdf


BoundingBox プロパティ
型 | デフォルト値 | 読み取り専用 | 説明
[C#] XRect [Visual Basic] XRect | 現在のフレームの境界 | はい | イメージを囲む物理的な境界(ポイント)

Notes

このプロパティはイメージを囲む物理的な境界をあらわします。

物理サイズで操作する EPS や PS にとってはピクセルサイズよりも適しています。

注意： EPS や PS ファイルには原点に固定されていない境界があります。

Example

ありません。


Frame プロパティ
型 | デフォルト値 | 読み取り専用 | 説明
[C#] int [Visual Basic] Integer | 1 | いいえ | 現在選択されているフレーム

Notes
ファイル形式によっては複数のイメージを含むことができます。FrameCount プロパティはイメージ数を表します。

Frame プロパティを使用して、現在選択されているイメージを変更することができます。フレームを変更する時、Width、Height、HRes、VRes プロパティも現在選択されているイメージのサイズや解像度を考慮して変わります。また、Doc.AddImageObject メソッドでイメージを追加する時、現在選択されているフレームが追加されます。

Flash (SWF) には多くのフレームがあります。このプロパティで現在のフレームを設定できます。このプロパティに負の値を設定すると、ムービーのミリ秒を設定することになります。

Example
下記のコードは、Image オブジェクトを使用して TIFF ファイルを開きます。PDF ドキュメントの各ページにイメージを追加します。

[C#]
XImage theImg = new XImage();
Doc theDoc = new Doc();
theImg.SetFile(Server.MapPath("../mypics/multipage.tif"));
for (int i = 1; i <= theImg.FrameCount; i++) {
  theImg.Frame = i;
  theDoc.Page = theDoc.AddPage();
  theDoc.AddImageObject(theImg, false);
}
theImg.Clear();
theDoc.Save(Server.MapPath("imageframe.pdf"));
theDoc.Clear();
[Visual Basic]
Dim theImg As XImage = New XImage()
Dim theDoc As Doc = New Doc()
theImg.SetFile(Server.MapPath("../mypics/multipage.tif"))
For i As Integer = 1 To theImg.FrameCount
  theImg.Frame = i
  theDoc.Page = theDoc.AddPage()
  theDoc.AddImageObject(theImg, False)
Next
theImg.Clear()
theDoc.Save(Server.MapPath("imageframe.pdf"))
theDoc.Clear()

imageframe.pdf - [Page 1]

imageframe.pdf - [Page 2]


FrameCount プロパティ
型 | デフォルト値 | 読み取り専用 | 説明
[C#] int [Visual Basic] Integer |  | はい | イメージのフレーム数

Notes

TIFF および GIF ファイルは複数のイメージを含むことができます。FrameCount プロパティはファイル内のイメージ数をあらわします。 Frame プロパティを使用することにより、さまざまなイメージを選択することができます。

マルチフレーム TIFF イメージが一般的に使用されるのには主に以下の2つの理由があります。

  1. イメージを早く簡単にプレビューするために、イメージのコピーを違うサイズで埋め込む場合があります。一般的にこれはイメージの印刷で使用されます。
  2. 複数ページのドキュメントを埋め込む場合があります。このファイルは、一般的にスキャナーや FAXソフトウエアによって生成されます。

また、マルチフレーム GIF はアニメーション GIF とも呼ばれます。各イメージはアニメーションのフレームをあらわします。同じように Flash (SWF) はフレームで構成され、このプロパティは全フレーム数を表します。

PostScript はプログラミング言語です。そこで、PostScript のプログラムは実行時に別々のページに出力することができます。このことから、実際に表示されるまで PostScript ファイルのページ数を確定することはできません。その結果、EPS や PS ファイルには常に FrameCount があります。

Example

Frame プロパティを参照してください。


FrameRate Property

FrameRate プロパティ

型 | デフォルト値 | 読み取り専用 | 説明
[C#] double [Visual Basic] Double | 説明を参照してください | はい | 表示するイメージのデフォルトのフレーム数。

Notes

Flash など形式は一連のフレームで構成されています。

このプロパティは 1秒あたりに表示させたいフレーム数（希望する値）を示します。複雑なムービーの場合、デバイスによっては指定したフレーム数を取得できない場合があります。

Example

Frame プロパティを参照してください。


HasRealRes Property

HasRealRes プロパティ

型 | デフォルト | 読み取り専用 | 説明
[C#] bool [Visual Basic] Boolean | 説明を参照してください。 | はい | イメージから解像度を取得するかを定義します。

Notes

このプロパティは、HRes と VRes をイメージから取得するかを定義します。これらの値がイメージから取得されない場合、HRes と VRes にはデフォルト値が入ります。

Example

ありません。


Height プロパティ
型 | デフォルト値 | 読み取り専用 | 説明
[C#] int [Visual Basic] Integer |  | はい | 現在のフレームの高さ(ピクセル)。

Notes

このプロパティは現在のフレームの高さをピクセル単位であらわします。

Example

ありません。


HRes プロパティ
型 | デフォルト値 | 読み取り専用 | 説明
[C#] double [Visual Basic] Double |  | はい | 現在のフレームの水平方向の解像度(DPI)

Notes

このプロパティは現在のフレームの水平方向の解像度を DPI であらわします。

Example

ありません。


Indirect プロパティ
型 | デフォルト値 | 読み取り専用 | 説明
[C#] bool [Visual Basic] Boolean | 説明を参照してください | はい | 間接モードでイメージを追加します。

Notes

イメージは間接モードかパススルーモードで追加されます。

これらのモードについてはイメージの処理を参照してください。

Doc.AddImageObject メソッドでイメージを追加するときは、一般的に間接モードで追加します。

しかしファイル形式によっては間接モードをサポートしないものもあるので、パススルーモードを使用する必要があります。その場合、Doc.AddImageObject メソッドの命令は、Doc.AddImageFile や Doc.AddImageData メソッドと同じになります。

イメージを間接モードで追加するかは、このプロパティ値でわかります。EPS と PS 以外のすべてのイメージ形式には true になります。

Example

ありません。


NeedsFile Property

NeedsFile プロパティ

型 | デフォルト値 | 読み取り専用 | 説明
[C#] bool [Visual Basic] Boolean | 説明を参照してください | はい | ファイルが存在していなければならないか定義します。

Notes

このプロパティは次の両方の場合に true になります。

  • Operation プロパティ（null か定義します）を使用する ReadModule プロパティを持つXReadOptions オブジェクトでオブジェクトが作成されている
  • オブジェクトがクリア、解放、ガベージコレクションされない限り、指定したファイルが存在していなければならない

オブジェクトは解放時にそのファイルを削除しません。

Example

ありません。


NeedsStream Property

NeedsStream プロパティ

型 | デフォルト値 | 読み取り専用 | 説明
[C#] bool [Visual Basic] Boolean | 説明を参照してください | はい | ストリームを開いたままにしておくか定義します。

Notes

このプロパティは次の両方の場合に true になります。

  • Operation プロパティ（ null か定義します）を使用する ReadModule プロパティを持つ XReadOptions オブジェクトでオブジェクトが作成されている
  • そのオブジェクトがクリア、解放、ガベージコレクションされない限り、指定したストリームを開いたままで変更されないようにしておかなければならない

True の場合、オブジェクトの解放時にストリームも解放します。Dispose や Clear メソッドのパラメータ化されたオーバーロードを使用して、ストリームを解放せずにオブジェクトだけを解放することができます。

Example

ありません。


Selection プロパティ
型 | デフォルト値 | 読み取り専用 | 説明
[C#] XRect [Visual Basic] XRect | 現在のフレームのサイズ | いいえ | 現在選択されている四角形

Notes

イメージの一部分だけを追加することができます。四角形の選択領域を変更することにより、追加する領域を指定できます。

(注意)
このプロパティは Indirect プロパティが true （デフォルト値）の場合に1つのイメージに対して効果があります。

Example
下記のコードは、XImage オブジェクトを使用して TIFF ファイルを開きます。PDF ドキュメントにイメージ全体を追加し、Selection プロパティを使用してイメージの一部分だけを追加します。

[C#]
XImage theImg = new XImage();
Doc theDoc = new Doc();
theImg.SetFile(Server.MapPath("../mypics/mypic.tif"));
theDoc.Rect.String = theImg.Selection.String;
theDoc.Rect.Magnify(0.5, 0.5);
theDoc.Rect.Position(100, 30);
theDoc.AddImageObject(theImg, false);
theImg.Selection.Inset(100, 200);
theDoc.Rect.String = theImg.Selection.String;
theDoc.Rect.Position(170, 400);
theDoc.AddImageObject(theImg, false);
theImg.Clear();
theDoc.Save(Server.MapPath("imageselect.pdf"));
theDoc.Clear();
[Visual Basic]
Dim theImg As XImage = New XImage()
Dim theDoc As Doc = New Doc()
theImg.SetFile(Server.MapPath("../mypics/mypic.tif"))
theDoc.Rect.String = theImg.Selection.String
theDoc.Rect.Magnify(0.5, 0.5)
theDoc.Rect.Position(100, 30)
theDoc.AddImageObject(theImg, False)
theImg.Selection.Inset(100, 200)
theDoc.Rect.String = theImg.Selection.String
theDoc.Rect.Position(170, 400)
theDoc.AddImageObject(theImg, False)
theImg.Clear()
theDoc.Save(Server.MapPath("imageselect.pdf"))
theDoc.Clear()

imageselect.pdf


Type プロパティ
型 | デフォルト値 | 読み取り専用 | 説明
[C#] string [Visual Basic] String |  | はい | イメージの種類

Notes

このプロパティは、SetFile メソッドや SetData メソッドでロードされるイメージ形式をあらわします。その値は以下のいずれかになります。

  • ""
  • "BMP"
  • "EMF"
  • "EXIF"
  • "GIF"
  • "Icon"
  • "JPEG"
  • "MemoryBMP"
  • "PNG"
  • "TIFF"
  • "WMF"
  • "EPS"
  • "PS"
  • "SWF"

Example

ありません。


VRes プロパティ
型 | デフォルト値 | 読み取り専用 | 説明
[C#] double [Visual Basic] Double |  | はい | 現在のフレームの垂直方向の解像度（DPI）

Notes

このプロパティは現在のフレームの垂直方向の解像度を DPI で表します。

Example

ありません。


Width プロパティ
型 | デフォルト値 | 読み取り専用 | 説明
[C#] int [Visual Basic] Integer |  | はい | 現在のフレームの幅(ピクセル)

Notes

このプロパティは現在のフレームの幅をピクセル単位であらわします。

Example

ありません。


XPoint Class

XPoint オブジェクト

2次元座標での Point 値をあらわします。このオブジェクトが最初に作成されると、左下をあらわす "0 0" で初期化されます。

ABCpdf は PDF の標準の座標空間を使用します。この原点はドキュメントの左下になります。縦横の座標値はポイント単位で上方向と右方向に増加します。なお、1インチは 72 ポイントとなっています。詳しくは座標空間を参照してください。

System.Object
   WebSupergoo.ABCpdf9.XPoint

Implements: IDisposable

メソッド | 説明
XPoint | XRect コンストラクタ
SetPoint | ポイントを設定します。
ToString | オブジェクトの文字列を返します。

プロパティ | 説明
String | 文字列
Point | System.Drawing のポイント
X | 水平方向の値
Y | 垂直方向の値


XPoint Constructor

XPoint コンストラクタ

XPoint コンストラクタ。

Syntax

[C#]
XPoint()
XPoint(string value)
XPoint(double x, double y)
[Visual Basic]
Sub New
Sub New(value As String)
Sub New(x As Double, y as Double)

Params
名称 | 説明
value | "x y" 形式で最初のポイントを定義する文字列
x | ポイントの x 座標
y | ポイントの y 座標

Notes

XPoint オブジェクトを構築します。

Example

ありません。


SetPoint Function

SetPoint メソッド

ポイントを設定します。

Syntax

[C#]
virtual void SetPoint(XPoint point)
[Visual Basic]
Overridable Sub SetPoint(point As XPoint)

Params
名称 | 説明
point | ソースポイント

Notes

このメソッドはパラメータから値をコピーします。

Example

ありません。


ToString Function

ToString メソッド

オブジェクトの文字列を返します。

Syntax

[C#]
override string ToString()
[Visual Basic]
Overrides Function ToString() As String

Params
名称 | 説明
戻り値 | オブジェクトの文字列

Notes

このメソッドはオブジェクトの文字列を返します。これは、オブジェクトの String プロパティを読み取ることと同じです。

Example

ありません。


Point プロパティ
型 | デフォルト値 | 読み取り専用 | 説明
[C#] Point [Visual Basic] Point |  | いいえ | System.Drawing のポイント

Notes

System.Drawing のポイントです。

Windows の座標系は描画サーフェスの左上からの距離で表されます。PDF の座標系は左下からの距離で表されます。

そこで、このプロパティを使用するには、座標系のマッピングを設定しなおす必要があります。この座標系の再設定はオブジェクトを含んでいるコンテキストで行います。Doc.Pos といったプロパティは、Doc.MediaBox のコンテキストで解釈されます。オブジェクトを含んでいない場合、座標系のマッピングの再設定は行われません。

PDF のポイントよりも .NET のポイントの方が簡単に使用できるかもしれませんが、Transforms などの命令は Windows の座標系ではなく、PDF の座標系で実行されます。

Example

下記のコードはドキュメントに3つの単語を追加します。位置は標準の .NET の Points で設定します。

[C#]
Doc theDoc = new Doc();
theDoc.FontSize = 96;
Point pt = theDoc.Pos.Point;
pt.Offset(100, 150);
theDoc.Pos.Point = pt;
theDoc.AddText("One");
pt.Offset(100, 150);
theDoc.Pos.Point = pt;
theDoc.AddText("Two");
pt.Offset(100, 150);
theDoc.Pos.Point = pt;
theDoc.AddText("Three");
theDoc.Save(Server.MapPath("xptpt.pdf"));
theDoc.Clear();
[Visual Basic]
Dim theDoc As Doc = New Doc()
theDoc.FontSize = 96
Dim pt As Point = theDoc.Pos.Point
pt.Offset(100, 150)
theDoc.Pos.Point = pt
theDoc.AddText("One")
pt.Offset(100, 150)
theDoc.Pos.Point = pt
theDoc.AddText("Two")
pt.Offset(100, 150)
theDoc.Pos.Point = pt
theDoc.AddText("Three")
theDoc.Save(Server.MapPath("xptpt.pdf"))
theDoc.Clear()

xptpt.pdf


String プロパティ
型 | デフォルト値 | 読み取り専用 | 説明
[C#] string [Visual Basic] String | "0 0" | いいえ | 文字列による Point 値

Notes

このプロパティは Point 値を文字列であらわします。

フォーマットは "x y" です。

Example

使用例です。

[C#]
XPoint pt = new XPoint();
pt.String = "20 10";
Response.Write("X = " +pt.X.ToString());
Response.Write("<br>");
Response.Write("Y = " +pt.Y.ToString());
[Visual Basic]
Dim pt As XPoint = New XPoint()
pt.String = "20 10"
Response.Write("X = " +pt.X.ToString())
Response.Write("<br>")
Response.Write("Y = " +pt.Y.ToString())

結果です。

X = 20
Y = 10


X プロパティ
型 | デフォルト値 | 読み取り専用 | 説明
[C#] double [Visual Basic] Double | 0 | いいえ | 水平方向の値

Notes
このプロパティは水平方向の値をあらわします。

値はドキュメントの左から右に計測されます。

Example

ありません。


Y プロパティ
型 | デフォルト値 | 読み取り専用 | 説明
[C#] double [Visual Basic] Double | 0 | いいえ | 垂直方向の値

Notes
このプロパティは垂直方向の値をあらわします。

値はドキュメントの下から上に計測されます。

Example

ありません。


XReadOptions Object

XReadOptions オブジェクト

読込処理の設定を表します。

XReadOptions オブジェクトを作成し、それを読込時に渡すことで、コンテンツのインポート処理を完全に制御することができます。さまざまな方法でコンテンツをインポートできる、さまざまな読込モジュールがあります。例えば、OpenOffice.org か Microsoft Word のどちらかを使用して Microsoft Word ドキュメントを PDF に変換できます。XReadOptions オブジェクトは特定の設定を使用する1つ/複数のモジュールを的確に処理することができます。

System.Object
   WebSupergoo.ABCpdf9.XReadOptions

Implements: IDisposable

メソッド | 説明
XReadOptions | XReadOptions のコンストラクタ
Dispose | XReadOptions を解放します

プロパティ | 説明
AddForms | フォームのフィールドを有効にするかを定義します
Bookmarks | ブックマークの作成方法
DefaultFont | フォントを指定していないテキストに使用するフォント
DefaultRect | サイズ設定なしのドキュメントのデフォルトのドキュメントサイズ
EnableMSOfficeMacros | MS Office ドキュメントを開く時にマクロを有効にするかを定義します
ErrorHandling | エラーの処理方法
ExtraChecks | PDF ドキュメントの読込時に追加確認を行うかを定義します
FileExtension | パスやファイル名なしで指定されたソースのファイル拡張子を取得または設定します
Frame | ムービーなど、マルチフレームのイメージから読み込まれるフレーム
Log | 読込処理のログ
MakeFieldNamesUnique | フィールド名を一意にします
OpenOfficeParameters | OpenOffice.org 用の PDF 変換パラメータ
Operation | 使用する Operation クラス
Password | ソースの読込に必要なパスワード
PreserveTransparency | ラスタイメージの透明度を保存するかを定義します
SkipRevisions | 増分更新した PDF を読み込む時、何回か前の PDF に戻します
ReadModule | 使用するモジュール
Timeout | 外部コンポーネントのタイムアウト


XReadOptions Constructor

XReadOptions コンストラクタ

XReadOptions コンストラクタ。

Syntax

[C#]
XReadOptions()
[Visual Basic]
Sub New()

Params
名称 | 説明
なし |

Notes

空の XReadOptions を構築します。

Example

ありません。


Dispose Function

Dispose メソッド

オブジェクトを解放します。

Syntax

[C#]
void Dispose()
[Visual Basic]
Sub Dispose()

Params
名称 | 説明
なし |

Notes

このメソッドは、オブジェクトを明示的に解放してガベージ・コレクションのオーバーヘッドを減らします。

このメソッドは、Operation プロパティを解放します。

このメソッドを呼び出した後にオブジェクトを使用しないでください。

Example

ありません。


ReadModule Property

ReadModule プロパティ

型 | デフォルト値 | 読み取り専用 | 説明
[C#] ReadModuleType [Visual Basic] ReadModuleType | Default | いいえ | 使用するモジュールを取得または設定します

Notes

ReadModuleType 列挙体は次の値を取得できます。

  • Default: 提供されたコンテンツや呼び出されたメソッドに応じて、ABCpdf が適切なモジュールまたはモジュールセットだと思う読込処理を指名します。
  • Pdf:
    標準の PDF インポート モジュール。 Password プロパティを使用します。
  • SwfVector:
    ネイティブな Flash / SWF べクトル インポート モジュール。Operation プロパティと Frame プロパティを使用します。Operation プロパティは null または SwfImportOperation でなければなりません。
  • Xps:
    ネイティブな XPS インポートモジュール。Operation プロパティ（値が null または XpsImportOperation でなければなりません）を使用します。
  • XpsAny:
    XPS プリンタドライバで印刷し、印刷されたドキュメントをインポートします。Operation プロパティ、FileExtension プロパティ、Timeout プロパティを使用します。Operation プロパティは null または XpsImportOperation でなければなりません。
  • MSOffice:
    Microsoft Office を使用してドキュメントを変換します。高速で、ネイティブなフォームのフィールドや注釈の変換を含んだ高性能な出力を作成します。AddForms プロパティ、Boomarks プロパティ、Password プロパティ、EnableMSOfficeMacros プロパティ、PreserveTransparency プロパティと Timeout プロパティを使用します。
  • OpenOffice:
    OpenOffice.org を使用してドキュメントを変換します。OpenOfficeParameters プロパティと Timeout プロパティを使用します。
  • Svg:
    ネイティブな SVG (Scaleable Vector Graphics) インポート モジュール。DefaultFont プロパティと DefaultRect プロパティを使用します。
  • Eps:
    ネイティブな SEPS (Encapsulated PostScript) インポート モジュール。ErrorHandling プロパティと Log プロパティを使用します。
  • BasicImage:
    PDF ドキュメントに直接 JPEG イメージやマルチページ TIFF などのイメージを読み込みます。PreserveTransparency プロパティを使用します。

Example

ありません。


AddForms Property

AddForms プロパティ

型 | デフォルト値 | 読み取り専用 | 説明
[C#] bool [Visual Basic] Boolean | false | いいえ | フォームのフィールドを有効にするかを定義します

Notes

このプロパティは、ソースドキュメントのフォームのフィールドを PDF のフォームのフィールドに変換するかを定義します。


DefaultFont Property

DefaultFont プロパティ

型 | デフォルト値 | 読み取り専用 | 説明
[C#] string [Visual Basic] String | "Helvetica" | いいえ | フォントを指定していないテキストに使用するフォント

Notes

フォントを指定していないテキストに使用するフォントです。

Example

ありません。


DefaultRect Property

DefaultRect プロパティ

型 | デフォルト値 | 読み取り専用 | 説明
[C#] XRect [Visual Basic] XRect | "Letter" | いいえ | サイズ設定なしのドキュメントのデフォルトのドキュメントサイズ。

Notes

ドキュメント型によってはドキュメントのサイズ指定がいりません。

例えば、SVG も PostScript も出力デバイスのサイズを設定しなくても描画命令のセットだけで作成できます。

このプロパティはドキュメントのサイズが指定されていない場合、デフォルトのサイズを指定できます。

Example

ありません。


EnableMSOfficeMacros Property

EnableMSOfficeMacros プロパティ

型 | デフォルト値 | 読み取り専用 | 説明
[C#] bool [Visual Basic] Boolean | false | いいえ | MS Office ドキュメントを開く時にマクロを有効にするかを定義します

Notes

このプロパティは MS Office ドキュメントを開く時にマクロを有効にするかを定義します。これは MS Word、Excel、PowerPoint に対してのみサポートされます。その他はすべて無視されます。

デフォルトでは、マクロは無効になっています。

Example

ありません。


ErrorHandling Property

ErrorHandling プロパティ

型 | デフォルト値 | 読み取り専用 | 説明
[C#] ErrorHandlingType [Visual Basic] ErrorHandlingType | OutputUntilError | いいえ | エラーの処理方法

Notes

ErrorHandlingType 列挙体の値は次の通りです。

OutputUntilError:
エラーが起こっても現在のファイルを処理するよう ABCpdf に命じます。これは一般的なエラーの処理に役立ちます。例えば、EPS ファイルの一部が途中で切れてしまうことがあります。切れてしまう部分が少しだけなら、ファイルが技術的な面で壊れかかっていても切れてないファイルと同じように出力されます。

NoOutputOnError:
ファイルが有効か確認し、切れる危険性がある場合は例外を出します。

Example

ありません。


ExtraChecks

ExtraChecks プロパティ

型 | デフォルト値 | 読み取り専用 | 説明
[C#] bool [Visual Basic] Boolean | false | いいえ | PDF ドキュメントの読込時に追加確認を行うかを定義します

Notes

一部の PDF ファイルは PDF 仕様に完全に準拠していない、要するに壊れている場合があります。

ABCpdf は深刻ではない破損に対処します。しかし、一部の重大な破損はドキュメント全体を読み込んでリビルドする必要があります。これは、このプロパティが True の場合のみ行われます。

ドキュメントのリビルドは好ましくはありません。時間がかかるだけでなくリビルドの方法もいくつもある場合があります。使用する方法によっては、ドキュメントがまったく別のものになってしまう場合があります。実際には、たいてい結果は同じになるのですが、稀に異なる場合があります。このため、このプロパティのデフォルト値は False になっています。

特性の異なるソースから大量の PDF ドキュメントを処理しなければならないユーザーの多くは、結局次のようなコードを書くことになります。

[C#]
try {
  theDoc.Read(theFile);
}
catch {
  XReadOptions xr = new XReadOptions();
  xr.ExtraChecks = true;
  theDoc.Read(theFile, xr);
}
[Visual Basic]
Try
  theDoc.Read(theFile)
Catch
  Dim xr As New XReadOptions()
  xr.ExtraChecks = True
  theDoc.Read(theFile, xr)
End Try

Example

ありません。


Frame Property

Frame プロパティ

型 | デフォルト値 | 読み取り専用 | 説明
[C#] long [Visual Basic] Long | 0 | いいえ | ムービーなどのマルチフレームイメージから読み込むフレーム フレームは1から上の番号が付けられます。デフォルト値 0 はデフォルトのフレーム/フレームセットを使用することを表します。

Notes

このプロパティは、フレームまたはサブドキュメントをサポートする ReadModule プロパティで使用されます。

SwfVector モジュールは、Operation プロパティが null の時にこのプロパティを使用します。この時、SwfImportOperation 一時クラスが作成され、ProcessingObjectEventArgs.Info.FrameNumber プロパティがこのプロパティ値に設定されます。デフォルトの動作はフレーム1を読み込むことです。

MSOffice モジュールは、このプロパティを使用して Excel のスプレッドシートから各ワークシートを読み込めるようにします。デフォルトの動作は、ワークシートを1つではなく全部読み込むことです。

Example

ありません。


FileExtension Property

FileExtension プロパティ

型 | デフォルト値 | 読み取り専用 | 説明
[C#] string [Visual Basic] String | null | いいえ | パスやファイル名なしで指定されたソースのファイル拡張子を取得または設定します。

Notes

このプロパティは、ストリームまたはバイト配列などソースの仕様がファイル拡張子を提供しない時だけ、異なるファイル拡張子を持つァイルを取得できるモジュールで使用されます。

Default モジュールの場合はオプションですが、このプロパティを設定した場合、モジュールがその通りに動作しない可能性があります。XpsAny や OpenOffice モジュールの場合ははこのプロパティを使用してください。

Example

ありません。


Log Property

Log プロパティ

型 | デフォルト値 | 読み取り専用 | 説明
[C#] string [Visual Basic] String | null | はい | 読込処理のログ

Notes

読込処理時に、作成段階にしか解決できないような問題やエラーの理由にはならないが警告を出せたような問題に直面することがあります。

例えば、EPS のインポート処理時に使用できないフォントがあった場合、ABCpdf は別のフォントを使用します。見た目はまったく同じとはいきませんが、かなり似たものになります。

ABCpdf はこのプロパティを使用してこの種の問題のログを取ります。

Example

ありません。


MakeFieldNamesUnique Property

MakeFieldNamesUnique プロパティ

型 | デフォルト値 | 読み取り専用 | 説明
[C#] bool [Visual Basic] Boolean | true | いいえ | フィールド名を一意にします

Notes

同じ名前、あるいは名前なしのフィールドを HTML フォームに含めることができます。

PDF の２つのフィールドが同じ名前の場合、フィールドは同じ値を取得します。

従って、PDF に同じ名前の HTML フィールドを複数追加すると、これらのフィールドはすべて同じ内容を表示します。オリジナルの HTML フィールドが違う内容を含んでいてもそうなります。

このプロパティを設定すると、内容が同じにならないように同じ名前のフィールドは名前が変更されます。名前のないフィールドは PDF にきちんと表示されるようにプレースホルダー名が追加されます。

Example

ありません。


OpenOfficeParameters Property

OpenOfficeParameters プロパティ

型 | デフォルト値 | 読み取り専用 | 説明
[C#] ListDictionary [Visual Basic] ListDictionary | false | いいえ | OpenOffice.org の PDF 変換制御パラメータ。

Notes

このプロパティは OpenOffice.org のインポート モジュールによって使用され、PDF 変換プロセスを明示的に制御するために、カスタムなパラメータを OpenOffice.org に渡します。

以下のパラメータは名前付きのオブジェクトのセットです。名称とオブジェクト型は OpenOffice.org のバージョン間で異なりますが、ABCpdf のデフォルトは大半の変換に適した基本のセットになります。

名称 | 説明 | 型 | 値
UseLosslessCompression | ロスなし圧縮モード。すべてのピクセルが保存されます。 | Boolean | false
Quality | JPEG ファイルのクオリティ。 | Int32 | 90
ReduceImageResolution | 画像の圧縮の際に MaxImageResolution まで圧縮します。 | Boolean | false
MaxImageResolution | 画像の最大解像度。 | Int32 | 72
UseTaggedPDF | タグ付き PDF。目次、ハイパーリンク、コントロールなど、セマンティック構造を保存します。 | Boolean | true
ExportNotes | 脚注の出力（ライターのメモをエクスポートし、ドキュメントを PDF メモとして計算します）。 | Boolean | true
ExportNotesPages | 中のページの出力（ページのメモをエクスポートします）。 | Boolean | false
UseTransitionEffects | 切り替え効果（Impress のみ） | Boolean | false
FormsType | フォームのタイプ（PDF ファイルの中から提出するフォームの形式を選択します）。 例： 0 - FDF、1 - PDF、2 - HTML、3 - XML | Int32 | 0

詳細とその他のオプションは OpenOffice.org のウェブサイトをご覧ください。

Example

ありません。


Operation Property

Operation プロパティ

型 | デフォルト値 | 読み取り専用 | 説明
[C#] Operation [Visual Basic] Operation | null | いいえ | 使用する Operation クラスを取得または設定します。

Notes

このプロパティは Operation の派生クラスがあるモジュールで使用されます。null の場合、モジュールはデフォルトの動作を持つテンポラリの Operation クラスを作成します。

ReadModule | Operation | 説明
SwfVector | SwfImportOperation | このプロパティが null の場合、テンポラリの SwfImportOperation は一度に Timeout を Timeout に、ProcessingObjectEventArgs.Info.FrameNumber を Frame に設定します。
Xps | XpsImportOperation | このプロパティが null の場合、テンポラリの XpsImportOperation はそのページの GraphicLayer を圧縮します。
XpsAny | XpsImportOperation | このプロパティが null の場合、テンポラリの XpsImportOperation はそのページの GraphicLayer を圧縮します。

Example

ありません。


Password Property

Password プロパティ

型 | デフォルト値 | 読み取り専用 | 説明
[C#] string [Visual Basic] String | null | いいえ | ソースの読込に必要なパスワードを取得または設定します

Notes

このプロパティは、例えば PDF ドキュメントを読み込む時など、ソースにアクセスするためのパスワードを設定します。

また、このプロパティは Microsoft Office の MS Word または MS Excel ドキュメントを XpsAny や MSOffice ReadModule を使ってインポートする場合に使用されます。MS PowerPoint などのその他の Office アプリケーションでは、ABCpdf はパスワードで保護されたドキュメントをインポートすることはできないので注意してください。現在、ドキュメントがパスワードで保護されている場合、正しいパスワードを入力しても、フォームのフィールド変換などの特定の機能が無効になる場合があります。

Example

ありません。


PreservesTransparency Property

PreserveTransparency プロパティ

型 | デフォルト値 | 読み取り専用 | 説明
[C#] bool [Visual Basic] Boolean | false | いいえ | ラスタイメージの透明度を保存するかを定義します。

Notes

このプロパティは、ソースがラスタイメージの場合に使用されます。呼び出されたメソッド（例： Doc.AddImageObject ）が同じ設定を指定するパラメータを持っている場合、そのパラメータはこのプロパティをオーバーライドします。

Example

ありません。


Timeout Property

Timeout プロパティ

型 | デフォルト値 | 読み取り専用 | 説明
[C#] int [Visual Basic] Integer | 60000 | いいえ | 外部コンポーネントのタイムアウトをミリ秒単位で取得または設定します。

Notes

このプロパティは、外部コンポーネント（例：XpsAny の ReadModule の XPS プリンタドライバなど）に使用されます。

Example

ありません。


SkipRevisions Property

SkipRevisions プロパティ

型 | デフォルト値 | 読み取り専用 | 説明
[C#] int [Visual Basic] Integer | 0 | いいえ | 増分更新した PDF を読み込む時、何回か前の PDF に戻します。

Notes

増分更新した PDF を読み込む時、何回か前の PDF に戻します。

元の PDF を上書きするのではなく変更が付加されるように、PDF を増分更新することができます。つまり、1つ前の PDF に戻すことができます。このプロパティにより、何回か前の PDF に戻すことができます。

PDF の増分更新回数やその更新内容については、IndirectObject.Revision プロパティと ObjectSoup.Revisions プロパティを参照してください。

Example

ありません。


Bookmarks Property

Bookmarks プロパティ

型 | デフォルト値 | 読み取り専用 | 説明
[C#] BookmarkType [Visual Basic] BookmarkType | DontCare | いいえ | ブックマークの作成方法

Notes

BookmarkType 列挙体は次の値のどれかを取得できます。

  • DontCare
    モジュール固有のデフォルト設定を使用します。
  • None
    ソースドキュメントからブックマークを何もインポートしません。
  • Heading
    ドキュメントの見出し（例：MS Word のスタイル付きの見出し）を使用してブックマークを作成します。


XRect Class

XRect オブジェクト

2次元座標で四角形を表します。最初に作成された時、このオブジェクトは "0 0 0 0" で初期化されます。

ABCpdf は PDF の標準の座標空間を使用します。この原点はドキュメントの左下になります。縦横の座標値はポイント単位で上方向と右方向に増加します。なお、1インチは 72 ポイントとなっています。詳しくは座標空間を参照してください。

Doc.Units プロパティや Doc.TopDown プロパティを使用することにより、Doc.Rect や Doc.MediaBox の座標系を変更することができます。

System.Object
   WebSupergoo.ABCpdf9.XRect

Implements: IDisposable

メソッド | 説明
S» Throws Exceptions FromLbwh | 左下、幅、高さから XRect を作成します
S» Throws Exceptions FromLtwh | 左上、幅、高さから XRect を作成します
S» Throws Exceptions FromSides | 2つの対角線上に向かい合う角から XRect を作成します
XRect | XRect コンストラクタ
FitIn | 四角形を格納先の四角形にコンテンツとして収めます
Inset | 四角形の縁を挿入
Intersect | 四角形と別の四角形を交差します
Magnify | 四角形のスケーリング
Move | 四角形の移動
Position | 四角形の左下の位置設定
Resize | 四角形の幅と高さを設定
Union | 四角形を別の四角形と結合します
SetRect | 四角形の位置とサイズを設定します
SetSides | 四角形の側面を設定します
ToString | オブジェクトの文字列を返します

プロパティ | 説明
String | 区切り文字による四角形
Rectangle | The System.Drawing.Rectangle の四角形
Left | 四角形の左側の値
Bottom | 四角形の下側の値
Right | 四角形の右側の値
Top | 四角形の上側の値
Width | 四角形の幅の値
Height | 四角形の高さの値
Pin | 四角形の基準点
HasArea | 四角形に領域があるかどうか


FromLbwh Function

FromLbwh メソッド

左下、幅、高さから XRect を作成します。

Syntax

[C#]
static XRect FromLbwh(double left, double bottom, double width, double height)
[Visual Basic]
Shared Function FromLbwh(left As Double, bottom As Double, width As Double, height As Double) As XRect

Params
名称 | 説明
left | 左座標
bottom | 下座標
width | 四角形の幅
height | 四角形の高さ

Notes

このメソッドは、左下、幅、高さから XRect オブジェクトを作成します。

このメソッドは、このオブジェクトの一連のサイズ変更や位置決め処理も左下角を基準にして行われるとみなします。Pin プロパティはデフォルトの Corner.BottomLeft のままです。

Example

ありません。


FromLtwh Function

FromLtwh メソッド

左上、幅、高さから XRect を作成します。

Syntax

[C#]
static XRect FromLtwh(double left, double top, double width, double height)
[Visual Basic]
Shared Function FromLtwh(left As Double, top As Double, width As Double, height As Double) As XRect

Params
名称 | 説明
left | 左座標
top | 上座標
width | 四角形の幅
height | 四角形の高さ

Notes

このメソッドは、左上、幅、高さから XRect オブジェクトを作成します。

このメソッドはこのオブジェクトの一連のサイズ変更や位置決め処理も左上角を基準にして行われるとみなします。Pin プロパティは Corner.TopLeft に設定されます。

Example

ありません。


FromSides Function

FromSides メソッド

2つの対角線上に向かい合う角の座標から XRect を作成します。

Syntax

[C#]
static XRect FromSides(double xMin, double yMin, double xMax, double yMax)
[Visual Basic]
Shared Function FromSides(xMin As Double, yMin As Double, xMax As Double, yMax As Double) As XRect

Params
名称 | 説明
xMin | x 座標の最小値
yMin | y 座標の最小値
xMax | x 座標の最大値
yMax | y 座標の最大値

Notes

このメソッドは、2つの対角線上に向かい合う角の座標から XRect を作成します。

x 座標の最小値が x 座標の最大値よりも大きい場合、XRect の幅は負の値になります。同様に、y 座標の最小値が y 座標の最大値よりも大きい場合、XRect の高さは負の値になります。

Example

ありません。


XRect Constructor

XRect コンストラクタ

XRect コンストラクタ。

Syntax

[C#]
XRect()
XRect(string value)
[Visual Basic]
Sub New
Sub New(value As String)

Params
名称 | 説明
value | "左 下 右 上" - 最初の四角形を定義する文字列

Notes

これらのメソッドは XRect オブジェクトを構築します。

Example

ありません。


FitIn Function

FitIn メソッド

四角形を格納先の四角形にコンテンツとして収めます。

Syntax

[C#]
virtual void FitIn(XRect rect, ContentAlign align, ContentScaleMode scaleMode)
[Visual Basic]
Overridable Sub FitIn(rect As XRect, align As ContentAlign, scaleMode As ContentScaleMode)

Params
名称 | 説明
rect | 格納先の四角形
align | コンテンツの配置方法
scaleMode | コンテンツのスケールモード

Notes

四角形を格納先の四角形に収めます。

ContentAlign 列挙体は次の値を組み合わせて取得できます。

  • Center
  • Left
  • Right
  • Top
  • Bottom

ContentScaleMode 列挙体は次の値を取得できます。

  • ShowAll – アスペクト比を保ちながらコンテンツを拡大して四角形にすべて収めます
  • NoBorder – アスペクト比を保ちながら四角形全体を覆うようにコンテンツを表示します
  • ExactFit – 四角形全体にぴったり収まるようにコンテンツを引き伸ばします。代入と同じです。
  • NoScale – スケーリングなし。四角形の位置は移動されます。

Example

ありません。


Inset Function

Inset メソッド

四角形の縁を挿入します。

Syntax

[C#]
virtual void Inset(double x, double y)
[Visual Basic]
Overridable Sub Inset(x As Double, y As Double)

Params
名称 | 説明
x | 左側と右側の縁の位置
y | 上側と下側の縁の位置

Notes

水平方向と垂直方向の値を指定して四角形の縁を挿入します。

Example

使用例です。

[C#]
XRect rc = new XRect();
rc.String = "0 0 200 100";
Response.Write("Rect = " + rc.String);
Response.Write("<br>");
rc.Inset(10, 20);
Response.Write("Inset = " + rc.String);
[Visual Basic]
Dim rc As XRect = New XRect()
rc.String = "0 0 200 100"
Response.Write("Rect = " + rc.String)
Response.Write("<br>")
rc.Inset(10, 20)
Response.Write("Inset = " + rc.String)

結果です。

Rect = 0 0 200 100
Inset = 10 20 190 80


Intersect Function

Intersect メソッド

四角形と別の四角形を交差します。

Syntax

[C#]
virtual void Intersect(XRect rect)
[Visual Basic]
Overridable Sub Intersect(rect As XRect)

Params
名称 | 説明
rect | 別の四角形

Notes

四角形と別の四角形を交差します。

Example

ありません。


Magnify Function

Magnify メソッド

四角形のスケーリングを行います。

Syntax

[C#]
virtual void Magnify(double x, double y)
[Visual Basic]
Overridable Sub Magnify(x As Double, y As Double)

Params
名称 | 説明
x | 水平方向の拡大率
y | 垂直方向の拡大率

Notes

四角形の幅と高さのスケーリングを設定します。四角形の1つの角を基準位置として Pin プロパティで設定し、X と Y の値でスケーリングを行います。

なお、この基準位置のデフォルトは左下です。

Example

使用例です。

[C#]
XRect rc = new XRect();
rc.String = "20 20 220 120";
Response.Write("Rect = " + rc.String);
Response.Write("<br>");
rc.Magnify(0.5, 0.5);
Response.Write("Scale = " + rc.String);
[Visual Basic]
Dim rc As XRect = New XRect()
rc.String = "20 20 220 120"
Response.Write("Rect = " + rc.String)
Response.Write("<br>")
rc.Magnify(0.5, 0.5)
Response.Write("Scale = " + rc.String)

結果です。

Rect = 20 20 220 120
Scale = 20 20 120 70


Move Function

Move メソッド

四角形を移動します。

Syntax

[C#]
virtual void Move(double x, double y)
[Visual Basic]
Overridable Sub Move(x As Double, y As Double)

Params
名称 | 説明
x | 四角形の水平方向の移動量
y | 四角形の垂直方向の移動量

Notes

四角形を移動します。

Example

使用例です。

[C#]
XRect rc = new XRect();
rc.String = "20 20 220 120";
Response.Write("Rect = " + rc.String);
rc.Move(50, 50);
Response.Write("<br>");
Response.Write("Move = " + rc.String);
[Visual Basic]
Dim rc As XRect = New XRect()
rc.String = "20 20 220 120"
Response.Write("Rect = " + rc.String)
rc.Move(50, 50)
Response.Write("<br>")
Response.Write("Move = " + rc.String)

結果です。

Rect = 20 20 220 120
Move = 70 70 270 170


Position Function

Position メソッド

四角形の位置を設定します。

Syntax

[C#]
virtual void Position(double x, double y)
virtual void Position(double x, double y, Corner corner)
[Visual Basic]
Overridable Sub Position(x As Double, y As Double)
Overridable Sub Position(x As Double, y As Double, corner As Corner)

Params
名称 | 説明
x | 新しい水平方向の位置
y | 新しい垂直方向の位置
corner | 固定する角

Notes

縦横を維持したまま指定した位置に四角形を移動します。

四角形の1つの角を基準として位置の設定が行われます。この基準点は Pin プロパティで指定できますが、このメソッドを呼び出す時に Corner パラメータを指定することで Pin プロパティのデフォルト値をオーバーライドできます。

Example

使用例です。

[C#]
XRect rc = new XRect();
rc.String = "20 20 220 120";
Response.Write("Rect = " + rc.String);
Response.Write("<br>");
rc.Position(50, 50);
Response.Write("Pos. = " + rc.String);
[Visual Basic]
Dim rc As XRect = New XRect()
rc.String = "20 20 220 120"
Response.Write("Rect = " + rc.String)
Response.Write("<br>")
rc.Position(50, 50)
Response.Write("Pos. = " + rc.String)

結果です。

Rect = 20 20 220 120
Pos. = 50 50 250 150


Resize Function

Resize メソッド

四角形の幅と高さを変更します。

Syntax

[C#]
virtual void Resize(double w, double h)
virtual void Resize(double w, double h, Corner corner)
[Visual Basic]
Overridable Sub Resize(w As Double, h As Double)
Overridable Sub Resize(w As Double, h As Double, corner as Corner)

Params
名称 | 説明
w | 新しい幅
h | 新しい高さ
corner | 固定する角

Notes

四角形の幅と高さを設定します。

四角形の1つの角を基準点として幅や高さが変更されますが、この基準点は Pin プロパティで指定されますが、このメソッドを呼び出す時に Corner パラメータを指定することで Pin プロパティのデフォルト値をオーバーライドできます。

Example

使用例です。

[C#]
XRect rc = new XRect();
rc.String = "20 20 220 120";
Response.Write("Rect = " + rc.String);
Response.Write("<br>");
rc.Resize(50, 150);
Response.Write("Pos. = " + rc.String);
[Visual Basic]
Dim rc As XRect = New XRect()
rc.String = "20 20 220 120"
Response.Write("Rect = " + rc.String)
Response.Write("<br>")
rc.Resize(50, 150)
Response.Write("Pos. = " + rc.String)

結果です。

Rect = 20 20 220 120
Pos. = 20 20 70 170


Union Function

Union メソッド

四角形を別の四角形と結合します。

Syntax

[C#]
virtual void Union(XRect rect)
virtual void Union(XRect rect, bool noAreaIsEmpty)
[Visual Basic]
Overridable Sub Union(rect As XRect)
Overridable Sub Union(rect As XRect, noAreaIsEmpty as Boolean)

Params
名称 | 説明
rect | この四角形に追加する四角形。追加する四角形はこのメソッドによってそのまま残ります。
noAreaIsEmpty | 空いていない四角形を空いているものとして処理するかどうか。デフォルト値は True。

Notes

四角形を別の四角形と結合します。

この四角形は、両方の四角形が入る最小の四角形となります。

デフォルトでは、空いていない四角形を空いているものとして処理します。空いていない四角形と空いている四角形を結合すると、常に空いていない四角形として処理されます。

noAreaIsEmpty パラメータが false に設定（空いていない四角形として処理）された場合、空いていない四角形はポイントとして処理され、その四角形にそのポイントが入れられます。

Example

ありません。


SetRect Function

SetRect メソッド

四角形の位置と大きさを設定します。

Syntax

[C#]
virtual void SetRect(double x, double y, double w, double h)
virtual void SetRect(XRect rect)
[Visual Basic]
Overridable Sub SetRect(x As Double, y As Double, w As Double, h As Double)
Overridable Sub SetRect(rect As XRect)

Params
名称 | 説明
x | 水平方向の新しい位置
y | 垂直方向の新しい位置
w | 新しい幅
h | 新しい高さ
rect | ソースの四角形

Notes

四角形の位置と大きさを設定します。

四角形の1つの角が基準点として設定されますが、この基準点は Pin プロパティで指定されます。なお、デフォルトの基準点は左下です。

XRect を取得するオーバーロードは、実際の位置と大きさをコピーします。この XRect と XRect パラメータはデフォルトの Pin とデフォルトの座標設定（Doc.TopDown と Doc.Units）を使用するかのようにふるまうので、このオーバーロードは、他のオーバーロードとは異なって動作したり String を使用してコピーするのとは異なって動作します。Pin はコピーされません。

例えば、Doc.Units がミリメートルに設定されている Doc オブジェクトがあって、XRect も作成してあるとします。rect.SetRect(doc.Rect) を呼び出すと、その四角形に含まれる座標はミリメートルではなくポイント単位になります。同様に、doc.Rect.SetRect(rect) を呼び出すと、その四角形に含まれているポイントベースの単位はミリメートルに変換されて doc.Rect に挿入されます。つまり、座標系の自動変換があります。

Example

使用例です。

[C#]
XRect rc = new XRect();
rc.String = "20 20 220 120";
Response.Write("Rect = " + rc.String);
Response.Write("<br>");
rc.SetRect(20, 40, 50, 150);
Response.Write("Pos. = " + rc.String);
[Visual Basic]
Dim rc As XRect = New XRect()
rc.String = "20 20 220 120"
Response.Write("Rect = " + rc.String)
Response.Write("<br>")
rc.SetRect(20, 40, 50, 150)
Response.Write("Pos. = " + rc.String)

結果です。

Rect = 20 20 220 120
Pos. = 20 40 70 190


SetSides Function

SetSides メソッド

四角形の側面を設定します。

Syntax

[C#]
virtual void SetSides(double x1, double y1, double x2, double y2)
[Visual Basic]
Overridable Sub SetSides(x1 As Double, y1 As Double, x2 As Double, y2 As Double)

Params
名称 | 説明
x1 | 新しい左位置
y1 | 新しい下位置
x2 | 新しい右位置
y2 | 新しい上位置

Notes

四角形の座標を設定します。

Example

ありません。


Bottom プロパティ
型 | デフォルト値 | 読み取り専用 | 説明
[C#] double [Visual Basic] Double | 0 | いいえ | 四角形の下側の値

Notes

このプロパティは四角形の下側の値をあらわします。

Example

ありません。


Height プロパティ
型 | デフォルト値 | 読み取り専用 | 説明
[C#] double [Visual Basic] Double | 0 | いいえ | 四角形の高さの値

Notes
このプロパティは四角形の高さの値をあらわします。

四角形の高さを変更すると、四角形の1つの角を基準位置(Pin プロパティで設定されます)として、そこから高さが設定されます。

Example

ありません。


Left プロパティ
型 | デフォルト値 | 読み取り専用 | 説明
[C#] double [Visual Basic] Double | 0 | いいえ | 四角形の左側の値

Notes

このプロパティは四角形の左側の値をあらわします。

Example

ありません。


Pin プロパティ
型 | デフォルト値 | 読み取り専用 | 説明
[C#] Corner [Visual Basic] Corner | Corner.BottomLeft | いいえ | 四角形の基準位置

Notes

このプロパティは四角形の基準位置を表します。

Corner 列挙体は次の値を取得できます。

  • BottomLeft
  • TopLeft
  • BottomRight
  • TopRight

命令の中には位置決めに四角形の基準点を必要とするものがあります。一般的に四角形の幅を変更するには、左端や右端の位置を変更します。四角形の基準位置 (Pin プロパティ)が左下か左上に設定してあると、左端や右端のどちらを変更しても右方向に幅が変更されます。逆に基準位置 (pin プロパティ)を右下や右上に設定すると、左端や右端のどちらを変更しても幅は左方向に変更されます。

Pin が数値なのは？

ABCpdf の旧バージョンでは、Pin プロパティは数値でした。Corner パラメータを Pin プロパティに設定するには、次のようなコードでその値をキャストしなければなりませんでした。

theRect.Pin = (int)XRect.Corner.TopRight

バージョン 8 では、Pin プロパティは列挙体に変更されたので、直接 Corner パラメータを割り当てることができます。

theRect.Pin = XRect.Corner.TopRight

コードが列挙体ではなく integer の場合は、その数値を Corner パラメータにキャストした方が安全です。

theRect.Pin = (XRect.Corner)myIntegerValue

Example

ありません。


Rectangle プロパティ

型 | デフォルト値 | 読み取り専用 | 説明
[C#] Rectangle [Visual Basic] Rectangle | なし | いいえ | System.Drawing.Rectangle の四角形

Notes

System.DrawingRectangle の四角形。

Windows の座標の原点は左上ですが、PDF の基本座標の原点はドキュメントの左下になります。

そこで、このプロパティを使用するには、座標系のマッピングを再設定する必要があります。この座標系の再設定はオブジェクトを含んでいるコンテキストで行います。Doc.Rect や XImage.Selection のようなプロパティはコンテナを持っていますが、Doc.MediaBox のようなプロパティは持っていません。オブジェクトを含めるコンテナが無いと、座標系のマッピングの再設定は行われません。

PDF より .NET の方が簡単に使用できるかもしれませんが、Transforms のような命令は Windows の座標系ではなく、PDF の座標系で実行されます。

Example

下記のコードはドキュメントにテキストを追加します。位置は標準の .NET の Rectangle で設定します。

[C#]
Doc theDoc = new Doc();
theDoc.FontSize = 96;
Rectangle rc = theDoc.MediaBox.Rectangle;
rc.Inflate(-50, -50);
rc.Height = 250;
theDoc.Rect.Rectangle = rc;
theDoc.FrameRect();
theDoc.AddText("First Rectangle...");
rc.Offset(0, 300);
theDoc.Rect.Rectangle = rc;
theDoc.FrameRect();
theDoc.AddText("Second Rectangle...");
theDoc.Save(Server.MapPath("xrectrectangle.pdf"));
theDoc.Clear();
[Visual Basic]
Dim theDoc As Doc = New Doc()
theDoc.FontSize = 96
Dim rc As Rectangle = theDoc.MediaBox.Rectangle
rc.Inflate(-50, -50)
rc.Height = 250
theDoc.Rect.Rectangle = rc
theDoc.FrameRect()
theDoc.AddText("First Rectangle...")
rc.Offset(0, 300)
theDoc.Rect.Rectangle = rc
theDoc.FrameRect()
theDoc.AddText("Second Rectangle...")
theDoc.Save(Server.MapPath("xrectrectangle.pdf"))
theDoc.Clear()

xrectrectangle.pdf


Right プロパティ
型 | デフォルト値 | 読み取り専用 | 説明
[C#] double [Visual Basic] Double | 0 | いいえ | 四角形の右側の値

Notes

このプロパティは四角形の右側の値をあらわします。

Example

ありません。


String プロパティ
型 | デフォルト値 | 読み取り専用 | 説明
[C#] string [Visual Basic] String | "0 0 0 0" | いいえ | 文字列による四角形

Notes
このプロパティは四角形を文字列で表します。

標準の PDF の座標系では文字列形式は "左 下 右 上" となります。TopDown の座標系では "左 上 右 下" となります。

XRect に文字列の値を設定する場合、下記のページサイズを指定できます。

用紙サイズ | 幅(ポイント) | 高さ(ポイント)
A3 | 842 | 1190
A4 | 595 | 842
A5 | 420 | 595
B4 | 729 | 1032
B5 | 516 | 729
Letter | 612 | 792
Legal | 612 | 1008
Tabloid | 792 | 1224
Ledger | 1224 | 792
Statement | 396 | 612
Executive | 540 | 720
Folio | 612 | 936
Quarto | 610 | 780
10x14 | 720 | 1008

Example

使用例です。

[C#]
XRect rc = new XRect();
rc.String = "10 10 200 100";
Response.Write("Width = " + rc.Width.ToString());
Response.Write("<br>");
Response.Write("Height = " + rc.Height.ToString());
[Visual Basic]
Dim rc As XRect = New XRect()
rc.String = "10 10 200 100"
Response.Write("Width = " + rc.Width.ToString())
Response.Write("<br>")
Response.Write("Height = " + rc.Height.ToString())

結果です。

Width = 190
Height = 90


Top プロパティ
型 | デフォルト値 | 読み取り専用 | 説明
[C#] double [Visual Basic] Double | 0 | いいえ | 四角形の上側の値

Notes

このプロパティは四角形の上側の値をあらわします。

Example

ありません。


Width プロパティ
型 | デフォルト値 | 読み取り専用 | 説明
[C#] double [Visual Basic] Double | 0 | いいえ | 四角形の幅の値

Notes
このプロパティは四角形の幅の値をあらわします。

四角形の幅を変更すると、四角形の1つの角を基準位置(Pin プロパティで設定されます)として、そこから幅が設定されます。

Example

ありません。


HasArea Property

HasArea プロパティ

型 | デフォルト値 | 読み取り専用 | 説明
[C#] bool [Visual Basic] Boolean | なし | はい | 四角形に領域があるかどうか

Notes

四角形に領域があるか定義します。

幅または高さが PDF の座標系の最小解像度より小さい場合、その四角形は領域がないものとみなされます。四角形に領域がない場合はポイントとなります。

Example

ありません。


XRendering Object

XRendering オブジェクト

PDF の生成とそのオプションを制御します。

（注意）プロフェッショナル版のみ、本機能をサポートしています。

Save メソッドを使用することで生成が開始されます。このオブジェクトのプロパティは生成方法を更に制御できます。

System.Object
   WebSupergoo.ABCpdf9.XRendering

メソッド | 説明
GetBitmap | ビットマップに現在のページの現在の領域を生成します
GetData | メモリーに現在のページの現在の領域を生成します
Save | 現在のページの現在の領域を生成して保存します

プロパティ | 説明
AntiAliasImages | イメージをアンチエイリアスします
AntiAliasPoly | 多角形をアンチエイリアスします
AntiAliasScene | 全体にアンチエイリアスを適用するかを定義します
AntiAliasText | テキストをアンチエイリアスします
AutoRotate | ページを自動で回転します
BitsPerChannel | 色チャンネルごとの出力ビット数
ColorSpace | 出力カラースペースの名前
DefaultHalftone | ハーフトーンのタイプとオプション
DotsPerInch | 出力解像度(DPI 単位)
DotsPerInchX | 横方向の出力解像度(DPI 単位)
DotsPerInchY | 縦方向の出力解像度(DPI 単位)
DrawAnnotations | フィールドや注釈を描画します
IccCmyk | デフォルトの CMYK ICC カラープロファイルのパス
IccGray | デフォルトの Grey ICC カラープロファイルのパス
IccRgb | デフォルトの RGB ICC カラープロファイルのパス
IccOutput | デフォルトの出力 ICC カラープロファイルのパス
Log | 最後のレンダリングのログ
Metadata | 出力ファイルに書き込む TIFF タグのコレクション
NamedSeparation | セパレーションを指定します
Overprint | 重ね刷りを適用するかを定義します
PaletteSize | インデックスカラーの出力パレットの色の数
SaveAlpha | アルファチャンネルを保存するかを定義します
SaveAppend | 既存のファイルに追加するかを定義します
SaveCompresson | 保存時の圧縮を設定します
SaveQuality | lossy 圧縮(非可逆圧縮)の出力ファイルの品質
UseEmbeddedHalftone | 埋め込みのハーフトーンを使用します


GetBitmap メソッド

ビットマップに現在のページの現在の領域を生成します。

Syntax

[C#]
virtual System.Drawing.Bitmap GetBitmap()
[Visual Basic]
Overridable Function GetBitmap() As System.Drawing.Bitmap

Throws Exceptions エラーの場合、Exception() が発生します。

Params
名称 | 説明
戻り値 | イメージを含むビットマップ

Notes

このメソッドを使用して、PDF を System.Drawing.Bitmap に生成します。

現在の Doc.Page の現在の Doc.Rect を出力します。

PDF ページで指定したページの回転が適用されるので、レンダリングの出力は正しい向きになります。また、その出力幅と高さは Doc.Rect で指定した幅と高さになります。

このビットマップを画面の描画や、System.Drawing に使用できます。

Example

AntiAliasPolygons プロパティを参照してください。


GetData Function

GetData メソッド

メモリーに現在のページの現在の領域を生成します。

Syntax

[C#]
virtual byte[] GetData(string name)

[Visual Basic]
Overridable Function GetData(name As String) As Byte()

Throws Exceptions エラーの場合、 Exception() が発生します。

Params
名称 | 説明
name | 必要とするイメージタイプの定義に使用するダミーのファイル名
戻り値 | バイト配列のイメージ

Notes

このメソッドは、メモリーに PDF を生成します。

現在の Doc.Page の現在の Doc.Rect を出力します。

PDF ページで指定したページの回転が適用されるので、レンダリングの出力は正しい向きになります。また、その出力幅と高さは Doc.Rect で指定した幅と高さになります。

ファイルパスの拡張子は出力形式を指定します。使用可能なファイル名の拡張子は Save メソッドで使用される拡張子と同じです。代表的な拡張子には、TIF、TIFF、JPG、GIF、PNG、BMP、EMF などがあります。EMF はラスタ形式ではなくベクタ形式で、解像度に依存しない小さいファイルの場合に役立ちます。

通常、Save メソッドを使用してドキュメントを生成しますが、イメージをファイル形式ではなくオリジナルデータとして取得する場合があります。 その場合、GetData メソッドを使用できます。

このメソッドを使用することにより、中間ファイルを使用せずに直接クライアントブラウザにイメージを送ることができます。つまり、このメソッドで取得したデータを、Response.BinaryWrite を使用して直接 HTTP ストリームに書き込むことができます。同様に、このオリジナルデータをデータベースに使用できます。

Example

ありません。


Save Method

Save メソッド

現在のページの現在の領域を生成して保存します。

Syntax

[C#]
virtual void Save(string path)
virtual void Save(string name, Stream stream)
[Visual Basic]
Overridable Sub Save(path As String)
Overridable Sub Save(name As String, stream As Stream)

Throws Exceptions エラーの場合、 Exception() が発生します。

Params
名称 | 説明
path | 保存先のファイルパス
name | 必要なイメージタイプの定義に使用するダミーのファイル名
stream | 保存先のストリーム

Notes

このメソッドは、PDF を指定したファイルに保存します。

現在の Doc.Page の現在の Doc.Rect を出力します。

PDF ページで指定したページの回転が適用されるので、レンダリングの出力は正しい向きになります。また、その出力幅と高さは Doc.Rect で指定した幅と高さになります。

ファイルパスの拡張子は出力形式を指定します。有効なファイル拡張子には、TIF、TIFF、JPG、GIF、PNG、BMP、JP2、EMF、PS、EPS などがあります。JP2 は JPEG 2000 形式に使用されます。EMF はラスタ形式ではなくベクタ形式で、解像度に依存しない小さいファイルの場合に役立ちます。PS は PostScript 互換のオリジナルベクタ出力です。EPS は Encapsulated Postscript 形式（文書構造化の規約に則った PostScript 文書）で、EPS ファイルをイメージ形式として使えるようにするための付加的な制限があります。

更に、GetText メソッドの一部として指定されているファイル形式（.TXT、.SVG、.SVG+、.SVG+2）にも生成できます。

Example

AntiAliasPolygons プロパティを参照してください。


AntiAliasImages プロパティ

型 | デフォルト値 | 読み取り専用 | 説明
[C#] bool [Visual Basic] Boolean | true | いいえ | イメージをアンチエイリアスします

Notes
このプロパティは、イメージをアンチエイリアスします。

アンチエイリアスは、オブジェクトの描画時にギザギザの縁をグラデーションを使用して滑らかに表示します。

このプロパティを true に設定すると、イメージのスケーリング時に、アンチエイリアスが行われ出力イメージの質が良くなります。

Example

下記のサンプルは、このパラメータの PDF レンダリングでの効果を示しています。

[C#]
Doc theDoc = new Doc();
theDoc.Read(Server.MapPath("../mypics/HyperX.pdf"));
theDoc.Rect.Inset(200, 200);
// Render document with AntiAliasImages = true (default)
theDoc.Rendering.Save(Server.MapPath("RenderingAntiAliasImagesTrue.png"));
// Render document with AntiAliasImages = false
theDoc.Rendering.AntiAliasImages = false;
// Save the image
theDoc.Rendering.Save(Server.MapPath("RenderingAntiAliasImagesFalse.png"));
theDoc.Clear();
[Visual Basic]
Dim theDoc As Doc = New Doc()
theDoc.Read(Server.MapPath("../mypics/HyperX.pdf"))
theDoc.Rect.Inset(200, 200)
' Render document with AntiAliasImages = true (default)
theDoc.Rendering.Save(Server.MapPath("RenderingAntiAliasImagesTrue.png"))
' Render document with AntiAliasImages = false
theDoc.Rendering.AntiAliasImages = False
' Save the image
theDoc.Rendering.Save(Server.MapPath("RenderingAntiAliasImagesFalse.png"))
theDoc.Clear()

RenderingAntiAliasImagesTrue.png

RenderingAntiAliasImagesFalse.png


AntiAliasPolygons プロパティ

型 | デフォルト値 | 読み取り専用 | 説明
[C#] bool [Visual Basic] Boolean | true | いいえ | 多角形をアンチエイリアスします

Notes
このプロパティは、多角形の縁をアンチエイリアスします。

アンチエイリアスは、オブジェクトの描画時にグラデーションを使用してギザギザの縁を滑らかに表示します。

Example

下記のサンプルは、このパラメータの PDF レンダリングでの効果を示しています。

[C#]
Doc theDoc = new Doc();
// Add a polygon
theDoc.Color.String = "255 0 0";
theDoc.AddPoly("32 650 50 704 68 650 22 683 79 683 32 650", true);
theDoc.Rect.String = "20 650 80 704";
// Render the drawn area with AntiAliasPolygons (default)
Bitmap antiAliasedBitmap = theDoc.Rendering.GetBitmap();
// Render the drawn area without AntiAliasPolygons
theDoc.Rendering.AntiAliasPolygons = false;
Bitmap aliasedBitmap = theDoc.Rendering.GetBitmap();
// Add magnified aliased image
theDoc.Rect.String = "5 20 605 560";
theDoc.AddImageBitmap(aliasedBitmap, false);
// Anotate
theDoc.Color.String = "black";
theDoc.FontSize = 30;
theDoc.Pos.String = "20 750";
theDoc.AddText("Original path:");
theDoc.Pos.String = "20 620";
theDoc.AddText("Magnified rendered image:");
// Render the document with aliased image
theDoc.Rendering.DotsPerInch = 36;
theDoc.Rect.String = theDoc.MediaBox.String;
theDoc.Rendering.Save(Server.MapPath("RenderingAntiAliasPolygonsFalse.png"));
// Add magnified antialiased image
theDoc.Rect.String = "5 20 605 560";
theDoc.AddImageBitmap(antiAliasedBitmap, false);
// Render the document with antialiased image
theDoc.Rendering.DotsPerInch = 36;
theDoc.Rect.String = theDoc.MediaBox.String;
theDoc.Rendering.Save(Server.MapPath("RenderingAntiAliasPolygonsTrue.png"));
theDoc.Clear();
[Visual Basic]
Dim theDoc As Doc = New Doc()
' Add a polygon
theDoc.Color.String = "255 0 0"
theDoc.AddPoly("32 650 50 704 68 650 22 683 79 683 32 650", True)
theDoc.Rect.String = "20 650 80 704"
' Render the drawn area with AntiAliasPolygons (default)
Dim antiAliasedBitmap As Bitmap = theDoc.Rendering.GetBitmap()
' Render the drawn area without AntiAliasPolygons
theDoc.Rendering.AntiAliasPolygons = False
Dim aliasedBitmap As Bitmap = theDoc.Rendering.GetBitmap()
' Add magnified aliased image
theDoc.Rect.String = "5 20 605 560"
theDoc.AddImageBitmap(aliasedBitmap, False)
' Anotate
theDoc.Color.String = "black"
theDoc.FontSize = 30
theDoc.Pos.String = "20 750"
theDoc.AddText("Original path:")
theDoc.Pos.String = "20 620"
theDoc.AddText("Magnified rendered image:")
' Render the document with aliased image
theDoc.Rendering.DotsPerInch = 36
theDoc.Rect.String = theDoc.MediaBox.String
theDoc.Rendering.Save(Server.MapPath("RenderingAntiAliasPolygonsFalse.png"))
' Add magnified antialiased image
theDoc.Rect.String = "5 20 605 560"
theDoc.AddImageBitmap(antiAliasedBitmap, False)
' Render the document with antialiased image
theDoc.Rendering.DotsPerInch = 36
theDoc.Rect.String = theDoc.MediaBox.String
theDoc.Rendering.Save(Server.MapPath("RenderingAntiAliasPolygonsTrue.png"))
theDoc.Clear()

RenderingAntiAliasPolygonsTrue.png

RenderingAntiAliasPolygonsFalse.png


AntiAliasScene プロパティ

型 | デフォルト値 | 読み取り専用 | 説明
[C#] bool [Visual Basic] Boolean | false | いいえ | 全体にアンチエイリアスを適用するかを定義します

Notes
このプロパティは、全てのオブジェクトに対してアンチエイリアスをするかを定義します。

アンチエイリアスとは、オブジェクトの描画時にグラデーションを使用してギザギザの縁を滑らかに表示します。

この処理には、かなり多くのメモリと時間がかかりますが、出力結果の質はかなり良くなります。

このプロパティを true に設定すると、個々のオブジェクトに対するアンチエイリアスの設定は無効になります。

Example

ありません。


AntiAliasText プロパティ

型 | デフォルト値 | 読み取り専用 | 説明
[C#] bool [Visual Basic] Boolean | true | いいえ | テキストをアンチエイリアスします

Notes
このプロパティは、テキストをアンチエイリアスします。

アンチエイリアスとは、オブジェクトの描画時にグラデーションを使用してギザギザの縁を滑らかに表示します。

Example

下記のサンプルは、このパラメータの PDF レンダリングでの効果を示しています。

[C#]
Doc theDoc = new Doc();
theDoc.Rect.Inset(50, 50);
// Add some text
theDoc.FontSize = 48;
theDoc.Pos.String = "50 690";
int id = theDoc.AddText("Abc");
// Render images
theDoc.Rect.String = theDoc.GetInfo(id, "rect");
theDoc.Rendering.AntiAliasText = true;
Bitmap antialiasedBitmap = theDoc.Rendering.GetBitmap();
theDoc.Rendering.AntiAliasText = false;
Bitmap aliasedBitmap = theDoc.Rendering.GetBitmap();
// Add enlarged images to the pdf file
theDoc.Rect.Magnify(5, 5);
theDoc.Rect.Move(0, -300);
theDoc.AddImageBitmap(aliasedBitmap, false);
theDoc.Rect.Move(0, -300);
theDoc.AddImageBitmap(antialiasedBitmap, false);
// Annotate
theDoc.Rect.String = theDoc.MediaBox.String;
theDoc.Color.String = "255 0 0";
theDoc.FontSize = 36;
theDoc.Pos.String = "50 740";
theDoc.AddText("Original text:");
theDoc.Pos.String = "50 620";
theDoc.AddText("Magnified aliased image:");
theDoc.Pos.String = "50 320";
theDoc.AddText("Magnified antialiased image:");
// Save render of pdf files
theDoc.Rendering.AntiAliasText = true;
theDoc.Rendering.DotsPerInch = 36;
theDoc.Rendering.Save(Server.MapPath("RenderingAntiAliasText.png"));
theDoc.Clear();
[Visual Basic]
Dim theDoc As Doc = New Doc()
theDoc.Rect.Inset(50, 50)
' Add some text
theDoc.FontSize = 48
theDoc.Pos.String = "50 690"
Dim id As Integer = theDoc.AddText("Abc")
' Render images
theDoc.Rect.String = theDoc.GetInfo(id, "rect")
theDoc.Rendering.AntiAliasText = True
Dim antialiasedBitmap As Bitmap = theDoc.Rendering.GetBitmap()
theDoc.Rendering.AntiAliasText = False
Dim aliasedBitmap As Bitmap = theDoc.Rendering.GetBitmap()
' Add enlarged images to the pdf file
theDoc.Rect.Magnify(5, 5)
theDoc.Rect.Move(0, -300)
theDoc.AddImageBitmap(aliasedBitmap, False)
theDoc.Rect.Move(0, -300)
theDoc.AddImageBitmap(antialiasedBitmap, False)
' Annotate
theDoc.Rect.String = theDoc.MediaBox.String
theDoc.Color.String = "255 0 0"
theDoc.FontSize = 36
theDoc.Pos.String = "50 740"
theDoc.AddText("Original text:")
theDoc.Pos.String = "50 620"
theDoc.AddText("Magnified aliased image:")
theDoc.Pos.String = "50 320"
theDoc.AddText("Magnified antialiased image:")
' Save render of pdf files
theDoc.Rendering.AntiAliasText = True
theDoc.Rendering.DotsPerInch = 36
theDoc.Rendering.Save(Server.MapPath("RenderingAntiAliasText.png"))
theDoc.Clear()

RenderingAntiAliasText.png


AutoRotate プロパティ
型 | デフォルト値 | 読み取り専用 | 説明
[C#] bool [Visual Basic] Boolean | true | いいえ | ページを自動で回転します

Notes

PDF ドキュメントには縦/横向きのページが含まれます。

ページが横向きの場合、表示アプリケーションはそのページを表示する前に 90 度回転させる必要があります。

ABCpdf で横向きのページをレンダリングする場合、自動で正しく回転します。この機能を無効にしたいときは、このプロパティを false に設定します。

Example

ありません。


BitsPerChannel Property

BitsPerChannel プロパティ

型 | デフォルト値 | 読み取り専用 | 説明
[C#] int [Visual Basic] Integer | 8 | いいえ | 色チャンネルごとの出力ビット数

Notes

このプロパティは、出力の色チャンネルの精度を定義します。

値は、各色チャンネルを表すビット数で指定されます。これは 1、8、または 16 になります。

すべてのカラースペースはチャンネルごとに 8 ビットまたは 16 ビットをサポートします。グレーカラースペースの場合、チャンネルごとに 1 ビットサポートします。

TIFF 形式は全ての出力精度をサポートします。JP2 （JPEG 2000） はチャンネルごとに 8 ビットと 16 ビットをサポートします。JPG、GIF、PNG、BMP 形式は 8 ビット RGB と 8 ビットグレーのみをサポートします。

Example

DefaultHalftone プロパティを参照してください。


ColorSpace Property

ColorSpace プロパティ

型 | デフォルト値 | 読み取り専用 | 説明
[C#] XRendering.ColorSpaceType [Visual Basic] XRendering.ColorSpaceType | XRendering.ColorSpaceType.Rgb | いいえ | 出力カラースペースの名称

Notes

このプロパティは、出力カラースペースを表す下記の文字です。

XRendering.ColorSpaceType 列挙体は次の値を取得できます。

  • Rgb - 赤、緑、青
  • Gray - グレースケール
  • Cmyk - シアン、 マゼンタ、 黄色、黒
  • Lab - デバイス独自のカラースペース
  • Indexed - インデックス RGB。PaletteSize プロパティを参照してください。

下の表は、各出力形式でサポートされているカラースペースを示しています。

出力形式 | RGB | Gray | CMYK | Lab | Indexed
TIFF |  |  |  |  |
JP2 (JPEG 2000) |  |  |  |  |
JPG |  |  |  |  | *
BMP |  |  |  |  |
GIF and PNG |  |  |  |  |

* JPEG ファイル形式自体はインデックスカラーをサポートしていません。JPG を出力形式としてインデックスカラースペースと一緒に使用すると、PaletteSize で指定した通りの色数で JPEG が出力されますが、カラープロファイルは RGB のままになってしまいます。これはインデックス PNG を作成し、それを JPEG ファイルに変換した場合に起こり得ることです。

カラースペースが string なのは？

ABCpdf の旧バージョンでは、ColorSpace プロパティは次のような string 型のコードでした。

theDoc.Rendering.ColorSpace = "CMYK"

バージョン 8 では、ColorSpace プロパティは列挙体に変更されました。使用する値が有効であることをコンパイラが確認するので、これは安全なコーディングの方法です。新しいコードは次のようになります。

theDoc.Rendering.ColorSpace = XRendering.ColorSpaceType.Cmyk

XRendering.ColorSpaceType 列挙体の項目名は旧バージョンで使われていた string の値と同じなので、コードの変更は簡単な検索と置換だけで済みます。

この列挙体はレンダリングの出力カラースペースを表す XRendering.ColorSpace です。PDF ドキュメントのオブジェクトの内容に、別の ColorSpace 列挙体が使われています。この2つは同じではありません。

他の方法としては、列挙体と文字列を自動で変換できます。文字列から列挙体に変換するには、次のコードを使用してください。

XRendering.ColorSpaceType csType = (XRendering.ColorSpaceType)Enum.Parse(typeof(XRendering.ColorSpaceType), csString, true)

列挙体から文字列に変換するには、次のコードを使用してください。

string csString = csType.ToString("G")

Example

下記のサンプルは、PDF レンダリングでのこのパラメータの効果を示しています。

[C#]
Doc theDoc = new Doc();
theDoc.AddImage(Server.MapPath("../mypics/Shuttle.jpg"));
theDoc.Rect.String = theDoc.MediaBox.String;
// Render document in Gray colorspace
theDoc.Rendering.ColorSpace = "Gray";
theDoc.Rendering.DotsPerInch = 36;
theDoc.Rendering.Save(Server.MapPath("RenderingColorSpace.png"));
theDoc.Clear();
[Visual Basic]
Dim theDoc As Doc = New Doc()
theDoc.AddImage(Server.MapPath("../mypics/Shuttle.jpg"))
theDoc.Rect.String = theDoc.MediaBox.String
' Render document in Gray colorspace
theDoc.Rendering.ColorSpace = "Gray"
theDoc.Rendering.DotsPerInch = 36
theDoc.Rendering.Save(Server.MapPath("RenderingColorSpace.png"))
theDoc.Clear()

Shuttle.jpg

RenderingColorSpace.png


DefaultHalftone プロパティ

型 | デフォルト値 | 読み取り専用 | 説明
[C#] string [Visual Basic] String | "Spot,30,100,CosineDot" | いいえ | ハーフトーンのタイプとオプション

Notes
デフォルトのハーフトーンのタイプとオプションを指定します。

ハーフトーンのタイプは下記の通りです。

  • Spot
  • ErrorDiffusion
  • OrderedDither

例えばハーフトーンのタイプが Spot の場合、角度（度）、頻度と Spot 関数を、スペースなしのカンマで区切った文字列で指定します。使用できる Spot 関数は、下記の通りです。

  • SimpleDot
  • InvertedSimpleDot
  • DoubleDot
  • InvertedDoubleDot
  • CosineDot
  • Double
  • InvertedDouble
  • Line
  • LineX
  • LineY
  • Round
  • Ellipse
  • EllipseA
  • InvertedEllipseA
  • EllipseB
  • EllipseC
  • InvertedEllipseC
  • Square
  • Cross
  • Rhomboid
  • Diamond

ハーフトーンに関する詳細は、Adobe PDF Specification を参照してください。

Example
下記のサンプルは、このパラメータの PDF レンダリングでの効果を示しています。

[C#]
Doc theDoc = new Doc();
XImage image = new XImage();
image.SetFile(Server.MapPath("../mypics/Shuttle.jpg"));
theDoc.Rect.String = image.Selection.String;
theDoc.AddImage(image);
// Save rendered image as black and white picture using Line spot function
theDoc.Rendering.UseEmbeddedHalftone = false;
theDoc.Rendering.DotsPerInch = 50;
theDoc.Rendering.ColorSpace = XRendering.ColorSpaceType.Gray;
theDoc.Rendering.BitsPerChannel = 1;
theDoc.Rendering.DefaultHalftone = "Spot,30,100,Line";
theDoc.Rendering.Save(Server.MapPath("RenderingHalftoneLine.png"));
// Save rendered image as black and white picture using Diamond spot function
theDoc.Rendering.DefaultHalftone = "Spot,0,100,Diamond";
theDoc.Rendering.Save(Server.MapPath("RenderingHalftoneDiamond.png"));
theDoc.Clear();
[Visual Basic]
Dim theDoc As Doc = New Doc()
Dim image As XImage = New XImage()
image.SetFile(Server.MapPath("../mypics/Shuttle.jpg"))
theDoc.Rect.String = image.Selection.String
theDoc.AddImage(image)
' Save rendered image as black and white picture using Line spot function
theDoc.Rendering.UseEmbeddedHalftone = False
theDoc.Rendering.DotsPerInch = 50
theDoc.Rendering.ColorSpace = XRendering.ColorSpaceType.Gray
theDoc.Rendering.BitsPerChannel = 1
theDoc.Rendering.DefaultHalftone = "Spot,30,100,Line"
theDoc.Rendering.Save(Server.MapPath("RenderingHalftoneLine.png"))
' Save rendered image as black and white picture using Diamond spot function
theDoc.Rendering.DefaultHalftone = "Spot,0,100,Diamond"
theDoc.Rendering.Save(Server.MapPath("RenderingHalftoneDiamond.png"))
theDoc.Clear()

RenderingHalftoneLine.png

RenderingHalftoneDiamond.png


DotsPerInch プロパティ

型 | デフォルト値 | 読み取り専用 | 説明
[C#] double [Visual Basic] Double | 72.0 | いいえ | DPI で表す出力解像度

Notes

このプロパティは、出力イメージの解像度を定義します。

PDF ドキュメントは物理単位(通常ポイント)で指定します。この物理単位をピクセルベースの単位に変換する場合はこの値が必要になります。

例えば、144 DPI で作成された 612 ポイント幅のドキュメントは 1224 ピクセル幅になります。

0 以下の値を設定すると例外を発生します。

Example

DefaultHalftone プロパティを参照してください。


DotsPerInchX プロパティ
型 | デフォルト値 | 読み取り専用 | 説明
[C#] double [Visual Basic] Double | 72.0 | いいえ | 横方向の出力解像度(DPI 単位)

Notes

このプロパティは出力イメージの横方向の解像度を設定します。

PDF のドキュメントは物理単位(一般的にはポイント)で長さを設定するので、これら物理単位をピクセルベースの単位変換する場合に解像度の単位が必要になります。

例えば、144 DPI で 612 ポイント幅のドキュメントをレンダリングすると 1224 ピクセル幅のイメージになります。

Example

SaveCompression プロパティを参照してください。


DotsPerInchY プロパティ
型 | デフォルト値 | 読み取り専用 | 説明
[C#] double [Visual Basic] Double | 72.0 | いいえ | 縦方向の出力解像度(DPI 単位)

Notes

このプロパティは出力イメージの縦方向の解像度を設定します。

PDF のドキュメントは物理単位(一般的にはポイント)で長さを設定するので、これら物理単位をピクセルベースの単位変換する場合に解像度の単位が必要になります。

例えば、144 DPI で 612 ポイントの高さのドキュメントをレンダリングすると 1224 ピクセルの高さのイメージになります。

Example

SaveCompression プロパティを参照してください。


DrawAnnotations Property

DrawAnnotations プロパティ

型 | デフォルト値 | 読み取り専用 | 説明
[C#] bool [Visual Basic] Boolean | true | いいえ | フィールドや注釈を描画します

Notes

このプロパティは、フィールドや注釈を描画します。

PDF のフィールドや注釈は PDF のコンテンツではありません。これらは PDF の背景に置かれます。これらの描画を定義します。

XPS、DOCX、HTML のようなファイル形式へのエクスポートはレンダリングを使用して実装されます。このため、このプロパティは Doc.Save メソッドを使用してこれらの形式を保存する時に注釈をエクスポートするかを定義します。

Example

下記のサンプルは、PDF レンダリングでのこのパラメータの効果を示しています。

[C#]
Doc theDoc = new Doc();
theDoc.Read(Server.MapPath("../mypics/Annotations.pdf"));
theDoc.Rect.Pin = XRect.Corner.TopLeft;
theDoc.Rect.Height = 300;
// Render document with DrawAnnotations (default)
theDoc.Rendering.Save(Server.MapPath("RenderingDrawAnnotationsTrue.png"));
// Render document without DrawAnnotations
theDoc.Rendering.DrawAnnotations = false;
theDoc.Rendering.Save(Server.MapPath("RenderingDrawAnnotationsFalse.png"));
theDoc.Clear();
[Visual Basic]
Dim theDoc As Doc = New Doc()
theDoc.Read(Server.MapPath("../mypics/Annotations.pdf"))
theDoc.Rect.Pin = XRect.Corner.TopLeft
theDoc.Rect.Height = 300
' Render document with DrawAnnotations (default)
theDoc.Rendering.Save(Server.MapPath("RenderingDrawAnnotationsTrue.png"))
' Render document without DrawAnnotations
theDoc.Rendering.DrawAnnotations = False
theDoc.Rendering.Save(Server.MapPath("RenderingDrawAnnotationsFalse.png"))
theDoc.Clear()

RenderingDrawAnnotationsTrue.png

RenderingDrawAnnotationsFalse.png


IccCmyk プロパティ

型 | デフォルト値 | 読み取り専用 | 説明
[C#] string [Visual Basic] String | "standard" | いいえ | デフォルトの CMYK ICC カラープロファイルのパス

Notes
このプロパティは、デフォルトの CMYK ICC カラープロファイルのパスを定義します。

プロファイルは、PDF ファイルで指定した CMYK デバイスをデバイス独自のカラースペースに変換します。

これは、出力 ColorSpace が Lab または別のデバイス独自のカラースペースの場合に使用されます。IccOutput がカラープロファイルを使用することを示している場合、その出力は常にデバイス独自になります。

このプロパティは icc ファイルのパスを取得できますが、2つの特定の値を使用することができます。このプロパティが "device" の場合、デバイスのカラースペースが使用されます。"standard" の場合は、デフォルトで埋め込まれているカラープロファイルが使用されます。

このプロパティを "standard" またはカラープロファイルのパスに設定した場合、IccRgb、IccCmyk、IccGray、IccOutput も "standard" またはカラープロファイルのパスに設定してください。全てのカラースペースをデバイス独自のカラースペースとみなします。

このプロパティを "device" に設定した場合、IccRgb、IccCmyk、IccGray、IccOutput も "device" に設定してください。全てのカラースペースをすべてデバイスのカラースペースとみなします。

このプロパティをパス情報がないファイル名に設定した場合、そのファイルを位置づけるために "<windows>\system32\spool\drivers\color" フォルダを検索します。

Example

下記のサンプルは、PDF レンダリングでのこのパラメータの効果を示しています。

[C#]
Doc theDoc = new Doc();
theDoc.Rect.Inset(20, 40);
theDoc.FontSize = 96;
// Add CMYK Content
theDoc.Color.String = "200 20 20 20";
theDoc.AddText("Gallia est omnis divisa in partes tres, quarum unam incolunt Belgae, aliam Aquitani, tertiam qui ipsorum lingua Celtae, nostra Galli appellantur.");
theDoc.Rect.String = theDoc.MediaBox.String;
theDoc.Rendering.DotsPerInch = 36;
theDoc.Rendering.IccCmyk = Server.MapPath("../mypics/cmyk.icc");
theDoc.Rendering.ColorSpace = XRendering.ColorSpaceType.Rgb;
// Save the image
theDoc.Rendering.Save(Server.MapPath("RenderingIccCmyk.png"));
theDoc.Clear();
[Visual Basic]
Dim theDoc As Doc = New Doc()
theDoc.Rect.Inset(20, 40)
theDoc.FontSize = 96
' Add CMYK Content
theDoc.Color.String = "200 20 20 20"
theDoc.AddText("Gallia est omnis divisa in partes tres, quarum unam incolunt Belgae, aliam Aquitani, tertiam qui ipsorum lingua Celtae, nostra Galli appellantur.")
theDoc.Rect.String = theDoc.MediaBox.String
theDoc.Rendering.DotsPerInch = 36
theDoc.Rendering.IccCmyk = Server.MapPath("../mypics/cmyk.icc")
theDoc.Rendering.ColorSpace = XRendering.ColorSpaceType.Rgb
' Save the image
theDoc.Rendering.Save(Server.MapPath("RenderingIccCmyk.png"))
theDoc.Clear()

RenderingIccCmyk.png


IccGray プロパティ

型 | デフォルト値 | 読み取り専用 | 説明
[C#] string [Visual Basic] String | "standard" | いいえ | デフォルトの Grey の ICC カラープロファイルのパス

Notes
このプロパティは、デフォルトの Grey の ICC カラープロファイルのパスを定義します。

プロファイルは、PDF ファイルで指定したグレーデバイスをデバイス独自のカラースペースに変換します。

これは、出力 ColorSpace が Lab または別のデバイス独自のカラースペースの場合に使用されます。IccOutput がカラープロファイルを使用することを示している場合、その出力は常にデバイス独自になります。IccOutput がカラープロファイルを使用しないことを示している場合は、その出力は常にデバイスに依存します。

このプロパティは icc ファイルのパスを取得できますが、2つの特定の値を使用することができます。このプロパティが "device" の場合、デバイスのカラースペースが使用されます。"standard" の場合は、 デフォルトで埋め込まれているカラープロファイルが使用されます。

このプロパティを "standard" またはカラープロファイルのパスに設定した場合、IccRgb、IccCmyk、IccGray、IccOutput も "standard" またはカラープロファイルのパスに設定してください。全てのカラースペースをデバイス独自のカラースペースとみなします。

このプロパティを "device" に設定した場合、IccRgb、IccCmyk、IccGray、IccOutput も "device" に設定してください。全てのカラースペースをすべてデバイスのカラースペースとみなします。

このプロパティをパス情報がないファイル名に設定した場合、そのファイルを位置づけるために "<windows>\system32\spool\drivers\color" フォルダを検索します。

Example

ありません。


IccOutput プロパティ

型 | デフォルト値 | 読み取り専用 | 説明
[C#] string [Visual Basic] String | "standard" | いいえ | デフォルトの出力 ICC カラープロファイルのパス

Notes
このプロパティは、デフォルトの出力 ICC カラープロファイルのパスを定義します。

レンダリングは、デバイスのカラースペースまたはデバイス固有のカラースペースに従って行われます。出力カラープロファイルを指定することにより、使用する出力デバイス固有のカラースペースの性質を ABCpdf に渡します。

このプロパティは icc ファイルのパスを取得できますが、2つの特定の値を使用することができます。このプロパティが "device" の場合、デバイスのカラースペースが使用されます。"standard" の場合は、 デフォルトで埋め込まれているカラープロファイルが使用されます。

このプロパティを "standard" またはカラープロファイルのパスに設定した場合、IccRgb、IccCmyk、IccGray も "standard" またはカラープロファイルのパスに設定してください。全てのカラースペースをデバイス独自のカラースペースとみなします。

このプロパティを "device" に設定した場合、IccRgb、IccCmyk、IccGray も "device" に設定してください。全てのカラースペースをすべてデバイスのカラースペースとみなします。

このプロパティをパス情報がないファイル名に設定した場合、そのファイルを位置づけるために "<windows>\system32\spool\drivers\color" フォルダを検索します。

Example

ありません。


IccRgb プロパティ

型 | デフォルト値 | 読み取り専用 | 説明
[C#] string [Visual Basic] String | "standard" | いいえ | デフォルトの RGB ICC カラープロファイルのパス

Notes
このプロパティは、デフォルトの RGB ICC カラープロファイルのパスを定義します。

プロファイルは、PDF ファイルで指定した RGB デバイスをデバイス独自のカラースペースに変換します。

これは、出力 ColorSpace が Lab または別のデバイス独自のカラースペースの場合に使用されます。IccOutput がカラープロファイルを使用することを示している場合、その出力は常にデバイス独自になります。IccOutput がカラープロファイルを使用しないことを示している場合、その出力は常にデバイスに依存します。

このプロパティは icc ファイルのパスを取得できますが、2つの特定値を使用することもできます。このプロパティが "device" の場合、デバイスのカラースペースが使用されます。"standard" の場合は、 デフォルトで埋め込まれているカラープロファイルが使用されます。

このプロパティを "standard" またはカラープロファイルのパスに設定した場合、IccRgb、IccCmyk、IccGray、IccOutput も "standard" またはカラープロファイルのパスに設定してください。全てのカラースペースをデバイス独自のカラースペースとみなします。

このプロパティを "device" に設定した場合、IccRgb、IccCmyk、IccGray、IccOutput も "device" に設定してください。全てのカラースペースをすべてデバイスのカラースペースとみなします。

このプロパティをパス情報がないファイル名に設定した場合、そのファイルを位置づけるために "<windows>\system32\spool\drivers\color" フォルダを検索します。

Example

ありません。


Log プロパティ
型 | デフォルト値 | 読み取り専用 | 説明
[C#] string [Visual Basic] String | "" | はい | 最後のレンダリングのログ

Notes
レンダリング中に PDF またはその環境で不一致が検出される場合があります。

例えば、PDF に壊れたイメージがある場合、それを表示できない場合があります。PDF が現在のシステム上にないフォントの参照を含んでいる場合、代替フォントが必要になる場合があります。

ABCpdf は、エラーや不一致があってもレンダリングを完了するよう最善を尽くします。しかし、ABCpdf はこの種の問題をログし、このプロパティでそのログを利用できるようにします。これはデバッグに役立ちます。

Example

ありません。


Metadata Property

Metadata プロパティ

型 | デフォルト値 | 読み取り専用 | 説明
[C#] IDictionary<string, string> [Visual Basic] IDictionary<String, String> | null | いいえ | 出力ファイルに書き込む TIFF タグのコレクション

Notes

TIFF 出力にカスタムタグを追加します。

このプロパティを使用するには、辞書を作成してそれをこのプロパティに割り当てます。そして、ファイルに出力する一連のタグ名と値を追加します。TIFF の仕様書に、TIFF の全タグ名の一覧があります。

PageName など、ほとんどのタグは文字列を取得しますが、タグによっては1つ/複数の値を取得するものもあります。例えば、PageNumber タグは値を2つ取得し、1つ目には現在のページのインデックス（ゼロから始まります）、2つ目にはページ総数を指定します（0の場合は未定義）。9ページあるうちの2ページ目に追加する場合は、次のように記述します。

[C#]
theDoc.Rendering.Metadata.Add("PageNumber", "2 9");
theDoc.Rendering.Metadata.Add("PageName", "Page Two");
[Visual Basic]
theDoc.Rendering.Metadata.Add("PageNumber", "2 9")
theDoc.Rendering.Metadata.Add("PageName", "Page Two")

値をクリアするには、null 値のエントリを割り当てます。これは、例えばページ名やページ番号のタグを自動で追加しないようにする場合に役立ちます。

カスタムTIFF タグは、ハッシュマークの後にタグ番号を付けて表すことができます。例えば、EXIF のスタンダードは UserComment タグを ID 37510 で表しますが、この場合 "#37510" と設定します。カスタムタグはすべて文字列ベースだと見なします。

Example

ありません。


NamedSeparation プロパティ

型 | デフォルト値 | 読み込み専用 | 説明
[C#] string [Visual Basic] String | "" | いいえ | セパレーションを指定します。

Notes

ColorSpace で指定したカラーチャンネルに追加するセパレーションを指定します。

指定したセパレーションの各カラーチャンネルは、出力型がTIFFで、出力カラースペースが CMYK か RGB の場合にのみ作成されます。

この条件にあうと、ABCpdf は各セパレーションを別の TIFF ページに書き込み、TIFF インク名をそのセパレーション名に設定します。

このプロパティは、指定したセパレーションをカンマで区切ったリストにするか、「Aｌｌ」 というキーワードにすることができます（All の場合、そのページで参照したすべての指定したセパレーションが出力されます）。

例えば、次のコードは tiff ファイルを5色で作成し、それぞれ別々のページに書き込みます。各ページのインク名はセパレーション名（'Cyan'、'Magenta'、'Yellow'、'Black'、'Fluorescent Orange'）になります。

[C#]
doc.Rendering.NamedSeparation ="Fluorescent Orange";
doc.Rendering.Colorspace = XRendering.ColorSpaceType.Cmyk;
doc.Rendering.Save("separated.tiff");
[Visual Basic]
doc.Rendering.NamedSeparation ="Fluorescent Orange"
doc.Rendering.Colorspace = XRendering.ColorSpaceType.Cmyk
doc.Rendering.Save("separated.tiff")

ページグループのカラースペースが指定したカラースペースと違う場合、ABCpdf はスポットカラーを作成しないので気をつけてください。しかしこの場合でも、TIFF 出力に個別にプロセスカラーを書き込みます。

Example

ありません。


Overprint プロパティ

型 | デフォルト値 | 読み取り専用 | 説明
[C#] bool [Visual Basic] Boolean | false | いいえ | 重ね刷りを適用するかを定義します

Notes
重ね刷りは、CMYK や DeviceN など減算カラースペースで処理する際の色の組み合わせ方法です。

通常、ある色に別の色を塗る時、下にある色を置換します。従って、シアンの上に黒を置くと黄色になります。このプロパティが設定されると、上の色は下の色の上に置かれます。従って、シアンの上に黒を置くと黒インクとシアンインクの混合になります。これは印刷時に役立ちます。

ABCpdf では、このプロパティが true に設定された場合にのみ重ね刷りが適用されます。出力 ColorSpace は CMYK に、IccOutput は "device" になります（詳細は Adobe PDF Specification を参照してください）。

Example

下記のサンプルは、PDF レンダリングでのこのパラメータの効果を示しています。

[C#]
Doc theDoc = new Doc();
// Open document with overprint
theDoc.Read(Server.MapPath("../mypics/Overprint.pdf"));
// Render the document (we need to go to CMYK for overprint)
theDoc.Rendering.ColorSpace = XRendering.ColorSpaceType.Cmyk;
theDoc.Rendering.Overprint = true;
theDoc.Rendering.IccRgb = "device";
theDoc.Rendering.IccGray = "device";
theDoc.Rendering.IccCmyk = "device";
theDoc.Rendering.IccOutput = "device";
// Put image back into another PDF and render the document as RGB
// (so that we can see the effect of the overprint in RGB)
Doc theRgb = new Doc();
theRgb.AddImageData(theDoc.Rendering.GetData(".tif"), 1);
theDoc.Clear();
theRgb.Rendering.DotsPerInch = 36;
theRgb.Rendering.ColorSpace = XRendering.ColorSpaceType.Rgb;
theRgb.Rendering.Save(Server.MapPath("RenderingOverprint.png"));
theRgb.Clear();
[Visual Basic]
Dim theDoc As Doc = New Doc()
' Open document with overprint
theDoc.Read(Server.MapPath("../mypics/Overprint.pdf"))
' Render the document (we need to go to CMYK for overprint)
theDoc.Rendering.ColorSpace = XRendering.ColorSpaceType.Cmyk
theDoc.Rendering.Overprint = True
theDoc.Rendering.IccRgb = "device"
theDoc.Rendering.IccGray = "device"
theDoc.Rendering.IccCmyk = "device"
theDoc.Rendering.IccOutput = "device"
' Put image back into another PDF and render the document as RGB
' (so that we can see the effect of the overprint in RGB)
Dim theRgb As Doc = New Doc()
theRgb.AddImageData(theDoc.Rendering.GetData(".tif"), 1)
theDoc.Clear()
theRgb.Rendering.DotsPerInch = 36
theRgb.Rendering.ColorSpace = XRendering.ColorSpaceType.Rgb
theRgb.Rendering.Save(Server.MapPath("RenderingOverprint.png"))
theRgb.Clear()

RenderingOverprint.png


PaletteSize Property

PaletteSize プロパティ

型 デフォルト値 読み取り専用 説明
[C#]
int
[Visual Basic]
Integer
         256 いいえ インデックスカラーの出力パレットの色の数

Notes

このプロパティは、「インデックス」カラースペースを使用する時のパレットの色の数を指定するために使用されます。このプロパティの有効な範囲は、2 から 256 までです。

白と黒は常時パレットに含まれているので、2つの PaletteSize のイメージ出力は常に白黒になります。


SaveAlpha プロパティ
型 | デフォルト値 | 読み取り専用 | 説明
[C#] bool [Visual Basic] Boolean | false | いいえ | 出力にアルファチャンネルを保存するかを定義します

Notes

このプロパティにより、レンダリングしたイメージにアルファチャンネルを含めることができます。

以下のファイルフォーマットがアルファチャンネルをサポートします。

  • PNG
  • BMP
  • TIFF (Grayscale, RGB and CMYK)
  • Bitmap ( GetBitmap メソッド)

出力にアルファチャンネルを含めることにより、透明な場所と描画されていない場所を区別することができます。

Example

下記のサンプルはこのパラメータを使用する例です。

以下の処理を行うことにより、青色の背景がイメージの透明な所で表示されます。

  1. テキストを描画する PDF を作成します。
  2. アルファチャンネルを有効にして PDF をレンダリングします。
  3. 青色の背景の PDF を作成し透明なイメージを追加します。

[C#]

Doc theDoc = new Doc();
// Add some text
theDoc.FontSize = 196;
theDoc.HPos = 0.5;
theDoc.VPos = 0.3;
theDoc.AddText("Hello World");
// Render the PDF with alpha
theDoc.Rendering.SaveAlpha = true;
Bitmap alphaBitmap = theDoc.Rendering.GetBitmap();
// Create a blue PDF
theDoc = new Doc();
theDoc.Color.String = "0 0 255";
theDoc.FillRect();
// Add the transparent Bitmap into the PDF
// so that the underlying blue can show through
theDoc.AddImageBitmap(alphaBitmap, true);
// Save render of pdf
theDoc.Rendering.Save(Server.MapPath("RenderingSaveAlpha.png"));
theDoc.Clear();

[Visual Basic]

Dim theDoc As Doc = New Doc()
' Add some text
theDoc.FontSize = 196
theDoc.HPos = 0.5
theDoc.VPos = 0.3
theDoc.AddText("Hello World")
' Render the PDF with alpha
theDoc.Rendering.SaveAlpha = True
Dim alphaBitmap As Bitmap = theDoc.Rendering.GetBitmap()
' Create a blue PDF
theDoc = New Doc
theDoc.Color.String = "0 0 255"
theDoc.FillRect()
' Add the transparent Bitmap into the PDF
' so that the underlying blue can show through
theDoc.AddImageBitmap(alphaBitmap, True)
' Save render of pdf
theDoc.Rendering.Save(Server.MapPath("RenderingSaveAlpha.png"))
theDoc.Clear()

RenderingSaveAlpha.png


SaveAppend プロパティ
型 | デフォルト値 | 読み取り専用 | 説明
[C#] bool [Visual Basic] Boolean | false | いいえ | 既存のファイルに追加するかを定義します

Notes

このプロパティにより、Save メソッドで既存のファイルに追加することができます。

このプロパティが true の場合でファイルが存在する場合、Save メソッドはそのファイルにレンダリングしたイメージを追加します。このプロパティを使用することによりマルチイメージを作成することができます。

このプロパティは TIFF への出力の場合に有効です。

Example

SaveCompression プロパティを参照してください。


SaveCompression プロパティ
型 | デフォルト値 | 読み取り専用 | 説明
[C#] Compression [Visual Basic] Compression | なし | いいえ | 保存時の圧縮を設定します。

Notes

このプロパティは圧縮を設定します。

すべてのファイルフォーマットがすべての圧縮方法をサポートするわけではありません。また、すべての圧縮方法がすべてのカラースペースをサポートするわけではありません。

下記に設定値を示します。

  • None [非圧縮]
  • G3 [白黒2値の G3 Fax 形式の圧縮]
  • G4 [白黒2値の G4 Fax 形式の圧縮]
  • LZW [LZW 圧縮]
  • AdobeFlate [Adobe Flate 圧縮]
  • Flate [Flate 圧縮]
  • PackBits [Macintosh PackBits 圧縮]

一般的にこのプロパティは TIFF ファイルの場合に有効です。

Example

下記のサンプルは、PDF をレンダリングして G4 のマルチページ TIFF に保存します。

[C#]
Doc theDoc = new Doc();
theDoc.Read(Server.MapPath("../Rez/spaceshuttle.pdf"));
// set up the rendering parameters
theDoc.Rendering.ColorSpace = XRendering.ColorSpaceType.Gray;
theDoc.Rendering.BitsPerChannel = 1;
theDoc.Rendering.DotsPerInchX = 200;
theDoc.Rendering.DotsPerInchY = 400;
// loop through the pages
int n = theDoc.PageCount;
for (int i = 1; i <= n; i++) {
  theDoc.PageNumber = i;
  theDoc.Rect.String = theDoc.CropBox.String;
  theDoc.Rendering.SaveAppend = (i ! = 1);
  theDoc.Rendering.SaveCompression = XRendering.Compression.G4;
  theDoc.Rendering.Save(Server.MapPath("fax.tif"));
}
theDoc.Clear();
[Visual Basic]
Dim theDoc As Doc = New Doc()
theDoc.Read(Server.MapPath("../Rez/spaceshuttle.pdf"))
' set up the rendering parameters
theDoc.Rendering.ColorSpace = XRendering.ColorSpaceType.Gray
theDoc.Rendering.BitsPerChannel = 1
theDoc.Rendering.DotsPerInchX = 200
theDoc.Rendering.DotsPerInchY = 400
' loop through the pages
Dim n As Integer = theDoc.PageCount
For i As Integer = 1 To n
  theDoc.PageNumber = i
  theDoc.Rect.String = theDoc.CropBox.String
  theDoc.Rendering.SaveAppend = (i <> 1)
  theDoc.Rendering.SaveCompression = XRendering.Compression.G4
  theDoc.Rendering.Save(Server.MapPath("fax.tif"))
Next
theDoc.Clear()


SaveQuality プロパティ

型 | デフォルト値 | 読み取り専用 | 説明
[C#] int [Visual Basic] Integer | 75 | いいえ | lossy 圧縮(非可逆圧縮)の出力ファイルの品質

Notes
このプロパティは、出力イメージの質を定義します。

最低品質から最高品質までを 0 から 100 の値で指定できます。

このプロパティは JPEG と JPEG2000 の出力にのみ使用されます。

Example

下記のサンプルは、このパラメータの PDF レンダリングでの効果を示しています。

[C#]
Doc theDoc = new Doc();
theDoc.Read(Server.MapPath("../mypics/SpaceShuttlePage6.pdf"));
theDoc.Rendering.DotsPerInch = 36;
// Save at low quality
theDoc.Rendering.SaveQuality = 5;
theDoc.Rendering.Save(Server.MapPath("RenderingQuality5.jpg"));
// Save at high quality
theDoc.Rendering.SaveQuality = 75;
theDoc.Rendering.Save(Server.MapPath("RenderingQuality75.jpg"));
theDoc.Clear();
[Visual Basic]
Dim theDoc As Doc = New Doc()
theDoc.Read(Server.MapPath("../mypics/SpaceShuttlePage6.pdf"))
theDoc.Rendering.DotsPerInch = 36
' Save at low quality
theDoc.Rendering.SaveQuality = 5
theDoc.Rendering.Save(Server.MapPath("RenderingQuality5.jpg"))
' Save at high quality
theDoc.Rendering.SaveQuality = 75
theDoc.Rendering.Save(Server.MapPath("RenderingQuality75.jpg"))
theDoc.Clear()

RenderingQuality5.jpg [file size 9.26 KB]

RenderingQuality5.jpg [file size 37.3 KB]


UseEmbeddedHalftone プロパティ

型 | デフォルト値 | 読み取り専用 | 説明
[C#] bool [Visual Basic] Boolean | True | いいえ | 埋め込みのハーフトーンを使用します

Notes
埋め込みのハーフトーンを使用します。

埋め込みのハーフトーンを使用しない場合、DefaultHalftone が使用されます。

Example

DefaultHalftone プロパティを参照してください。


XSaveOptions Object

XSaveOptions オブジェクト

現在の保存設定の状態を表します。

System.Object
   WebSupergoo.ABCpdf9.XSaveOptions

メソッド | 説明
なし |

プロパティ | 説明
EmbeddedGraphics | PDF のベクトル イメージのエクスポート形式
FileExtension | ファイル拡張子の指定がない場合、保存先のファイル拡張子を取得または設定します
Folder | （イメージ、フォントなど）追加データを保存するフォルダ
FontSubstitution | フォントの置き換え形式
IDConstant | 一定のファイルバージョンの ID を割り当てるか定義します
IDHexadecimal | ファイル識別子を16進数にします
IDUpdate | ファイルバージョンの ID を更新します
Incremental | 監査トレイルを保存するために増分アップデート使用するかを定義します
Linearize | Web を速く表示するために出力を線形化します
Remap | オブジェクトをマップし直してサイズを小さくするかを定義します
Template | テンプレートファイルのパス
TemplateData | テンプレートのデータ


EmbeddedGraphics Property

EmbeddedGraphics プロパティ

型 | デフォルト値 | 読み取り専用 | 説明
[C#] EmbeddedGraphics [Visual Basic] EmbeddedGraphics | EmbeddedGraphicsType.Automatic | いいえ | PDF のベクトル イメージのエクスポート形式

Notes

このプロパティは、PDF のベクトルイメージのパスなどの実装方法を指定します。さまざまなエクスポータがさまざまなエクスポート形式を利用できますが、現在、DOCX や HTML のエクスポータしかイメージの埋め込み出力をサポートしていません。

EmbeddedGraphicsType 列挙体は次の値を取得できます。

  • Automatic - エクスポータとコンテンツに基づいて、妥当なデフォルト値を選択します
  • None - イメージ出力なし
  • Image - （DOCX や HTML に有効な）ビットマップイメージを作成します
  • Vml - （DOCX にのみ有効な） HTML 5 Canvas を使用してイメージを作成します
  • HtmlCanvas - （HTML にのみ有効な） VML を使用してイメージを作成します

VML の仕様には、次のような制限があるので注意してください。VML は 0 以外の塗りつぶし命令をサポートしていないので、VML と PDF のパスは同じではない場合があります。VML は高機能なダッシュ付けをサポートしていないので、破線や点線は概算されます。VML はビットマップイメージとベクトルのパスがどのように影響し合うのか明記しないので、Z 順は VML の表示実装に依存します（ある VML ビューアを使って、PDF で重なり合っているイメージがイメージの下になって見えなくなることがあります）。

HTML5 Canvas 要素は空白の要素で、その上に JavaScript を描画できます。インターネット エクスプローラの旧バージョンでは、このキャンバス要素は ExplorerCanvas によって VML に自動変換されます。

HTML Canvas の仕様には、次のような制限があるので注意してください。偶数奇数の塗りつぶし命令がサポートされていないので、Canvas と PDF のパスが同じではない場合があります。HTML Canvas はダッシュ付けをサポートしていないので、破線や点線は表示されません。VML しか 0 以外の塗りつぶし命令をサポートしていないので、ExplorerCanvas の VML 変換によって動いているインターネット エクスプローラの旧バージョンではパスが違って見えます。

あるエクスポート形式に対して無効な形式が指定されると、例外がスローされます。

Example

ありません。


FileExtension Property

FileExtension プロパティ

型 | デフォルト値 | 読み取り専用 | 説明
[C#] string [Visual Basic] String | null | いいえ | ファイル拡張子の指定がない場合、保存先のファイル拡張子を取得または設定します。

Notes

このプロパティは、ストリームやバイト配列など、ソースがファイル拡張子を提供しない場合（その場合のみ）、エクスポート形式を指定するために使用されます。

サポートされている値は、"xps" と "swf" です。

Example

ありません。


Folder Property

Folder プロパティ

型 | デフォルト値 | 読み取り専用 | 説明
[C#] string [Visual Basic] String | null | いいえ | （イメージ、フォントなど）追加データを保存するフォルダ

Notes

このプロパティはイメージやフォントなどの追加データを保存するフォルダを指定します。ドキュメントを HTML にエクスポートする時だけ使用されます。それ以外は無視されます。

相対パスを設定する場合、それは Doc.Save() に渡された出力パスの位置に相当します。絶対パスを設定する場合、HTML 出力には絶対 URL が含まれます。

ストリームに保存して相対パスを指定する場合、パスは現在のディレクトリに相当します。

ファイルに保存し、フォルダを指定しない場合、出力ファイルが置かれるディレクトリに同じ名前のフォルダが出力ファイルとして作成されます。

Example

ありません。


FontSubstitution Property

FontSubstitution プロパティ

型 | デフォルト値 | 読み取り専用 | 説明
[C#] FontSubstitutionType [Visual Basic] FontSubstitutionType | FontSubstitutionType.Automatic | いいえ | フォントの置き換え形式

Notes

このプロパティは、エクスポート処理のフォントを置き換え形式を指定します。現在、DOCX と HTML エクスポートしかこのプロパティをサポートしていません。その他のエクスポータ（例：XPS エクスポータ）では無視されます。

FontSubstitutionType 列挙体は次の値です。

  • Automatic - エクスポータに基づいて、妥当なデフォルト値を選択します
  • Always - 常にマシンにインストールされているフォントに置き換えます
  • Missing - フォントがないか、open type に変換できないフォントだけを置き換えます

Example

ありません。


IDConstant プロパティ

型 | デフォルト値 | 読み取り専用 | 説明
[C#] bool [Visual Basic] Boolean | false | いいえ | 一定のファイルバージョンの ID を割り当てるか定義します

Notes
このプロパティは、一定のファイル ID にするかを定義します。

PDF ドキュメントには 2つの一意のファイル ID があります。1つは、そのファイルが存在している間は一定のファイル固有の ID です。もう1つはドキュメントが保存される度に更新される、ファイルバージョンの ID です。

このプロパティを使用して常に同じ ID を使用することができます。これは、バイナリレベルのファイル比較を行う場合や、ランダムな要素が削除されたことを確認する場合のデバッグに役立ちます。

Example

ありません。


IDHexadecimal プロパティ
型 | デフォルト値 | 読み取り専用 | 説明
[C#] bool [Visual Basic] Boolean | true | いいえ | ファイル識別子をアスキー文字にするかを定義します。

Notes

このプロパティは、PDF のファイル識別子を 16進数にするかアスキー文字にするかを定義します。

ファイル識別子は文字列で構成されます。このプロパティを false に設定すると、この文字列内の文字はアスキー文字になり、true に設定するとアスキー文字以外も設定されます。

Example

ありません。


IDUpdate プロパティ

型 | デフォルト値 | 読み取り専用 | 説明
[C#] bool [Visual Basic] Boolean | true | いいえ | ファイルバージョンの ID を更新します

Notes
このプロパティは、ファイルバージョンの ID を更新します。

PDF ドキュメントには 2つの一意のファイル ID があります。1つは、そのファイルが存在している間は一定のファイル固有の ID です。もう1つはドキュメントが保存される度に更新される、ファイルバージョンの ID です。

このプロパティで、バージョンを更新しないように変更できます。

Example

ありません。


Incremental Property

Incremental プロパティ

型 | デフォルト値 | 読み取り専用 | 説明
[C#] bool [Visual Basic] Boolean | false | いいえ | 監査トレイルを保存するために増分アップデート使用するかを定義します

Notes

このプロパティは増分アップデートを使用するかを定義します。

増分アップデートは元のドキュメント構造をそのまま維持し、変更をファイルの末尾に追加します。

オリジナルの PDF は変更されないので、変更前の状態に戻すことができます。アップデートされたオブジェクトだけがディスクに書き込まれるので、書き込み時間も短くて済みます。

しかし、一番重要なことはそのドキュメントにある電子署名のフィールドを保存したい場合は増分アップデートを使用しなければなりません。実際、署名フィールドが署名された後で増分アップデートを使用してファイルに変更を保存する必要があります。

増分アップデートは Linearization や Remapping とは互換性がないので、これらの設定をオーバーライドします。

Example

ありません。


Linearize プロパティ

型 | デフォルト値 | 読み取り専用 | 説明
[C#] bool [Visual Basic] Boolean | true | いいえ | Web を速く表示するために出力を線形化します

Notes
このプロパティは、Web を速く表示するために出力を線形化します。

線形化された PDF は Web に効果的にアクセスできるように特別な方法で構成されています。PDF 出力はいかなる方法でも有効ですが、PDF の必要な部分にだけ Web ビューアがアクセスできるようになっています。

つまり線形化された PDF は、表示する前に PDF 全体をダウンロードしなくても瞬時に開くということです。

Adobe は、Web を速く表示するために線形化を適用する場合があります。

線形化に関連して処理とメモリのオーバーヘッドがありますが、膨大なドキュメントを扱う時だけ気をつけてください。

Example

ありません。


Remap プロパティ

型 | デフォルト値 | 読み取り専用 | 説明
[C#] bool [Visual Basic] Boolean | false | いいえ | オブジェクトをマッピングし直してサイズを小さくするかを定義します

Notes
このプロパティは、オブジェクトをマッピングし直して出力サイズを小さくするかを定義します。

PDF ドキュメントは一連のオブジェクトで構成されています。オブジェクトを削除すると、この順番に空きが生じる場合があります。この空きが必要以上に PDF を大きくしてしまいます。

このプロパティを true にしてドキュメントが保存されると、マッピングし直してこれらのギャップを取り除きます。

注意： Linearize プロパティを true に設定すると、このプロパティの値に関係なくマッピングが再設定されます。

Example

ありません。


Template Property

Template プロパティ

型 | デフォルト値 | 読み取り専用 | 説明
[C#] string [Visual Basic] String | null | いいえ | テンプレートファイルのパス

Notes

このプロパティはテンプレートファイルを指定します。このプロパティは、ファイル形式固有のデータ、つまり SWF など特殊なファイル形式に保存する際に出力に必要不可欠なデータを提供します。

Example

ありません。


TemplateData Property

TemplateData プロパティ

型 | デフォルト値 | 読み取り専用 | 説明
[C#] XSaveTemplateData [Visual Basic] XSaveTemplateData | null | いいえ | テンプレートのデータ

Notes

このプロパティは、ファイル形式固有のデータ、つまり SWF など特殊なファイル形式に保存する際に出力に必要不可欠なデータを提供するTemplate から取得されないテンプレートのデータを指定します。

Example

ありません。


XSaveTemplateData Class

XSaveTemplateData オブジェクト

テンプレートファイルからは取得されない、一部のファイル固有のデータを表します。

System.Object
   WebSupergoo.ABCpdf9.XTransform

メソッド | 説明
SetMeasureResolution | 寸法の解像度を設定します

プロパティ | 説明
ImageDisplaySmoothing | イメージを表示するためのスムージング
JpegQuality | JPEG の品質レベル
MeasureDpiX | 水平方向の寸法の解像度
MeasureDpiY | 垂直方向の寸法の解像度
ReencodeJpeg | JPEG イメージを JPEG で再圧縮するかを定義します


SetMeasureResolution Function

SetMeasureResolution メソッド

寸法の解像度を設定します。

Syntax

[C#]
void SetMeasureResolution(double dpi)
void SetMeasureResolution(double dpiX, double dpiY)
[Visual Basic]
Sub SetMeasureResolution(dpi As Double)
Sub SetMeasureResolution(dpiX As Double, dpiY As Double)

Params
名称 | 説明
dpi | 新しい解像度（DPI）
dpiX | 新しい水平方向の解像度（DPI）
dpiY | 新しい垂直方向の解像度（DPI）

Notes

物理サイズをサポートしない特定の出力形式の寸法に影響を与える寸法の解像度を設定します。例えば、SWF の寸法はピクセル単位ですが、PDF の場合はポイント単位（1インチの1/72）です。これは、PDF の1インチが SWF では何ピクセルになるかを指定します。

これらの値は、ラスタイメージのピクセルサイズには影響はありません。この値（dpiX または dpiY）のうちの1つが無効の場合、もう一方の値を両方の値に使用できます。

これらの値は、 XSaveOptions.Template が null の場合のみ SWF で使用されます。

Example

ここでは 72 DPI を使用して、PDF の 1 インチが SWF の 72 ピクセルになるようにします。

[C#]
Doc theDoc = new Doc();
theDoc.Read(Server.MapPath("../mypics/sample.pdf"));
theDoc.SaveOptions.TemplateData = new XSaveTemplateData();
theDoc.SaveOptions.TemplateData.SetMeasureResolution(72);
theDoc.Save(Server.MapPath("swfsave.swf"));
[Visual Basic]
Dim theDoc As Doc = New Doc()
theDoc.Read(Server.MapPath("../mypics/sample.pdf"))
theDoc.SaveOptions.TemplateData = New XSaveTemplateData()
theDoc.SaveOptions.TemplateData.SetMeasureResolution(72)
theDoc.Save(Server.MapPath("swfsave.swf"))


ImageDisplaySmoothing Property

ImageDisplaySmoothing プロパティ

型 | デフォルト値 | 読み取り専用 | 説明
[C#] RasterSmoothing [Visual Basic] RasterSmoothing | Default | いいえ | イメージを表示するためのスムージング

Notes

このプロパティはイメージを表示するためのスムージングを指定します。

  • Default – デフォルトのアルゴリズムを指定します
  • Alias – アンチエイリアスなしを指定します
  • AntiAlias – アンチエイリアスを指定します

一部の出力形式は、イメージを表示するためにさまざまなスムージングをサポートします。

SWF では、これはイメージの FILLSTYLE 構造体の FillStyleType フィールドに作用します。

Example

ありません。


JpegQuality Property

JpegQuality プロパティ

型 | デフォルト値 | 読み取り専用 | 説明
[C#] int [Visual Basic] Integer | -1 | いいえ | JPEG の品質レベル

Notes

イメージを JPEG で圧縮する時の品質レベルを指定します。値は0（品質は最悪だが出力は小さくなります）から100（品質は最高だが出力は大きくなります）までです。このプロパティの値を-1にすると、品質レベルを指定していないと見なして適切なデフォルトの品質レベルが使用されます。

Example

ありません。


MeasureDpiX Property

MeasureDpiX プロパティ

型 | デフォルト値 | 読み取り専用 | 説明
[C#] double [Visual Basic] Double | 0 | はい | 水平方向の寸法の解像度

Notes

値を変更するには、 SetMeasureResolution メソッドを使用してください。

Example

ありません。


MeasureDpiY Property

MeasureDpiY プロパティ

型 | デフォルト値 | 読み取り専用 | 説明
[C#] double [Visual Basic] Double | 0 | はい | 垂直方向の寸法の解像度

Notes

値を変更するには、 SetMeasureResolution メソッドを使用してください。

Example

ありません。


ReencodeJpeg Property

ReencodeJpeg プロパティ

型 | デフォルト値 | 読み取り専用 | 説明
[C#] bool [Visual Basic] Boolean | false | いいえ | JPEG イメージを JPEG で再圧縮するかを定義します

Notes

元の形式と圧縮する形式が共に JPEG の場合に有効です。JPEG 圧縮を行うかを定義します。False の場合、再圧縮せずにオリジナルイメージを直接出力します。True の場合、オリジナルイメージは JPEG で再圧縮されます。

JPEG イメージの品質レベルを変えて再圧縮できますが、同じ/高品質レベルの JPEG イメージを再圧縮するとイメージ品質は良くなるどころか悪くなってしまうことがあります。

Example

ありません。


XSettings Object

XSettings クラス

グローバル設定クラス。

この静的クラスは、ABCpdf のグローバル情報にアクセスしたり、ABCpdf の操作方法を制御するために使用されます。このクラスをインスタンス化することはできません。

System.Object
   WebSupergoo.ABCpdf9.XSettings

メソッド | 説明
InstallLicense | ライセンスをインストールします
InstallRedistributionLicense | 再配布ライセンスをインストールします
InstallSystemLicese | システムライセンスをインストールします
InstallTrialLicese | 体験版ライセンスをインストールします
Register | 体験版ライセンスを登録し、インストールします
SetConfigSection | アプリケーションの構成セクションを設定します

プロパティ | 説明
Key | リモート デプロイメントに使用する体験版ライセンス キー
LicenseDescription | 本ソフトウェアの現在のライセンス
Licensee | 本ソフトウェアの現在の使用許諾者
LicenseType | 本ソフトウェアの現在の機能水準
LicenseValid | 現在のライセンスが有効かどうか
LogErrors | アプリケーション イベントログにエラーを記録するかを定義します
Version | 本ソフトウェアのバージョン


InstallLicense Method

InstallLicense メソッド

ライセンスをインストールします。

Syntax

[C#]
bool InstallLicense(string license)

[Visual Basic]
Function InstallLicense(license As String) As Boolean

Params
名称 | 説明
license | インストールするライセンス
戻り値 | ライセンスがインストールされた場合は True、そうでない場合は False

Notes

ライセンスをインストールします。ABCpdf の任意のオブジェクトを作成する前に、アプリケーションのスタートアップでこのメソッドを1回だけ呼び出してください。なお、何回呼び出しても問題はありません。

このメソッドを使ってインストールされたライセンスは、アンインストールするまでは現在のプロセス（またはアプリケーション プール）に利用可能な状態で残ります。

Example

インストールとライセンス キーを参照してください。


InstallRedistributionLicense Method

InstallRedistributionLicense メソッド

再配布ライセンスをインストールします。

Syntax

[C#]
bool InstallRedistributionLicense(string license)
[Visual Basic]
Function InstallRedistributionLicense(license As String) As Boolean

Params
名称 | 説明
license | インストールする再配布ライセンス
戻り値 | 再配布ライセンスがインストールされた場合は True、そうでない場合は False

Notes

再配布ライセンスをインストールします。ABCpdf の任意のオブジェクトを作成する前に、アプリケーションのスタートアップでこのメソッドを1回だけ呼び出してください。なお、何回呼び出しても問題はありません。

このメソッドを使ってインストールされた再配布ライセンスは、アンインストールするまでは現在のプロセス（またはアプリケーション プール）に利用可能な状態で残ります。

Example

インストールとライセンス キーを参照してください。


InstallSystemLicense Method

InstallSystemLicense メソッド

システム ライセンスをインストールします。

Syntax

[C#]
bool InstallSystemLicense(stirng license)
[Visual Basic]
Function InstallSystemLicense(license As String) As Boolean

Params
名称 | 説明
license | インストールするシステム ライセンス
return | ライセンスがインストールされた場合は True、そうでない場合は False

Notes

システム ライセンスをインストールします。ABCpdf の任意のオブジェクトを作成する前に、アプリケーションのスタートアップでこのメソッドを呼び出してください。

このメソッドは、システム全体ベースで使用するシステム ライセンスを保存するので、ライセンスがうまくインストールされると、システムにとどまって ABCpdf によって自動的に取得されます。

システム ライセンスはプロセスモデル固有のものなので、32 ビットの ABCpdf 用にインストールされたライセンスを 64 ビットの ABCpdf で、またはその逆で使用できません。まさに、現在のプロセスで有効でなくてもライセンスをインストールできるので、システム ライセンスをインストールしたら、 LicenseValid プロパティを確認してください。

セキュリティの点から、インストールするシステムを完全に制御できない場合は、このメソッドは使用しないでください。

Example

インストールとライセンス キーを参照してください。


InstallTrialLicense Method

InstallTrialLicense メソッド

体験版ライセンスをインストールします。

Syntax

[C#]
bool InstallTrialLicense(string license)
[Visual Basic]
Function InstallTrialLicense(license As String) As Boolean

Params
名称 | 説明
license | インストールする体験版ライセンス
return | ライセンスがインストールされた場合は True、そうでない場合は False

Notes

体験版ライセンスをインストールします。ABCpdf の任意のオブジェクトを作成する前に、アプリケーションのスタートアップでこのメソッドを1回だけ呼び出してください。なお、何回呼び出しても問題はありません。

このメソッドを使ってインストールされた体験版ライセンスは、アンインストールするまでは現在のプロセス（またはアプリケーション プール）に利用可能な状態で残ります。

Example

インストールとライセンス キーを参照してください。


Register Method

Register メソッド

体験版ライセンスを登録し、インストールします。

Syntax

[C#]
void Register()
[Visual Basic]
Sub Register()

Params
名称 | 説明
戻り値 | なし

Notes

ABCpdf を登録します。ライセンスがインストールされていない場合は体験版ライセンスをインストールします。

インストールプロセスと PDF 設定アプリケーションの両方が自動的に ABCpdf を登録するので、このメソッドを呼び出す必要はありません。

何らかの理由で登録に失敗した場合、管理者として PDF 設定アプリケーションを実行してください。

Example

ありません。


SetConfigSection Method

SetConfigSection メソッド

アプリケーションの構成セクションを設定します。

Syntax

[C#]
void SetConfigSection(ConfigSection section)
[Visual Basic]
Sub SetConfigSection(section As ConfigSection)

Params
名称 | 説明
section | ABCpdf の構成セクション
戻り値 | なし

Notes

ABCpdf の構成セクションのオブジェクトを変更します。

ABCpdf が （System.Configuration.ConfigurationManager.GetSection("ABCpdf9.Section") を呼び出して）デフォルトの構成ファイルがあるかを自動的に検出するので、通常はこのメソッドを呼び出す必要はありません。従って、構成ファイルに有効な ABCpdf9.Section がある限り、このメソッドを呼び出す必要はありません。

ローカル アプリケーションでは、構成ファイルは通常アプリケーションと同じフォルダに格納されており、<application.exe>.config が呼び出されます（この <application.exe> の部分はアプリケーションのファイル名になります）。Web アプリケーションでは、構成セクションは Web.config に格納されています。

ABCpdf のセクション名は ABCpdf9.Section になっているはずです。型は、WebSupergoo.ABCpdf9.ConfigSection です。詳細は、下のサンプルを参照してください。ConfigSection は、Preferences の配列を含んでいる不透明なクラスです。

各 Preference は、キーと値を持っています。

構成ファイルで Preference が見つからない場合はレジストリーから読み込まれます。

preference のキーはレジストリ キーの名前と同じです。例えば、<add Key="LogErrors" Value="1" /> は LogErrors というキー名で、キー値が 1 の DWORD レジストリ キーと同じです。詳細は、コンセプトのレジストリ キーを参照してください。レジストリ キーに書かれているように、キー値と型が一致しているか確認してください。

警告： preferences を使う操作に対して、ABCpdf のイベント/コールバックからそれらの preferences を変更すると、問題が生じる場合があります。

Example

以下は、.config ファイルの例で、ABCpdf の有効な ConfigSection が含まれています。設定されている ABCpdf の preferences は、LogErrors、UserName、Password です。その他の preferences はレジストリから読み込まれます。

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <configSections>
    <section name="ABCpdf9.Section" type="WebSupergoo.ABCpdf9.ConfigSection, ABCpdf" allowLocation="true"
allowDefinition="Everywhere" allowExeDefinition="MachineToLocalUser" overrideModeDefault="Allow"
restartOnExternalChanges="true" requirePermission="true" />
  </configSections>
  <ABCpdf9.Section>
    <Preferences>
      <clear />
      <add Key="LogErrors" Value="1" />
      <add Key="UserName" Value="Test" />
      <add Key="Password" Value="Test" />
    </Preferences>
  </ABCpdf9.Section>
</configuration>


Key Property

Key プロパティ

型 | デフォルト値 | 読み取り専用 | 説明
[C#] string [Visual Basic] String | なし | はい | リモート デプロイメントに使用する体験版ライセンス キー

Notes

このプロパティは、リモート デプロイメントに使用可能な体験版ライセンスを格納します。

ABCpdf がまだ登録されていない場合、このプロパティは空になります。

Example

ありません。


LicenseDescription Property

LicenseDescription プロパティ

型 | デフォルト値 | 読み取り専用 | 説明
[C#] string [Visual Basic] String | なし | はい | 本ソフトウェアの現在のライセンス

Notes

このプロパティは、人が読める形式で本ソフトウェアの現在のライセンスを表します。一般的に、これは体験版、標準またはプロフェッショナルになります。

Example

ありません。


Licensee Property

Licensee プロパティ

型 | デフォルト値 | 読み取り専用 | 説明
[C#] string [Visual Basic] String | なし | はい | 本ソフトウェアの現在の使用許諾者

Notes

このプロパティは本ソフトウェアの使用許諾者を取得し、人が読める形式で表します。

この使用許諾者は、ABCpdf を登録した法的実在者です。この使用許諾者はライセンス購入時に選択され、ライセンスはその実在者固有のものになります。通常、使用許諾者は企業ですが、個人の場合もあります。

Example

ありません。


LicenseType Property

LicenseType プロパティ

型 | デフォルト値 | 読み取り専用 | 説明
[C#] LicenseType [Visual Basic] LicenseType | なし | はい | 本ソフトウェアの現在の機能水準

Notes

LicenseType 列挙体は次の値を取得できます。

  • None
  • TimePeriod
  • Standard
  • Professional

Example

ありません。


LicenseValid Property

LicenseValid プロパティ

型 | デフォルト値 | 読み取り専用 | 説明
[C#] bool [Visual Basic] Boolean | なし | はい | 現在のライセンスが有効か定義します

Notes

このプロパティは、現在のライセンスが有効か定義します。

ライセンスをインストールしたら、このプロパティを使用してインストールされていることと有効であるかを確認してください。

Example

ありません。


LogErrors Property

LogErrors プロパティ

型 | デフォルト値 | 読み取り専用 | 説明
[C#] bool [Visual Basic] Boolean | False | いいえ | アプリケーション イベントログにエラーを記録するかを定義します

Notes

このプロパティは、アプリケーション イベントログにエラーを記録するかを定義します。

Example

ありません。


Version Property

Version プロパティ

型 | デフォルト値 | 読み取り専用 | 説明
[C#] int [Visual Basic] Integer | なし | はい | 本ソフトウェアのバージョン

Notes

このプロパティは、本ソフトウェアのバージョンを取得します。

Example

ありません。


XTextStyle Class

XTextStyle オブジェクト

テキストを追加する時のスタイルを表します。

単位系は現在の Doc.Units で定義されます。

System.Object
   WebSupergoo.ABCpdf9.XTextStyle

メソッド | 説明
ToString | XTextStyle オブジェクトの文字列を返します。

プロパティ | 説明
String | スタイルを表す文字列
Size | テキストのサイズ
Ascender | アセンダラインからミーンラインまでの間隔
Indent | すべての段落の先頭行のインデント設定
LeftMargin | 段落のインデントの設定
CharSpacing | 文字の間隔設定
WordSpacing | 単語の間隔設定
LineSpacing | 行間設定
ParaSpacing | 段落の間隔設定
Justification | 両端揃え
Bold | 太字の設定
Italic | 斜体の設定
Outline | 文字の輪郭線の太さ設定
Underline | テキストの下線の設定
Strike | 取り消し線の設定
Strike2 | 二重取り消し線の設定


ToString Function

ToString メソッド

オブジェクトの文字列を返します。

Syntax

[C#]
override string ToString()
[Visual Basic]
Overrides Function ToString() As String

Params
名称 | 説明
戻り値 | オブジェクトの文字列

Notes

このメソッドはオブジェクトの文字列を返します。これは、オブジェクトの String プロパティを読むことと同じです。

Example

ありません。


Ascender Property

Ascender プロパティ

型 | デフォルト値 | 読み取り専用 | 説明
[C#] int [Visual Basic] Integer | -1 | いいえ | アセンダラインからミーンラインまでの間隔

Notes

このプロパティは、アセンダラインからミーンラインまでの間隔を制御します。LineSpacing は常に上端に適用されるので、ミーンラインの位置をもっとよく制御するために、LineSpacing でアセンダラインを上に移動する必要があります。

フォントサイズの 1/1000 単位で計測されます。

デフォルト値は -1 です。

Example

ありません。


Bold プロパティ
型 | デフォルト値 | 読み取り専用 | 説明
[C#] bool [Visual Basic] Boolean | false | いいえ | 太字の設定

Notes

このプロパティはテキストの太字を設定します。

一般的に現在のフォントを使用して太字を模造するよりも、太字の書体を指定する方が良いのですが、それが不可能な場合にこのプロパティを使用して太字を模造することができます。

Example

下記のコードは、ドキュメントに太字のテキストを追加します。

[C#]
Doc theDoc = new Doc();
string theText;
theText = "Gallia est omnis divisa in partes tres, quarum unam incolunt Belgae, aliam Aquitani, tertiam qui ipsorum lingua Celtae, nostra Galli appellantur.";
theDoc.Rect.Inset(20, 40);
theDoc.TextStyle.Size = 96;
theDoc.TextStyle.Bold = true;
theDoc.AddText(theText);
theDoc.Save(Server.MapPath("stylebold.pdf"));
theDoc.Clear();
[Visual Basic]
Dim theDoc As Doc = New Doc()
Dim theText As String
theText = "Gallia est omnis divisa in partes tres, quarum unam incolunt Belgae, aliam Aquitani, tertiam qui ipsorum lingua Celtae, nostra Galli appellantur."
theDoc.Rect.Inset(20, 40)
theDoc.TextStyle.Size = 96
theDoc.TextStyle.Bold = True
theDoc.AddText(theText)
theDoc.Save(Server.MapPath("stylebold.pdf"))
theDoc.Clear()

stylebold.pdf


CharSpacing Property

CharSpacing プロパティ

型 | デフォルト値 | 読み取り専用 | 説明
[C#] double [Visual Basic] Double | 0.0 | いいえ | 文字の間幅設定

Notes

このプロパティは文字の間幅を設定します。これは「トラッキング」または「カーニング」と呼ばれます。

テキスト文字列の文字はそれぞれ文字幅（次の文字の位置決めに使用されます）があります。このプロパティはこの文字幅に追加されます。

横書きの場合、正の値を設定するとテキストが伸張し、負の値を設定するとテキストは収縮します。縦書きの場合、正の値は収縮し、負の値は伸張します。詳しくは FontObject.WritingMode プロパティを参照してください。

このプロパティは絶対値で計測されるので、テキストが小さいほどこの間隔が広くなります。

Example

下記のコードは、ドキュメントに3つのテキストを追加します。最初のテキストはデフォルトの間隔を設定します。2つ目のテキストは正の値を設定しテキストを伸張します。3つ目のテキストは負の値を設定しテキストを収縮します。

[C#]
Doc theDoc = new Doc();
theDoc.TextStyle.Size = 96;
theDoc.AddText("Zero CharSpacing");
theDoc.Rect.Move(0, -300);
theDoc.TextStyle.CharSpacing = 10;
theDoc.AddText("Positive CharSpacing");
theDoc.Rect.Move(0, -300);
theDoc.TextStyle.CharSpacing = -10;
theDoc.AddText("Negative CharSpacing");
theDoc.Save(Server.MapPath("stylecspace.pdf"));
theDoc.Clear();
[Visual Basic]
Dim theDoc As Doc = New Doc()
theDoc.TextStyle.Size = 96
theDoc.AddText("Zero CharSpacing")
theDoc.Rect.Move(0, -300)
theDoc.TextStyle.CharSpacing = 10
theDoc.AddText("Positive CharSpacing")
theDoc.Rect.Move(0, -300)
theDoc.TextStyle.CharSpacing = -10
theDoc.AddText("Negative CharSpacing")
theDoc.Save(Server.MapPath("stylecspace.pdf"))
theDoc.Clear()

stylecspace.pdf


Indent プロパティ
型 | デフォルト値 | 読み取り専用 | 説明
[C#] double [Visual Basic] Double | 0 | いいえ | 段落の最初の行のインデントを設定

Notes
このプロパティはすべての段落の最初の行のインデントを設定します。

正の値を設定すると段落の最初の行が指定したポイント数だけ右方向に移動し、負の値を設定すると段落の最初の行が指定したポイント数だけ左方向に移動します。

Example

下記のコードは、インデントを設定した例です。

[C#]
Doc theDoc = new Doc();
string theText = "Gallia est omnis divisa in partes tres, quarum unam incolunt Belgae, aliam Aquitani, tertiam qui ipsorum lingua Celtae, nostra Galli appellantur. Hi omnes lingua, institutis, legibus inter se differunt.";
theText = theText + theText;
theText = theText + "\r\n" + theText + "\r\n";
theText = theText + theText + theText + theText;
theDoc.Rect.Inset(20, 40);
theDoc.TextStyle.Size = 16;
theDoc.TextStyle.ParaSpacing = 16;
theDoc.TextStyle.Indent = 48;
theDoc.AddText(theText);
theDoc.Save(Server.MapPath("styleindent.pdf"));
theDoc.Clear();
[Visual Basic]
Dim theDoc As Doc = New Doc()
Dim theText As String = "Gallia est omnis divisa in partes tres, quarum unam incolunt Belgae, aliam Aquitani, tertiam qui ipsorum lingua Celtae, nostra Galli appellantur. Hi omnes lingua, institutis, legibus inter se differunt."
theText = theText + theText
theText = theText + vbCrLf + theText + vbCrLf
theText = theText + theText + theText + theText
theDoc.Rect.Inset(20, 40)
theDoc.TextStyle.Size = 16
theDoc.TextStyle.ParaSpacing = 16
theDoc.TextStyle.Indent = 48
theDoc.AddText(theText)
theDoc.Save(Server.MapPath("styleindent.pdf"))
theDoc.Clear()

styleindent.pdf


Italic プロパティ
型 | デフォルト値 | 読み取り専用 | 説明
[C#] bool [Visual Basic] Boolean | false | いいえ | 斜体の設定

Notes

このプロパティはテキストの斜体を設定します。

一般的に、現在の書体を使用して斜体を模造するよりも斜体の書体を設定するほうが良いのですが、それが不可能な場合にこのプロパティを使用して斜体を模造することができます。

Example

下記のコードは、テキストに斜体を設定します。

[C#]
Doc theDoc = new Doc();
string theText;
theText = "Gallia est omnis divisa in partes tres, quarum unam incolunt Belgae, aliam Aquitani, tertiam qui ipsorum lingua Celtae, nostra Galli appellantur.";
theDoc.Rect.Inset(20, 40);
theDoc.TextStyle.Size = 96;
theDoc.TextStyle.Italic = true;
theDoc.AddText(theText);
theDoc.Save(Server.MapPath("styleitalic.pdf"));
theDoc.Clear();
[Visual Basic]
Dim theDoc As Doc = New Doc()
Dim theText As String
theText = "Gallia est omnis divisa in partes tres, quarum unam incolunt Belgae, aliam Aquitani, tertiam qui ipsorum lingua Celtae, nostra Galli appellantur."
theDoc.Rect.Inset(20, 40)
theDoc.TextStyle.Size = 96
theDoc.TextStyle.Italic = True
theDoc.AddText(theText)
theDoc.Save(Server.MapPath("styleitalic.pdf"))
theDoc.Clear()

styleitalic.pdf


Justification プロパティ
型 | デフォルト値 | 読み取り専用 | 説明
[C#] double [Visual Basic] Double | 0.0 | いいえ | 水平方向のテキストの両端揃え

Notes
このプロパティは水平方向にテキストの両端揃えを行います。各行は、Doc.Rect プロパティに設定した領域に描画されます。このプロパティによって、領域に正しく収まるように単語の間隔を調整します。

0 の場合は両端揃えを行わず、1 の場合は完全な両端揃えを行います。なお、0 から 1 までの間の値も設定できます。

テキストの配置位置は Doc.HPos プロパティと Doc.VPos プロパティで設定されます。

Example

下記のコードは、テキストの両端揃えを行います。

[C#]
Doc theDoc = new Doc();
string theText = "Gallia est omnis divisa in partes tres, quarum unam incolunt Belgae, aliam Aquitani, tertiam qui ipsorum lingua Celtae, nostra Galli appellantur.";
theDoc.Rect.Inset(20, 40);
theDoc.TextStyle.Size = 48;
theDoc.AddText(theText);
theDoc.Rect.Move(0, -350);
theDoc.TextStyle.Justification = 1.0;
theDoc.AddText(theText);
theDoc.Save(Server.MapPath("stylejustification.pdf"));
theDoc.Clear();
[Visual Basic]
Dim theDoc As Doc = New Doc()
Dim theText As String = "Gallia est omnis divisa in partes tres, quarum unam incolunt Belgae, aliam Aquitani, tertiam qui ipsorum lingua Celtae, nostra Galli appellantur."
theDoc.Rect.Inset(20, 40)
theDoc.TextStyle.Size = 48
theDoc.AddText(theText)
theDoc.Rect.Move(0, -350)
theDoc.TextStyle.Justification = 1.0
theDoc.AddText(theText)
theDoc.Save(Server.MapPath("stylejustification.pdf"))
theDoc.Clear()

stylejustification.pdf


LeftMargin プロパティ
型 | デフォルト値 | 読み取り専用 | 説明
[C#] double [Visual Basic] Double | 0 | いいえ | 段落の左マージンの設定

Notes
このプロパティは段落の左マージンを設定します。

Rect プロパティを使用しても同じ結果が得られますが、このプロパティの方が簡単に使用できます。

正の値を設定すると段落は右方向へ移動し、負の値を設定すると左方向へ移動します。

Example

下記のコードは、左マージンの設定例です。

[C#]
Doc theDoc = new Doc();
string theText = "Gallia est omnis divisa in partes tres, quarum unam incolunt Belgae, aliam Aquitani...";
theDoc.TextStyle.Size = 48;
theDoc.AddText(theText);
theDoc.Rect.Move(0, -250);
theDoc.TextStyle.LeftMargin = 100;
theDoc.AddText(theText);
theDoc.Rect.Move(0, -250);
theDoc.TextStyle.LeftMargin = 200;
theDoc.AddText(theText);
theDoc.Save(Server.MapPath("stylemargin.pdf"));
theDoc.Clear();
[Visual Basic]
Dim theDoc As Doc = New Doc()
Dim theText As String = "Gallia est omnis divisa in partes tres, quarum unam incolunt Belgae, aliam Aquitani..."
theDoc.TextStyle.Size = 48
theDoc.AddText(theText)
theDoc.Rect.Move(0, -250)
theDoc.TextStyle.LeftMargin = 100
theDoc.AddText(theText)
theDoc.Rect.Move(0, -250)
theDoc.TextStyle.LeftMargin = 200
theDoc.AddText(theText)
theDoc.Save(Server.MapPath("stylemargin.pdf"))
theDoc.Clear()

stylelmargin.pdf


LineSpacing プロパティ
型 | デフォルト値 | 読み取り専用 | 説明
[C#] double [Visual Basic] Double | 0.0 | いいえ | 行間の間隔設定

Notes
このプロパティはテキストの行間を設定します。

正の値を設定すると行間が大きくなり、負の値を設定すると行間が小さくなります。

フォントの line spacing を使用できます。
doc.TextStyle.LineSpacing = doc.GetInfoDouble(doc.Font, "LineSpacing") * doc.TextStyle.Size / 1000

Example

下記のコードは、行間の設定例です。

[C#]
Doc theDoc = new Doc();
string theText = "Gallia est omnis divisa in partes tres, quarum unam incolunt Belgae, aliam Aquitani...";
theDoc.TextStyle.Size = 48;
theDoc.AddText(theText);
theDoc.Rect.Move(0, -250);
theDoc.TextStyle.LineSpacing = 20;
theDoc.AddText(theText);
theDoc.Rect.Move(0, -350);
theDoc.TextStyle.LineSpacing = -20;
theDoc.AddText(theText);
theDoc.Save(Server.MapPath("stylelspace.pdf"));
theDoc.Clear();
[Visual Basic]
Dim theDoc As Doc = New Doc()
Dim theText As String = "Gallia est omnis divisa in partes tres, quarum unam incolunt Belgae, aliam Aquitani..."
theDoc.TextStyle.Size = 48
theDoc.AddText(theText)
theDoc.Rect.Move(0, -250)
theDoc.TextStyle.LineSpacing = 20
theDoc.AddText(theText)
theDoc.Rect.Move(0, -350)
theDoc.TextStyle.LineSpacing = -20
theDoc.AddText(theText)
theDoc.Save(Server.MapPath("stylelspace.pdf"))
theDoc.Clear()

stylelspace.pdf


Outline プロパティ
型 | デフォルト値 | 読み取り専用 | 説明
[C#] double [Visual Basic] Double | 0 | いいえ | 輪郭線の太さの設定

Notes
このプロパティは文字の輪郭線を設定します。

0 の場合は輪郭線は描画されず、値が大きくなるほど輪郭線が太くなります。

Example
下記のコードは、アウトラインの設定例です。

[C#]
Doc theDoc = new Doc();
theDoc.TextStyle.Size = 144;
theDoc.AddText("Outline 0");
theDoc.Rect.Move(0, -300);
theDoc.TextStyle.Outline = 4;
theDoc.AddText("Outline 4");
theDoc.Rect.Move(0, -300);
theDoc.TextStyle.Outline = 10;
theDoc.AddText("Outline 10");
theDoc.Save(Server.MapPath("styleoutline.pdf"));
theDoc.Clear();
[Visual Basic]
Dim theDoc As Doc = New Doc()
theDoc.TextStyle.Size = 144
theDoc.AddText("Outline 0")
theDoc.Rect.Move(0, -300)
theDoc.TextStyle.Outline = 4
theDoc.AddText("Outline 4")
theDoc.Rect.Move(0, -300)
theDoc.TextStyle.Outline = 10
theDoc.AddText("Outline 10")
theDoc.Save(Server.MapPath("styleoutline.pdf"))
theDoc.Clear()

styleoutline.pdf


ParaSpacing プロパティ
型 | デフォルト値 | 読み取り専用 | 説明
[C#] double [Visual Basic] Double | 0.0 | いいえ | 段落間の間隔設定

Notes
このプロパティは段落間の間隔を設定します。

正の値を設定すると段落間の間隔が広くなり、負の値を設定すると段落間の間隔が狭まります。

Example

下記のコードは、段落間の間隔の設定例です。

[C#]
Doc theDoc = new Doc();
string theText = "Gallia est omnis divisa in partes tres, quarum unam incolunt Belgae, aliam Aquitani, tertiam qui ipsorum lingua Celtae, nostra Galli appellantur. Hi omnes lingua, institutis, legibus inter se differunt.";
theText = theText + "\r\n" + theText + "\r\n" + theText + "\r\n" + theText;
theDoc.Rect.Inset(20, 40);
theDoc.TextStyle.Size = 16;
theDoc.AddText(theText);
theDoc.Rect.Move(0, -350);
theDoc.TextStyle.ParaSpacing = 20;
theDoc.AddText(theText);
theDoc.Save(Server.MapPath("stylepspace.pdf"));
theDoc.Clear();
[Visual Basic]
Dim theDoc As Doc = New Doc()
Dim theText As String = "Gallia est omnis divisa in partes tres, quarum unam incolunt Belgae, aliam Aquitani, tertiam qui ipsorum lingua Celtae, nostra Galli appellantur. Hi omnes lingua, institutis, legibus inter se differunt."
theText = theText + vbCrLf + theText + vbCrLf + theText + vbCrLf + theText
theDoc.Rect.Inset(20, 40)
theDoc.TextStyle.Size = 16
theDoc.AddText(theText)
theDoc.Rect.Move(0, -350)
theDoc.TextStyle.ParaSpacing = 20
theDoc.AddText(theText)
theDoc.Save(Server.MapPath("stylepspace.pdf"))
theDoc.Clear()

stylepspace.pdf


Size プロパティ
型 | デフォルト値 | 読み取り専用 | 説明
[C#] double [Visual Basic] Double | 10.0 | いいえ | テキストの大きさの設定

Notes
このプロパティは AddText などのメソッドを使用してドキュメントに追加するテキストのサイズを設定します。

このプロパティは Doc.FontSize に相当しますが、FontSize とは違って小数点の値を指定します。

フォントサイズは現在の Units で設定されます。

Example

下記のコードは、テキストの大きさの設定例です。

[C#]
Doc theDoc = new Doc();
theDoc.TextStyle.Size = 96.5;
theDoc.AddText("Small ");
theDoc.TextStyle.Size = 192.5;
theDoc.AddText("Big");
theDoc.Save(Server.MapPath("stylesize.pdf"));
theDoc.Clear();
[Visual Basic]
Dim theDoc As Doc = New Doc()
theDoc.TextStyle.Size = 96.5
theDoc.AddText("Small ")
theDoc.TextStyle.Size = 192.5
theDoc.AddText("Big")
theDoc.Save(Server.MapPath("stylesize.pdf"))
theDoc.Clear()

stylesize.pdf


Strike プロパティ
型 | デフォルト値 | 読み取り専用 | 説明
[C#] bool [Visual Basic] Boolean | false | いいえ | 取り消し線の設定

Notes

このプロパティはテキストに取り消し線を設定します。

Example

下記のコードは、テキストに取り消し線を設定します。

[C#]
Doc theDoc = new Doc();
string theText;
theText = "Gallia est omnis divisa in partes tres, quarum unam incolunt Belgae, aliam Aquitani, tertiam qui ipsorum lingua Celtae, nostra Galli appellantur.";
theDoc.Rect.Inset(20, 40);
theDoc.TextStyle.Size = 96;
theDoc.TextStyle.Strike = true;
theDoc.AddText(theText);
theDoc.Save(Server.MapPath("stylestrike.pdf"));
theDoc.Clear();

[Visual Basic]
Dim theDoc As Doc = New Doc()
Dim theText As String
theText = "Gallia est omnis divisa in partes tres, quarum unam incolunt Belgae, aliam Aquitani, tertiam qui ipsorum lingua Celtae, nostra Galli appellantur."
theDoc.Rect.Inset(20, 40)
theDoc.TextStyle.Size = 96
theDoc.TextStyle.Strike = True
theDoc.AddText(theText)
theDoc.Save(Server.MapPath("stylestrike.pdf"))
theDoc.Clear()

stylestrike.pdf


Strike2 プロパティ
型 | デフォルト値 | 読み取り専用 | 説明
[C#] bool [Visual Basic] Boolean | false | いいえ | 二重取り消し線の設定

Notes

このプロパティはテキストに二重取り消し線を設定します。

Example

下記のコードは、テキストに二重取り消し線を設定します。

[C#]
Doc theDoc = new Doc();
string theText;
theText = "Gallia est omnis divisa in partes tres, quarum unam incolunt Belgae, aliam Aquitani, tertiam qui ipsorum lingua Celtae, nostra Galli appellantur.";
theDoc.Rect.Inset(20, 40);
theDoc.TextStyle.Size = 96;
theDoc.TextStyle.Strike2 = true;
theDoc.AddText(theText);
theDoc.Save(Server.MapPath("stylestrike2.pdf"));
theDoc.Clear();

[Visual Basic]
Dim theDoc As Doc = New Doc()
Dim theText As String
theText = "Gallia est omnis divisa in partes tres, quarum unam incolunt Belgae, aliam Aquitani, tertiam qui ipsorum lingua Celtae, nostra Galli appellantur."
theDoc.Rect.Inset(20, 40)
theDoc.TextStyle.Size = 96
theDoc.TextStyle.Strike2 = True
theDoc.AddText(theText)
theDoc.Save(Server.MapPath("stylestrike2.pdf"))
theDoc.Clear()

stylestrike2.pdf


String Property

String プロパティ

型 | デフォルト値 | 読み取り専用 | 説明
[C#] string [Visual Basic] String | "10 0 0 0 0 0 0 0 0 0 0 0 0 0 -1" | いいえ | テキストのスタイルをあらわす文字列

Notes

このプロパティは文字列でテキストのスタイルを設定します。

書式は

「" size （サイズ）、indent （インデント）、charspacing （文字間隔）、wordspacing （単語間隔）、linespacing （行間）、paraspacing （段落間の間隔）、justification （両端揃え）、outline （アウトライン）、underline （下線）、strike （取り消し線）、strike2 （二重取り消し線）、bold （太字）、italic （斜体）、leftmargin （左マージン）、ascender（アセンダ）"」

となります。underline （下線）、strike （取り消し線）、strike2 （二重取り消し線）、bold （太字）、italic （斜体）、ascender（アセンダ）は整数値（Boolean 値の場合はゼロまたはゼロ以外）で、それ以外は不動小数点数になります。

Example

使用例です。

[C#]
XTextStyle ts = new XTextStyle();
ts.String = "24.5 10 0 0 0 0 0";
Response.Write("Size = " + ts.Size.ToString() + "<br>");
Response.Write("Indent = " + ts.Indent.ToString());
[Visual Basic]
Dim ts As XTextStyle = New XTextStyle()
ts.String = "24.5 10 0 0 0 0 0"
Response.Write("Size = " + ts.Size.ToString() + "<br>")
Response.Write("Indent = " + ts.Indent.ToString())

出力結果です。

Size = 24.5
Indent = 10


Underline プロパティ
型 | デフォルト値 | 読み取り専用 | 説明
[C#] bool [Visual Basic] Boolean | false | いいえ | 下線の設定

Notes

このプロパティはテキストの下線を設定します。

Example

下記のコードは、テキストに下線を設定します。

[C#]
Doc theDoc = new Doc();
string theText = "Gallia est omnis divisa in partes tres, quarum unam incolunt Belgae, aliam Aquitani, tertiam qui ipsorum lingua Celtae, nostra Galli appellantur.";
theDoc.Rect.Inset(20, 40);
theDoc.TextStyle.Size = 96;
theDoc.TextStyle.Underline = true;
theDoc.AddText(theText);
theDoc.Save(Server.MapPath("styleunderline.pdf"));
theDoc.Clear();

[Visual Basic]
Dim theDoc As Doc = New Doc()
Dim theText As String = "Gallia est omnis divisa in partes tres, quarum unam incolunt Belgae, aliam Aquitani, tertiam qui ipsorum lingua Celtae, nostra Galli appellantur."
theDoc.Rect.Inset(20, 40)
theDoc.TextStyle.Size = 96
theDoc.TextStyle.Underline = True
theDoc.AddText(theText)
theDoc.Save(Server.MapPath("styleunderline.pdf"))
theDoc.Clear()

styleunderline.pdf


WordSpacing Property

WordSpacing プロパティ

型 | デフォルト値 | 読み取り専用 | 説明
[C#] double [Visual Basic] Double | 0.0 | いいえ | 単語の間隔設定

Notes

このプロパティは単語の間隔を設定します。

このプロパティは CharSpacing と同じように機能しますが、文字列の中のスペース文字にしか適用されません。これは、CharSpacing と同じで値に応じて単語間隔が狭くなったり広くなったりします。

この値は絶対値で設定しますので、フォントが小さいほどこの間隔が広くなります。

注意： 全角の空白には適用されません。

Example

下記のコードは、ドキュメントに3つのテキストを追加します。最初のテキストはデフォルトの間隔を設定します。2つ目のテキストは正の値を設定しテキストを伸張します。3つ目のテキストは負の値を設定しテキストを収縮します。

[C#]
Doc theDoc = new Doc();
string theText = "This is an example of word spacing.";
theDoc.TextStyle.Size = 72;
theDoc.AddText(theText);
theDoc.Rect.Move(0, -300);
theDoc.TextStyle.WordSpacing = 20;
theDoc.AddText(theText);
theDoc.Rect.Move(0, -300);
theDoc.TextStyle.WordSpacing = -20;
theDoc.AddText(theText);
theDoc.Save(Server.MapPath("stylewspace.pdf"));
theDoc.Clear();
[Visual Basic]
Dim theDoc As Doc = New Doc()
Dim theText As String = "This is an example of word spacing."
theDoc.TextStyle.Size = 72
theDoc.AddText(theText)
theDoc.Rect.Move(0, -300)
theDoc.TextStyle.WordSpacing = 20
theDoc.AddText(theText)
theDoc.Rect.Move(0, -300)
theDoc.TextStyle.WordSpacing = -20
theDoc.AddText(theText)
theDoc.Save(Server.MapPath("stylewspace.pdf"))
theDoc.Clear()

stylewspace.pdf


XTransform Class

XTransform オブジェクト

基本座標系の変換を行います。オブジェクトが作成された時には、デフォルトで変換の設定がありません。

基本座標系の変換はオブジェクトの変換とは違います。

System.Object
   WebSupergoo.ABCpdf9.XTransform

Implements: IDisposable

メソッド | 説明
XTransform | XTransform コンストラクタ
Equals | 2つの変換が同じか定義します
Invert | 変換処理のための座標系を反転します
Magnify | 基準点を中心にして、変換処理のための座標のスケーリングを行います
PostMultiply | この変換行列を指定した変換で右から掛けます
PreMultiply | この変換行列を指定した変換で左から掛けます
Reset | 変換処理のための座標系の初期化を行います
Rotate | 基準点を中心にして座標系の回転を行います（角度は AngleUnit プロパティに指定した単位（度数またはラジアン）になります）
Skew | 基準点を中心にして座標系に「傾き」（垂直方向と水平方向）を設定します
SetTransform | 変換処理のための座標系を設定します
ToString | オブジェクトの文字列を返します
TransformPoints | 指定したポイント配列にこの変換を適用します
Translate | 座標系を水平方向と垂直方向に移動します

プロパティ | 説明
String | 座標系の変換処理の要素を文字列で設定します
AngleUnit | 角度の単位（度数またはラジアン）
Elements | 浮動小数点の値の配列として変換
Matrix | .NET の行列として変換
OffsetX | 水平方向の移動
OffsetY | 垂直方向の移動


XTransform Constructor

XTransform コンストラクタ

XTransform コンストラクタ。

Syntax

[C#]
XTransform ()
XTransform (string text)
XTransform (double[] entries)
XTransform (Matrix matrix)
XTransform (double m11, double m12, double m21, double m22, double tx, double ty)
[Visual Basic]
Sub New
Sub New(text As String)
Sub New(entries As Double())
Sub New(entries As Matrix)
Sub New(m11 As Double, m12 As Double, m21 As Double, m22 As Double, tx As Double, ty As Double)

Params
名称 | 説明
text | 最初の四角形を String プロパティで返された形式で定義する文字列
matrix | 変換の値を指定する System.Drawing.Drawing2D Matrix オブジェクト
entries | 行列に値を指定する double 型の配列。m11, m12, m21, m22, tx, ty の順になります。
m11 | 行列のエントリー 1,1
m12 | 行列のエントリー 1,2
m21 | 行列のエントリー 2,1
m22 | 行列のエントリー 2,2
tx | 適用する x 変換
ty | 適用する y 変換

Notes

これらのメソッドは、XTransform オブジェクトを作成します。

デフォルトのコンストラクタは、identity （変換なし）を作成します。

Example

ありません。


Invert Function

Invert メソッド

変換処理のための座標系を反転します。

Syntax

[C#]
virtual void Invert()
[Visual Basic]
Overridable Sub Invert()

Params
名称 | 説明
なし |

Notes

変換処理のための座標系の反転を行うと、時計方向の設定は反時計方向になります。また左右が逆になり、ズームインがズームアウトになります。

注意： すべての座標系が反転できるわけではありません。 拡大を 0 に設定すると、座標系は1点に縮まります。この場合、元に戻すために変換処理を反転させることはできません。しかし、この種の座標変換は一般的ではありませんし、プログラムのエラーが原因で起こります。

座標系の反転ができないものに対して変換を行っても何も変わりません。

Example

下記のコードは、ドキュメントの中心を基準にしてテキストを反時計方向に45度回転して描画します。次に、Invert メソッドを実行し、ドキュメントの中心を基準にして別のテキストを描画します。Invert メソッドが実行しているのでこのテキストは時計方向に45度回転して表示されます。

[C#]
Doc theDoc = new Doc();
theDoc.FontSize = 72;
theDoc.Rect.String = "0 0 999 999";
theDoc.Pos.String = "302 396";
theDoc.Transform.Rotate(45, 302, 396);
theDoc.AddText("45 Degrees");
theDoc.Pos.String = "302 396";
theDoc.Transform.Invert();
theDoc.AddText("Inverted");
theDoc.Save(Server.MapPath("transforminvert.pdf"));
theDoc.Clear();
[Visual Basic]
Dim theDoc As Doc = New Doc()
theDoc.FontSize = 72
theDoc.Rect.String = "0 0 999 999"
theDoc.Pos.String = "302 396"
theDoc.Transform.Rotate(45, 302, 396)
theDoc.AddText("45 Degrees")
theDoc.Pos.String = "302 396"
theDoc.Transform.Invert()
theDoc.AddText("Inverted")
theDoc.Save(Server.MapPath("transforminvert.pdf"))
theDoc.Clear()

transforminvert.pdf


Equals Function

Equals メソッド

2つの変換が同じか定義します。

Syntax

[C#]
override bool Equals(XTransform transform, double epsilon)
[Visual Basic]
Overrides Function Equals(transform As XTransform, epsilon As Double) As Boolean

Params
名称 | 説明
transform | この変換と比較される変換
epsilon | それでも同じだと定義される値の最大差異
戻り値 | 2つの変換が同じかどうか

Notes

2つの変換が同じか定義します。

変換には、浮動小数点数で表されている要素のセットが含まれています。浮動小数点数は丸め誤差の影響を受けるので、epsilon パラメータの値を使用して比較の許容範囲が決められます。2つの要素が epsilon パラメータの値よりも差異がある場合に限り、それらは同じではないと判断されます。

Example

ありません。


Magnify Function

Magnify メソッド

基準点を中心にして、変換処理のための座標のスケーリングを行います。

Syntax

[C#]
virtual void Magnify(double scaleX, double scaleY, double anchorX, double anchorY)
[Visual Basic]
Overridable Sub Magnify(scaleX As Double, scaleY As Double, anchorX As Double, anchorY As Double)

Params
名称 | 説明
scaleX | 水平方向のスケール値
scaleY | 垂直方向のスケール値
anchorX | 基準点の水平方向の値
anchorY | 基準点の垂直方向の値

Notes

このメソッドは基準点を中心にして、変換処理のための座標のスケーリングを行います。

この機能によりズームを行うことができます。

Example

下記のコードは、デフォルトの大きさで黒色のテキストと四角形を表示し、拡大して赤色のテキストと四角形を表示します。この時基準点をドキュメントの中心に設定しています。

[C#]
Doc theDoc = new Doc();
theDoc.Rect.Inset(200, 200);
theDoc.FontSize = 48;
theDoc.AddText("Normal");
theDoc.FrameRect();
theDoc.Rect.Move(0, -100);
theDoc.Color.String = "255 0 0";
theDoc.Transform.Magnify(2, 1.5, 302, 396);
theDoc.AddText("Magnified");
theDoc.FrameRect();
theDoc.Save(Server.MapPath("transformmagnify.pdf"));
theDoc.Clear();
[Visual Basic]
Dim theDoc As Doc = New Doc()
theDoc.Rect.Inset(200, 200)
theDoc.FontSize = 48
theDoc.AddText("Normal")
theDoc.FrameRect()
theDoc.Rect.Move(0, -100)
theDoc.Color.String = "255 0 0"
theDoc.Transform.Magnify(2, 1.5, 302, 396)
theDoc.AddText("Magnified")
theDoc.FrameRect()
theDoc.Save(Server.MapPath("transformmagnify.pdf"))
theDoc.Clear()

transformmagnify.pdf


PreMultiply Function

PreMultiply メソッド

この変換行列を指定した変換で左から掛けます。

Syntax

[C#]
virtual void PreMultiply(XTransform transform)
[Visual Basic]
Overridable Sub PreMultiply(transform as XTransform)

Params
名称 | 説明
transform | これと掛ける変換

Notes

この変換行列を指定した変換で左から掛けます。

最終結果はこの変換に含められます。

Mutiply メソッドを参照してください。

Example

ありません。


PostMultiply Function

PostMultiply メソッド

この変換行列を指定した変換で右から掛けます。

Syntax

[C#]
virtual void PostMultiply(XTransform transform)
[Visual Basic]
Overridable Sub PostMultiply(transform as XTransform)

Params
名称 | 説明
transform | これと掛ける変換

Notes

この変換行列を指定した変換で右から掛けます。

最終結果はこの変換に含められます。

PreMutiply メソッドを参照してください。

Example

ありません。


Reset Function

Reset メソッド

変換処理のための座標系の初期化を行います。

Syntax

[C#]
virtual void Reset()
[Visual Basic]
Overridable Sub Reset()

Params
名称 | 説明
なし |

Notes

このメソッドは、変換処理のための座標系の初期化を行います。

Example

下記のコードは、ドキュメントの中心を基準としてテキストを60度回転させて追加します。その後、座標系の初期化を行い別のテキストを追加します。2番目のテキストは回転していません。

[C#]
Doc theDoc = new Doc();
theDoc.Rect.Inset(10, 10);
theDoc.FontSize = 96;
theDoc.Transform.Rotate(60, 302, 396);
theDoc.Pos.String = "302 396";
theDoc.AddText("Angled");
theDoc.FrameRect();
theDoc.Transform.Reset();
theDoc.Pos.String = "302 396";
theDoc.AddText("Reset");
theDoc.FrameRect();
theDoc.Save(Server.MapPath("transformreset.pdf"));
theDoc.Clear();
[Visual Basic]
Dim theDoc As Doc = New Doc()
theDoc.Rect.Inset(10, 10)
theDoc.FontSize = 96
theDoc.Transform.Rotate(60, 302, 396)
theDoc.Pos.String = "302 396"
theDoc.AddText("Angled")
theDoc.FrameRect()
theDoc.Transform.Reset()
theDoc.Pos.String = "302 396"
theDoc.AddText("Reset")
theDoc.FrameRect()
theDoc.Save(Server.MapPath("transformreset.pdf"))
theDoc.Clear()

transformreset.pdf


Rotate Function

Rotate メソッド

基準点を中心にして座標系の回転を行います。（角度は度で指定します。）

Syntax

[C#]
virtual void Rotate(double angle, double anchorX, double anchorY)
[Visual Basic]
Overridable Sub Rotate(angle As Double, anchorX As Double, anchorY As Double)

Params
名称 | 説明
angle | 回転角度（度）
anchorX | 回転を行う水平方向の位置
anchorY | 回転を行う垂直方向の位置

Notes

基準点を中心にして座標系の回転を行います。角度は反時計方向に度で指定します。

Example

下記のコードは、テキストを45度づつ回転させて描画します。

[C#]
Doc theDoc = new Doc();
theDoc.FontSize = 48;
theDoc.TextStyle.Indent = 48;
for (int i = 1; i <= 8; i++) {
  int theAngle = i * 45;
  theDoc.Pos.String = "302 396";
  theDoc.Transform.Reset();
  theDoc.Transform.Rotate(theAngle, 302, 396);
  theDoc.AddText("Rotated " + theAngle.ToString());
}
theDoc.Save(Server.MapPath("transformrotate.pdf"));
theDoc.Clear();
[Visual Basic]
Dim theDoc As Doc = New Doc()
theDoc.FontSize = 48
theDoc.TextStyle.Indent = 48
For i As Integer = 1 To 8
  Dim theAngle As Integer = i * 45
  theDoc.Pos.String = "302 396"
  theDoc.Transform.Reset()
  theDoc.Transform.Rotate(theAngle, 302, 396)
  theDoc.AddText("Rotated " + theAngle.ToString())
Next
theDoc.Save(Server.MapPath("transformrotate.pdf"))
theDoc.Clear()

transformrotate.pdf


Skew Function

Skew メソッド

基準点を中心にして座標系に「傾き」（垂直方向と水平方向）を設定します。

Syntax

[C#]
virtual void Skew(double skewX, double skewY, double anchorX, double anchorY)
[Visual Basic]
Overridable Sub Skew(skewX As Double, skewY As Double, anchorX As Double, anchorY As Double)

Params
名称 | 説明
skewX | 水平方向に傾ける割合
skewY | 垂直方向に傾ける割合
anchorX | ストレッチを行うための基準点からの水平方向の移動量
anchorY | ストレッチを行うための基準点からの垂直方向の移動量

Notes

このメソッドは基準点を中心にして座標系に「傾き」（垂直方向と水平方向）を設定します。

Example

下記のコードは、黒い四角形を描画した後で、傾き処理を行って赤色の四角形を描画します。

[C#]
Doc theDoc = new Doc();
theDoc.Rect.Width = 200;
theDoc.Rect.Height = 250;
theDoc.Rect.Position(20, 20);
theDoc.Width = 20;
theDoc.FrameRect();
theDoc.Transform.Skew(1.5, 1.5, 20, 20);
theDoc.Color.String = "255 0 0"; // red
theDoc.FrameRect();
theDoc.Save(Server.MapPath("transformskew.pdf"));
theDoc.Clear();
[Visual Basic]
Dim theDoc As Doc = New Doc()
theDoc.Rect.Width = 200
theDoc.Rect.Height = 250
theDoc.Rect.Position(20, 20)
theDoc.Width = 20
theDoc.FrameRect()
theDoc.Transform.Skew(1.5, 1.5, 20, 20)
theDoc.Color.String = "255 0 0" ' red
theDoc.FrameRect()
theDoc.Save(Server.MapPath("transformskew.pdf"))
theDoc.Clear()

transformskew.pdf


SetTransform Function

SetTransform メソッド

変換を設定します。

Syntax

[C#]
virtual void SetTransform(double m11, double m12, double m21, double m22, double tx, double ty)
virtual void SetTransform(XTransform transform)
[Visual Basic]
Overridable Sub SetTransform(m11 As Double, m12 As Double, m21 As Double, m22 As Double, tx As Double, ty As Double)
Overridable Sub SetTransform(transform As XTransform)

Params
名称 | 説明
m11 | 新しい水平方向のスケーリング
m12 | 新しい垂直方向の傾き
m21 | 新しい水平方向の傾き
m22 | 新しい垂直方向のスケーリング
tx | 新しい水平方向の移動
ty | 新しい垂直方向の移動
transform | ソースとなる変換

Notes

変換を設定します。

Example

ありません。


TransformPoints Function

TransformPoints メソッド

指定したポイント配列にこの変換を適用します。

Syntax

[C#]
override void TransformPoints(Point[] points)
override void TransformPoints(PointF[] points)
override void TransformPoints(XPointF points)
[Visual Basic]
Overrides Sub TransformPoints(points As Point())
Overrides Sub TransformPoints(points As PointF())
Overrides Sub TransformPoints(points As XPoint())

Params
名称 | 説明
points | 変換されるポイント配列

Notes

指定したポイント配列にこの変換を適用します。

このメソッドと System.Drawing.Drawing2D Matrix.TransformPoints メソッドの動作は同じです。

Example

ありません。


Translate Function

Translate メソッド

座標系を水平方向と垂直方向に移動します。

Syntax

[C#]
virtual void Translate(double x, double y)
[Visual Basic]
Overridable Sub Translate(x As Double, y As Double)

Params
名称 | 説明
x | 水平方向の移動量
y | 垂直方向の移動量

Notes

このメソッドは座標系を水平方向と垂直方向に移動します。

Example

下記のコードは、黒い四角形を描画した後に、座標系を移動することにより新しい位置にその四角形が赤色で描画されます。

[C#]
Doc theDoc = new Doc();
theDoc.Rect.Width = 200;
theDoc.Rect.Height = 250;
theDoc.Rect.Position(100, 100);
theDoc.Width = 20;
theDoc.FrameRect();
theDoc.Transform.Translate(200, 200);
theDoc.Color.String = "255 0 0"; // red
theDoc.FrameRect();
theDoc.Save(Server.MapPath("transformtranslate.pdf"));
theDoc.Clear();
[Visual Basic]
Dim theDoc As Doc = New Doc()
theDoc.Rect.Width = 200
theDoc.Rect.Height = 250
theDoc.Rect.Position(100, 100)
theDoc.Width = 20
theDoc.FrameRect()
theDoc.Transform.Translate(200, 200)
theDoc.Color.String = "255 0 0" ' red
theDoc.FrameRect()
theDoc.Save(Server.MapPath("transformtranslate.pdf"))
theDoc.Clear()

transformtranslate.pdf


String Property

String プロパティ

型 | デフォルト値 | 読み取り専用 | 説明
[C#] string [Visual Basic] String | "1 0 0 1 0 0" | いいえ | 変換要素の文字列

Notes

座標系の変換処理の要素を文字列で設定します。

文字列の形式は、"m11 m12 m21 m22 mX mY" となります。

変換前の座標値を 「x, y」、変換後の座標値を 「x', y'」 とすると、

  x' = (x * m11) + (y * m21) + mX
  y' = (x * m12) + (y * m22) + mY

のようになります。

Example

ありません。


AngleUnit Property

AngleUnit プロパティ

型 デフォルト値 読み取り専用 説明
[C#]
AngleUnitType

[Visual Basic]
AngleUnitType
Degrees いいえ 角度の単位（度数またはラジアン）

Notes

Rotate メソッドで使用する角度の単位を指定します。

AngleUnitType 列挙体は次の値を取得できます。

  • Degrees
  • Radians

Example

[C#]
Doc doc = new Doc();
doc.FontSize=96;
doc.HPos=0.5;
doc.VPos=0.5;
doc.Transform.Rotate(90, doc.Rect.Width/2, doc.Rect.Height/2);
doc.TextStyle.Underline = true;
doc.AddText("Hello World rotated by 90 degrees");
doc.Page = doc.AddPage();
doc.Transform.AngleUnit = WebSupergoo.ABCpdf9.XTransform.AngleUnitType.Radians;
doc.Transform.Rotate(-1 * Math.PI/2, doc.Rect.Width / 2, doc.Rect.Height / 2);
doc.AddText("Hello World rotated back by PI/2 radians");
doc.Save(Server.MapPath("transformrotate.pdf"));

[Visual Basic]
Dim doc as New Doc()
doc.FontSize=96
doc.HPos=0.5
doc.VPos=0.5
doc.Transform.Rotate(90, doc.Rect.Width/2, doc.Rect.Height/2)
doc.TextStyle.Underline = True
doc.AddText("Hello World rotated by 90 degrees")
doc.Page = doc.AddPage()
doc.Transform.AngleUnit = WebSupergoo.ABCpdf9.XTransform.AngleUnitType.Radians
doc.Transform.Rotate(-1 * Math.PI/2, doc.Rect.Width / 2, doc.Rect.Height / 2)
doc.AddText("Hello World rotated back by PI/2 radians")
doc.Save(server.MapPath("transformrotate.pdf"))

transforrotate.pdf, page 1

transforrotate.pdf, page 2


Elements Property

Elements プロパティ

型 デフォルト値 読み取り専用 説明
[C#]
double[]

[Visual Basic]
Double() 		なし いいえ 浮動小数点の値の配列として変換

Notes

浮動小数点の値の配列として変換します。

Windows の座標の原点は左上ですが、PDF の基本座標の原点はドキュメントの左下になります。

Windows の座標ではなく、基本の PDF 座標で変換されるので注意してください。つまり原点を中心に回転させた場合、ドキュメントの左下を中心に回転します。

Example

ありません。


Matrix プロパティ
型 | デフォルト値 | 読み取り専用 | 説明
[C#] Matrix [Visual Basic] Matrix | なし | いいえ | .NET の行列として変換

Notes

System.Drawing.Drawing2D Matrix の変換

Windows の座標の原点は左上ですが、PDF の基本座標の原点はドキュメントの左下になります。

Windows の座標ではなく、基本の PDF 座標で変換されるので注意してください。つまり原点を中心に回転させた場合、ドキュメントの左下を中心に回転します。

Example

ありません。


OffsetX Property

OffsetX プロパティ

型 | デフォルト値 | 読み取り専用 | 説明
[C#] double [Visual Basic] Double | 0 | はい | 水平方向の移動

Notes

水平方向の移動にアクセスできます。

Example

ありません。


OffsetY Property

OffsetY プロパティ

型 | デフォルト値 | 読み取り専用 | 説明
[C#] double [Visual Basic] Double | 0 | はい | 垂直方向の移動

Notes

垂直方向の移動にアクセスできます。

Example

ありません。


IndirectObject Class

IndirectObject オブジェクト

PDF の間接オブジェクト。

PDF は多くの基本タイプのオブジェクトをサポートします。他のオブジェクトがオブジェクトを参照できるようにラベルが付けられていることがあります。このようなオブジェクトは間接オブジェクトと呼ばれています。

ABCpdf は他のネームスペースとの衝突を避けるために違う名前を使用しています。ラベルの付いていないオブジェクトは基本データの要素を含んでおり、Atoms と呼ばれます。

間接オブジェクトは、「PDF オブジェクト」または短縮して「オブジェクト」と呼ばれます。コンテンツ レイヤー、フォントや注釈など、PDF オブジェクトには様々なタイプがあります。各オブジェクトはデータを表現する Atom を含んでいます。

間接オブジェクトは ObjectSoup に格納されています。これは Array や Dictionary の特性を部分的に持っている、従来とは異なるコレクションです。

System.Object
   WebSupergoo.ABCpdf9.Objects.IndirectObject
      WebSupergoo.ABCpdf9.Objects.Annotation
      WebSupergoo.ABCpdf9.Objects.Bookmark
      WebSupergoo.ABCpdf9.Objects.Catalog
      WebSupergoo.ABCpdf9.Objects.ColorSpace
      WebSupergoo.ABCpdf9.Objects.Field
      WebSupergoo.ABCpdf9.Objects.FontObject
      WebSupergoo.ABCpdf9.Objects.Outline
      WebSupergoo.ABCpdf9.Objects.Page
      WebSupergoo.ABCpdf9.Objects.Pages
      WebSupergoo.ABCpdf9.Objects.StreamObject

Implements: ICloneable, IDisposable

メソッド | 説明
S» FromString | 指定した文字列から適切な IndirectObject のタイプを作成します
IndirectObject | IndirectObject コンストラクタ
Dispose | IndirectObject を解放します
Clone | 現在の IndirectObject のコピーを作成します
Equals | 2つの IndirectObject が同一かを確認します
GetHashCode | IndirectObject のハッシュコードを取得します
Resolve | 間接参照の解決と Atom を返します
ResolveRef | 間接参照の解決と RefAtom を返します
ResolveObj | 間接参照の解決と IndirectObject を返します
ToString | IndirectObject の文字列を返します

プロパティ | 説明
ID | PDF オブジェクトの ID
Gen | PDF オブジェクトを作成します
Atom | IndirectObject に格納する Atom
Version | オブジェクトのサポートに最低限必要な PDF のバージョン
Revision | このオブジェクトが保存されている PDF
Alive | IndirectObject が現在有効か確認します
Doc | IndirectObject を含んでいる Doc
AdbeExtLevel | オブジェクトのサポートに最低限必要な PDF の Adobe Supplement の拡張レベル


FromString メソッド

指定した文字列から適切な IndirectObject のタイプを作成します。

Syntax

[C#]
static IndirectObject FromString(string value)
[Visual Basic]
Shared Function FromString(value As String) As IndirectObject

Params
名称 | 説明
value | オブジェクトの値を示す文字列
戻り値 | IndirectObject を返します。

Notes

このメソッドに渡すテキストはネイティブな PDF フォーマットにしてください。従って、文字列の中に一般的でないキャラクタがあれば、エスケープシーケンスによって処理する必要があります。

PDF の詳細については、PDF Reference を参照してください。

Example

ありません。


IndirectObject コンストラクタ

IndirectObject コンストラクタ

Syntax

[C#]
IndirectObject()
[Visual Basic]
Sub New()

Params
名称 | 説明
なし |

Notes

NullAtom を含む間接オブジェクトを作成します。

通常は、オブジェクトを使用する前に NullAtom を交換する必要があります。

Example

ありません。


Dispose Function

Dispose メソッド

オブジェクトを解放します。

Syntax

[C#]
void Dispose()
protected virtual void Dispose(bool disposing)
[Visual Basic]
Sub Dispose()
Protected Overridable Sub Dispose(disposing As Boolean)

Params
名称 | 説明
なし |

Notes

このメソッドは、強制的にオブジェクトを解放して、ガーベージ・コレクションのサイズを小さくします。

このメソッドは、IDisposable インタフェースを実装するオブジェクトの基本的なデザインパターンに基づいています。このメソッドは追加したオブジェクトを解放するサブクラスでオーバーライドすることができます。

このメソッドを呼び出した後でオブジェクトを使用しないでください。

Example

ありません。


Clone メソッド

現在の IndirectObject のコピーを作成します。

Syntax

[C#]
IndirectObject Clone()
[Visual Basic]
Function Clone() As IndirectObject

Params
名称 | 説明
戻り値 | 作成した最新のコピー

Notes

このメソッドはオブジェクトのインスタンスをコピーして新しいオブジェクトを作成します。

これは、オブジェクトが含む全てをコピーします。コピーはどの ObjectSoup にも関連付けられません。

Example

ありません。


Equals Function

Equals メソッド

2つの IndirectObject が同一かを確認します

Syntax

[C#]
override bool Equals(object obj);
[Visual Basic]
Overrides Function Equals(obj As Object) As Boolean

Params
名称 | 説明
obj | 確認対象のオブジェクト
戻り値 | オブジェクトが同一なら True を返します。

Notes

指定したオブジェクトが現在のオブジェクトと同一か確認します。

PDF ドキュメントの同じオブジェクトを参照している場合、オブジェクトが同一であると見なされます。このメソッドは、値ではなく、オブジェクトが同一かを確認します。

Example

ありません。


GetHashCode Function

GetHashCode メソッド

IndirectObject のハッシュコードを取得します。

Syntax

[C#]
override int GetHashCode()
[Visual Basic]
Overrides Function GetHashCode() As Integer

Params
名称 | 説明
戻り値 | ハッシュコード

Notes

ハッシュテーブルのようなアルゴリズムやデータ構造で使われるハッシュコードを取得します。

Example

ありません。


Resolve メソッド

間接参照の解決と Atom を返します。

Syntax

[C#]
Atom Resolve(Atom atom)
[Visual Basic]
Function Resolve(atom As Atom) As Atom

Params
名称 | 説明
atom | 解決する Atom
戻り値 | 最後のAtom。Atomが見つからない場合は null。

Notes

Atoms は2つの基本型からなっています。NumAtoms と NameAtoms のようなデータアトムは実際のデータを保持しています。RefAtoms は他の Atom を保持する IndirectObject への参照を保持しています。

データへの参照より、実際のデータが必要な場合、この Resolve メソッドを使用してください。

このメソッドは Atom を取得します。もしこれが RefAtom なら、これが指し示す Atom を検索します。このメソッドは連続している最後のデータ Atom を検索するまで動作します。

パラメータに null を設定した場合や RefAtom が解決されなかった場合、また循環依存が検出された場合、このメソッドは null を返します。

このメソッドが IndirectObject のメンバーである理由は、RefAtoms の解決が ObjectSoup へのアクセスを必要とするからです。ObjectSoup は IndirectObject から取得されます。

Example

ありません。


ResolveRef メソッド

間接参照の解決と RefAtom を返します。

Syntax

[C#]
RefAtom ResolveRef(Atom atom)
[Visual Basic]
Function ResolveRef(atom As Atom) As RefAtom

Params
名称 | 説明
atom | 解決する Atom
戻り値 | 最後の RefAtom。有効な RefAtom が見つからない場合は null。

Notes

Atoms は2つの基本型からなっています。NumAtoms と NameAtoms のようなデータアトムは実際のデータを保持しています。RefAtoms は他の Atom を保持する IndirectObject への参照を保持しています。

連続している一番最後の参照が必要な場合、この ResolveRef メソッドを使用してください。

このメソッドは Atom を取得します。もしこれが RefAtomなら、これが指し示す Atom を検索します。このメソッドは連続している最後の IndirectObject まで検索し、IndirectObject の参照を行う RefAtom を返します。

パラメータに null を設定した場合や RefAtom が解決されなかった場合、また循環依存が検出された場合、このメソッドは null を返します。

このメソッドが IndirectObject のメンバーである理由は、RefAtoms の解決が ObjectSoup へのアクセスを必要とするからです。ObjectSoup は IndirectObject から取得されます。

Example

ありません。


ResolveObj Function

ResolveObj メソッド

間接参照の解決と IndirectObject を返します。

Syntax

[C#]
IndirectObject ResolveObj(Atom atom)
[Visual Basic]
Function ResolveObj(atom As Atom) As IndirectObject

Params
名称 | 説明
atom | 解決する Atom
戻り値 | 最後の IndirectObject。有効なオブジェクトが見つからない場合は null。

Notes

Atoms は2つの基本型からなっています。NumAtoms や NameAtoms のようなデータアトムは実際のデータを保持しています。RefAtoms は他の Atom を保持する IndirectObject への参照を保持しています。

連続している一番最後の参照が必要な場合、この ResolveObj メソッドを使用してください。

このメソッドは Atom を取得します。もしこれが RefAtom なら、これが指し示す Atom を検索します。このメソッドは連続している最後の IndirectObject まで検索してこの IndirectObject を返します。

パラメータに null を設定した場合や RefAtom が解決されなかった場合、また循環依存が検出された場合、このメソッドは null を返します。

このメソッドが IndirectObject のメンバーである理由は、RefAtoms の解決が ObjectSoup へのアクセスを必要とするからです。ObjectSoup は IndirectObject から取得されます。

Example

ありません。


ToString Function

ToString メソッド

IndirectObject の文字列を返します。

Syntax

[C#]
override string ToString()
[Visual Basic]
Overrides Function ToString() As String

Params
名称 | 説明
戻り値 | オブジェクトの文字列

Notes

このメソッドは、最終の PDF ドキュメントにオブジェクトが挿入されるようにオブジェクトの内容を取得します。

オブジェクトの文字列の値が大きかったり、珍しい文字を含む場合があるので注意してください。

Example

ありません。


ID プロパティ
型 | デフォルト値 | 読み取り専用 | 説明
[C#] int [Visual Basic] Integer | なし | はい | PDF オブジェクトの ID

Notes

PDF オブジェクトのユニークな ID をあらわします。

Example

ありません。


Gen プロパティ
型 | デフォルト値 | 読み取り専用 | 説明
[C#] int [Visual Basic] Integer | なし | はい | PDF オブジェクトの作成

Notes

PDF オブジェクトを作成します。

Example

ありません。


Atom プロパティ
型 | デフォルト値 | 読み取り専用 | 説明
[C#] Atom [Visual Basic] Atom | なし | いいえ | IndirectObject に格納される Atom

Notes

IndirectObject に格納されるAtom をあらわします。

一度に1つのオブジェクトにしか Atom を含めることはできません。従って、このプロパティに新しい Atom を割り当てて、その Atom が他のオブジェクトに含まれている場合、その Atom のクローンが挿入されます。

Example

ありません。


Version プロパティ
型 | デフォルト値 | 読み取り専用 | 説明
[C#] int [Visual Basic] Integer | 1 | いいえ | このオブジェクトのサポートに最低限必要な PDF のバージョン

Notes

このオブジェクトのサポートに最低限必要な PDF のバージョンを表します。

例えば、このプロパティが 3 の場合、PDF 1.3 のブラウザが必要となります。Adobe Acrobat 4 は、PDF 1.3 をサポートする最初のブラウザでした。

Example

ありません。


Revision Property

Revision プロパティ

型 | デフォルト値 | 読み取り専用 | 説明
[C#] int [Visual Basic] Integer | 0 | はい | このオブジェクトが保存されている PDF

Notes

このオブジェクトが保存されている PDF。

元の PDF を上書きするのではなく変更が付加されるように、PDF を増分更新することができます。つまり、1つ前の PDF に戻すことができます。この機能は、主に PDF の署名をする時に前の署名が消されないようにするために使われます。

一番古い更新に含まれているオブジェクトの Revision の値は1で、値が大きくなるほど最近の更新ということになります。0は、そのオブジェクトがストリームから読み込まれなかったことを表します。

Example

ありません。


Alive プロパティ
型 | デフォルト値 | 読み取り専用 | 説明
[C#] bool [Visual Basic] Boolean | なし | はい | IndirectObject が現在有効か確認します

Notes

IndirectObject が現在有効か確認します。

PDF ドキュメントに含まれているオブジェクトが有効か確認します。作成されたり複製されたオブジェクトが、まだ PDF に割り当てられていない場合は有効とはみなされません。

Example

ありません。


Doc プロパティ
型 | デフォルト値 | 読み取り専用 | 説明
[C#] Doc [Visual Basic] Doc | 利用不可 | はい | IndirectObject を Doc に含めるか定義します

Notes

IndirectObject を Doc に含めるか定義します。

メモ： IndirectObject は通常 Doc オブジェクトに格納されますが、それが Doc から分離される場合があります。この場合、このプロパティは null を返します。

Example

ありません。


AdbeExtLevel Property

AdbeExtLevel プロパティ

型 デフォルト値 読み取り専用 説明
[C#]
int[]

[Visual Basic]
Integer() 		null いいえ このオブジェクトのサポートに最低限必要な PDF の Adobe Supplement の拡張レベル

Notes

このオブジェクトのサポートに最低限必要な PDF の Adobe Supplement の拡張レベルを表します。

値は null か、要素が2つなければなりません。null の場合、オブジェクトの取得には Adobe 拡張レベルは必要ありません。オブジェクトの設定には拡張レベルを削除する必要があります。最初の要素がベースバージョンで、2つ目の要素が拡張レベルです。

例えば、ベースバージョンが 7 で拡張レベルが 3 であれば、PDF 1.7 、Adobe 拡張レベル 3 が必要だということです。Adobe Reader 9.1 は、これをサポートする最初のブラウザでした。

Example

ありません。


ObjectSoup Class

ObjectSoup クラス

PDF のコンテンツを構成する 間接オブジェクトのコレクション。

このコレクションは配列と辞書の特性を部分的に持っています。オブジェクトは配列のようにゼロから始まるインデックスで参照されます。しかし、辞書のキーのように ObjectSoup のインデックスはオブジェクトを識別します。

ハイブリッドオブジェクトのこのタイプを Soup と呼びます。従来のインタフェースをより簡単に使えるように割り当てます。

System.Object
   WebSupergoo.ABCpdf9.Objects.ObjectSoup

Implements: IList<IndirectObject>, ICollection<IndirectObject>, IEnumerable<IndirectObject>, IList, ICollection, IEnumerable, IDisposable

メソッド | 説明
Dispose | Soup を解放します
CopyTo | Soup のオブジェクトを配列にコピーします
Add | Soup にオブジェクトを追加します
Clear | Soup からすべてのオブジェクトを削除します
Contains | Soup が指定したオブジェクトを含んでいるか確認します
IndexOf | Soup 内の特定のオブジェクトのインデックスを取得します
Throws Exceptions Insert | Soup の指定した位置にオブジェクトを挿入します
Remove | Soup からオブジェクトを削除します
Throws Exceptions RemoveAt | Soup から指定した位置のオブジェクトを削除します
GetEnumerator | Soup の列挙子を取得します

プロパティ | 説明
Count | Soup の項目数を取得します
Throws Exceptions Item | 指定したインデックス位置にあるオブジェクトを取得/設定します
Catalog | ドキュメントのカタログ
Trailer | ドキュメントのトレ－ラー/ XRef
Revisions | 増分更新の回数


Dispose Function

Dispose メソッド

オブジェクトを解放します。

Syntax

[C#]
void Dispose()
protected virtual void Dispose(bool disposing)

[Visual Basic]
Sub Dispose()
Protected Overridable Sub Dispose(disposing As Boolean)

Params
名称 | 説明
なし |

Notes

このメソッドは強制的にオブジェクトを解放して、ガーベージ・コレクションを小さくします。

このメソッドは IDisposable インターフェイスを実装するオブジェクトの基本的なデザインパターンに基づいています。このメソッドは追加したオブジェクトを解放するサブクラスでオーバーライドすることができます。

このメソッドを呼び出した後でオブジェクトを使用しないでください。

Example

ありません。


CopyTo Function

CopyTo メソッド

Soup 内のオブジェクトを配列にコピーします。

Syntax

[C#]
void CopyTo(IndirectObject[] array, int index)
[Visual Basic]
Sub CopyTo(array As IndirectObject(), index As Integer)

Params
名称 | 説明
array | コピー先のオブジェクト配列
index | コピーを開始するゼロから始まる配列のインデックス

Notes

Soup の要素を指定した配列にコピーします。

配列は一次元で、ゼロから始まるインデックスにしなければなりません。

Example

ありません。


Add メソッド

Soup にオブジェクトを追加します。

Syntax

[C#]
int Add(IndirectObject value)
[Visual Basic]
Function Add(value As IndirectObject) As Integer

Params
名称 | 説明
value | 追加する IndirectObject
戻り値 | IndirectObject が追加された位置

Notes

Soup にIndirectObject を追加します。

IndirectObject は、一度に1つの ObjectSoup しか存在できません。そのオブジェクトが既に他の ObjectSoup に存在している場合、オブジェクトのクローンが挿入されます。

IndirectObject が挿入されると、ID はその Soup 内のオブジェクトの位置を反映するために更新を行います。

Example

ありません。


Clear Function

Clear メソッド

Soup からすべてのオブジェクトを削除します。

Syntax

[C#]
void Clear()
[Visual Basic]
Sub Clear()

Params
名称 | 説明
なし |

Notes

Soup からすべての IndirectObject を削除します。 配列のインデックスがゼロの Null オブジェクトのみ保存されます。

Example

ありません。


Contains Function

Contains メソッド

Soup が特定のオブジェクトを含んでいるか確認します

Syntax

[C#]
bool Contains(IndirectObject value)
[Visual Basic]
Function Contains(value As IndirectObject) As Boolean

Params
名称 | 説明
value | 確認するオブジェクト
戻り値 | オブジェクトが見つかった場合 True、そうでない場合は False

Notes

Soup が特定のオブジェクトを含んでいるか確認します。

Example

ありません。


IndexOf Function

IndexOf メソッド

Soup 内の特定のオブジェクトのインデックスを取得します。

Syntax

[C#]
int IndexOf(IndirectObject value)
[Visual Basic]
Function IndexOf(value As IndirectObject) As Integer

Params
名称 | 説明
value | Soup 内で確認するオブジェクト
戻り値 | 見つかった場合、値のインデックス。そうでない場合-1。

Notes

Soup 内の特定のオブジェクトのインデックスを取得します。

Example

ありません。


Insert メソッド

Soup の指定した位置にオブジェクトを挿入します。

Syntax

[C#]
void Insert(int index, IndirectObject value)
[Visual Basic]
Sub Insert(index As Integer, value As IndirectObject)

Throws Exceptions エラーの場合、NotSupportedException() が発生します。

Params
名称 | 説明
index | オブジェクトを挿入する、ゼロから始まるインデックス
戻り値 | Soup に挿入したオブジェクト

Notes

コレクション内のオブジェクトは、インデックスにより互いに参照し合います。つまり、一度オブジェクトが Soup に挿入されたらそのオブジェクトは同じインデックスを保持しなければなりません。そのオブジェクトを移動した場合、参照できなくなる恐れがあります。

指定した位置に挿入する際に、他のオブジェクトを移動したい場合があります。しかし、前述の理由のため NotSupportedException のエラーが発生します。

Example

ありません。


Remove Function

Remove メソッド

Soup からオブジェクトを削除します。

Syntax

[C#]
bool Remove(IndirectObject value)
[Visual Basic]
Function Remove(value As IndirectObject) As Boolean

Params
名称 | 説明
value | 削除される IndirectObject
戻り値 | IndirectObject が削除された場合は true、それ以外は false を返します

Notes

オブジェクトが削除されると Soup 内に隙間ができます。他のオブジェクトが移動してその隙間を埋めることはしません。

削除したオブジェクトを指定している RefAtoms は更新されません。しかしオブジェクトを削除して、その削除したオブジェクトを他のもので置き換えることができます。こうすることにより Soup 内の他の IndirectObject は、前のオブジェクトではなく新しいオブジェクトを参照することができます。

オブジェクトの削除とその置き換えを正しく行わないと、その隙間がフリー状態になるので、それが再利用されたり、他の不適当なオブジェクトから参照されたりします。

Example

ありません。


RemoveAt メソッド

Soup から指定した位置のオブジェクトを削除します。

Syntax

[C#]
void RemoveAt(int index)
[Visual Basic]
Sub RemoveAt(index As Integer)

Throws Exceptions エラーの場合、ArgumentOutOfRangeException() が発生します。

Params
名称 | 説明
index | 削除する項目のゼロから始まるインデックス

Notes

インデックスが有効でない場合、ArgumentOutOfRangeException のエラーが発生します。

オブジェクトが削除されると Soup 内に隙間ができます。他のオブジェクトが移動してその隙間を埋めることはしません。

削除したオブジェクトを指定しているRefAtoms は更新しません。しかしオブジェクトを削除して、その削除したオブジェクトを他のもので置き換えることができます。こうすることにより Soup 内の他の IndirectObject は、前のオブジェクトではなく新しいオブジェクトを参照することができます。

オブジェクトの削除とその置き換えを正しく行わないと、その隙間がフリー状態になるので、それが再利用されたり、他の不適当なオブジェクトが参照されたりします。

Example

ありません。


GetEnumerator Function

GetEnumerator メソッド

Soup の列挙子を取得します。

Syntax

[C#]
IEnumerator<IndirectObject> GetEnumerator()
[Visual Basic]
Function GetEnumerator() As IEnumerator(Of IndirectObject)

Params
名称 | 説明
戻り値 | コレクションの列挙子

Notes

Soup の IndirectObject の列挙子を取得します。

Example

ありません。


Count プロパティ
型 | デフォルト値 | 読み取り専用 | 説明
[C#] int [Visual Basic] Integer | なし | はい | Soup の項目数を取得します。

Notes

Soup の項目数を取得します。

オブジェクトがコレクションに追加されると、 Count は増加します。

コレクションは Null 値や IndirectObjects を含んでいます。

Example

ありません。


Item プロパティ
型 | デフォルト値 | 読み取り専用 | 説明
[C#] IndirectObject this[int index] [Visual Basic] Default Property Item(index As Integer) As IndirectObject | なし | いいえ | 指定したインデックス位置にあるオブジェクトを取得または設定します。

Throws Exceptions エラーの場合、ArgumentOutOfRangeException() が発生します。

Notes

指定したインデックス位置にある IndirectObject を取得または設定します。C# 言語では、このプロパティは ObjectSoup クラスのインデクサになります。

IndirectObject は、一度に1つの ObjectSoup の中にしか存在できません。その IndirectObject が既に他の ObjectSoup に存在している場合、IndirectObject のクローンが挿入されます。

IndirectObject が挿入されると、ID はその Soup 内のオブジェクトの位置を反映するために更新を行います。

Example

ありません。


Catalog プロパティ
型 | デフォルト値 | 読み取り専用 | 説明
[C#] Catalog [Visual Basic] Catalog | なし | はい | ドキュメントのカタログ

Notes

ドキュメントのCatalog をあらわします。

Catalog は PDF ドキュメント全体のルートにあたります。ルートのPages オブジェクトとOutline オブジェクトの情報を含んでいます。

Example

ありません。


Trailer プロパティ
型 | デフォルト値 | 読み取り専用 | 説明
[C#] StreamObject [Visual Basic] StreamObject | なし | はい | ドキュメントのトレーラー / XRef

Notes

ドキュメントのトレーラーや XRef のStreamObject をあらわします。

PDF 1.4 のドキュメントにはトレーラー辞書、PDF 1.5 のドキュメントには XRef ストリームがあります。ABCpdf は XRef ストリームだけを使用しますが、PDF 1.4 ドキュメントを書き込む場合、XRef を標準のトレーラーに変換してから出力します。

Example

ありません。


Revisions Property

Revisions プロパティ

型 | デフォルト値 | 読み取り専用 | 説明
[C#] int [Visual Basic] Integer | なし | はい | 増分更新の回数

Notes

増分更新の回数。

コレクションのどのオブジェクトも、これより大きい値の IndirectObject.Revision は持ちません。

しかし、稀ではありますがオブジェクトのない PDF 更新もあり得ます。

Example

ありません。


Annotation Class

Annotation クラス

テキストやハイパーリンクなどの注釈

System.Object
   WebSupergoo.ABCpdf9.Objects.IndirectObject
      WebSupergoo.ABCpdf9.Objects.Annotation

メソッド | 説明
GetFieldOptions | 注釈に関連付けられているフォームフィールドのオプション
UpdateAppearance | 注釈の外観ストリームを更新します。
 | 継承されたメソッド...

プロパティ | 説明
Contents | 目に見える注釈のテキスト
FullName | 注釈に関連付けられているフォームフィールドのフルネーム
Page | 注釈を置くページ
Rect | ページの注釈の位置や領域を定義する四角形
SubType | 注釈のサブタイプ
FieldType | 注釈に関連付けられているフォームフィールドのタイプ
FieldValue | 注釈に関連付けられているフォームフィールドの値
 | 継承されたプロパティ...


GetFieldOptions メソッド

注釈に関連するフォームフィールドのオプションを取得します。

Syntax

[C#]
string[] GetFieldOptions()
[Visual Basic]
Function GetFieldOptions() As String()

Params
名称 | 説明
戻り値 | フィールドオプションのリスト

Notes

注釈に関連するフォームフィールドのオプションを取得します。

通常、FieldValue を使用して値を割り当てます。Text フィールドのようにどんな値でも設定できるフィールドもありますが、CheckBox や ListBox のようにオプションの制限がある範囲しか設定できないフィールドもあります。このメソッドを使用して、これらのオプションを取得できます。

CheckBox や RadioButton が指定されていない時は常にオフです。指定されると、このメソッドは使用可能になります。このメソッドは、フィールドのこのタイプに1つの項目の配列を常に返します。

このプロパティを使用してコンボボックスやリストボックスのオプションの設定を取得できます。このメソッドは可能な値があるのと同数の項目を返します。

Pushbutton、Signature、Text フィールドに関してはオプションはありません。

Example

ありません。


UpdateAppearance メソッド

注釈の外観ストリームを更新します。

Syntax

[C#]
void UpdateAppearance()
[Visual Basic]
Sub UpdateAppearance()

Params
名称 | 説明
なし | なし

Notes

注釈の外観ストリームを更新します。

注釈の表示または印刷時にどのように表示するかを定義する外観ストリームが注釈にはよくあります。

ABCpdf は色々な注釈型を認識し、必要に応じて合ったストリームを作成することができます。このメソッドを呼び出すと外観ストリームが更新されるか、ストリームがない場合は作成されます。

Example

ありません。


Contents プロパティ
型 | デフォルト値 | 読み取り専用 | 説明
[C#] string [Visual Basic] String | なし | はい | 目に見える注釈のテキスト

Notes

目に見える注釈のテキストを表します。

注釈のサブタイプがテキストを表示しない場合は、このフィールドに別の注釈のテキストを入れてください。

Example

ありません。


FieldType プロパティ
型 | デフォルト値 | 読み取り専用 | 説明
[C#] string [Visual Basic] String | なし | はい | 注釈に関連付けられているフォームフィールドのタイプ

Notes

注釈に関連するフォームフィールドのタイプをあらわします。

次のフィールドタイプが使用可能です。

  • "Pushbutton"
  • "Checkbox"
  • "Radio"
  • "Text"
  • "List"
  • "Combo"
  • "Signature"
  • "Unknown"

PDF Reference のセクション 8.6.3 で、これらのフィールドタイプの詳細が記載されています。

Example

ありません。


FieldValue プロパティ
型 | デフォルト値 | 読み取り専用 | 説明
[C#] string [Visual Basic] String | なし | いいえ | 注釈に関連付けられているフォームフィールドの値

Notes

注釈に関連付けられているフォームフィールドの値をあらわします。

このプロパティを使用することにより、フォームフィールドに値を設定したり取得したり出来ます。

GetFieldOptions により、CheckBox や RadioButton はオンやオフの状態になります。

Text フィールドには値が設定されます。

GetFieldOptions により、BomboBox や ListBox から選択ができます。

Pushbutton と Signature には値がありません。

Example

ありません。


FullName プロパティ
型 | デフォルト値 | 読み取り専用 | 説明
[C#] string [Visual Basic] String | なし | はい | 注釈に関連付けられているフォームフィールドのフルネーム

Notes

注釈に関連付けられているフォームフィールドのフルネームをあらわします。

この値はユニークでなくても結構です。

Example

ありません。


Page プロパティ
型 | デフォルト値 | 読み取り専用 | 説明
[C#] Page [Visual Basic] Page | なし | はい | 注釈を置くページ

Notes

注釈を置く Page をあらわします。

Example

ありません。


Rect プロパティ
型 | デフォルト値 | 読み取り専用 | 説明
[C#] XRect [Visual Basic] XRect | なし | はい | ページの注釈の位置や領域を定義する四角形

Notes

ページの注釈の位置や領域を定義する XRect をあらわします。

この四角形は PDF の座標系で定義されます。

Example

ありません。


SubType プロパティ
型 | デフォルト値 | 読み取り専用 | 説明
[C#] string [Visual Basic] String | なし | はい | 注釈のサブタイプ

Notes

注釈のサブタイプをあらわします。

これらは、Text、Link、Widget、または、PDF Reference のセクション 8.4.5 で記載されている多くのタイプです。

Example

ありません。


Bookmark Class

Bookmark クラス

ブックマークまたは概要の項目。

通常 PDF ドキュメントにはページ間を容易に移動するためのブックマークのリストがあります。Acrobat では、このナビゲートはブックマークタブにあります。PDFの仕様ではこの構造をドキュメントの概要と呼びます。

ドキュメントの概要はブックマークの階層構造で構成されています。階層構造の上部にあるブックマークは Doc.Bookmark プロパティを使用して利用することができます。通常ブックマークは特定ページにナビゲートしますが、場合によっては別の更に複雑な動作を引き起こす場合があります。

すべてのブックマークには、その子であるブックマーク全てのコレクションを含んでいます。全てのコレクションに対して、Count プロパティを使用して含まれているブックマークの数を定義したり、プログラム言語に合った標準のメソッドを使用してコレクションをループすることができます。

System.Object
   WebSupergoo.ABCpdf9.Objects.IndirectObject
      WebSupergoo.ABCpdf9.Objects.Bookmark

Implements: IList<Bookmark>, ICollection<Bookmark>, IEnumerable<Bookmark>, IList, ICollection, IEnumerable

メソッド | 説明
CopyTo | ブックマークを配列にコピーします
Add | リストの末尾にブックマークを追加します
Clear | リストから全てのブックマークを削除します
Contains | リストに指定したブックマークがあるか定義します
IndexOf | 指定したブックマークのインデックスを定義します
Throws Exceptions Insert | リストの指定した位置にブックマークを挿入します
Remove | リストからブックマークを削除します
Throws Exceptions RemoveAt | 指定した位置のブックマークを削除します
GetEnumerator | コレクションの列挙体を取得します
Throws Exceptions Adopt | 指定したブックマークを取り込みます。
Refresh | ブックマークの更新と再読込を行います
 | 継承されたメソッド...

プロパティ | 説明
Count | コレクションのブックマークの数
Throws Exceptions Item | 指定したインデックスのブックマークを取得または設定します
Open | ブックマークの開閉状態を取得します
Page | ブックマークに関連付けるページ
PageID | ブックマークに関連付けるページのページ ID
Parent | ブックマークの親
Title | 表示するブックマークのタイトル
 | 継承されたプロパティ...


CopyTo Function

CopyTo メソッド

ブックマークを配列にコピーします。

Syntax

[C#]
void CopyTo(Bookmark[] array, int index)
[Visual Basic]
Sub CopyTo(array As Bookmark(), index As Integer)

Params
名称 | 説明
array | 要素のコピー先の配列
index | コピーを開始する配列のゼロから始まるインデックス

Notes

コレクションの要素を、指定したインデックスから開始する配列にコピーします。

配列は1次元で、インデックスはゼロから始まらなければなりません。

Example

ありません。


Add Function

Add メソッド

リストの末尾にブックマークを追加します。

Syntax

[C#]
int Add(Bookmark bookmark)
int Add(string title)

[Visual Basic]
Function Add(bookmark As Bookmark) As Integer
Function Add(title As String) As Integer

Params
名称 | 説明
bookmark | 追加するブックマーク
title | 追加するブックマークのタイトル
戻り値 | 新しい要素を挿入した位置

Notes

リストの末尾にブックマークを追加します。

直接ブックマークを追加するか、オーバーロードされた演算子を1つ使ってブックマークに指定したタイトルを付けて追加できます。

文字列を追加する場合、これは挿入される新しいブックマークの中にカプセル化されます。

ブックマークは1度に1つの場所にしか存在できません。指定したブックマークが既に別のオブジェクトに含まれている場合、ブックマークの Clone が追加されます。

Example

ありません。


Clear メソッド

リストから全てのブックマークを削除します。

Syntax

[C#]
void Clear()

[Visual Basic]
Sub Clear()

Params
名称 | 説明
なし |

Notes

リストから全てのブックマークを削除します。

Example

ありません。


Contains Function

Contains メソッド

リストに特定のブックマークがあるか定義します。

Syntax

[C#]
bool Contains(Bookmark value)

[Visual Basic]
Function Contains(value As Bookmark) As Boolean

Params
名称 | 説明
value | 位置付けするオブジェクト
戻り値 | オブジェクトが見つかった場合は true を、そうでなければ false を返します。

Notes

リストに特定のブックマークがあるか定義します。

Example

ありません。


IndexOf Function

IndexOf メソッド

特定のブックマークのインデックスを定義します。

Syntax

[C#]
int IndexOf(Bookmark value)
int IndexOf(string value)
[Visual Basic]
Function IndexOf(value As Bookmark) As Integer
Function IndexOf(value As String) As Integer

Params
名称 | 名称
value | コレクションの中で確認するオブジェクトまたはオブジェクトのタイトル
戻り値 | 見つかった場合はインデックスの値を、見つからない場合は -1 を返します。

Notes

リスト内の特定のブックマークのインデックスを定義します。

Example

ありません。


Insert Function

Insert メソッド

リストの指定した位置にブックマークを挿入します。

Syntax

[C#]
void Insert(int index, Bookmark bookmark)
void Insert(int index, string title)

[Visual Basic]
Sub Insert(index As Integer, bookmark As Bookmark)
Sub Insert(index As Integer, title As String)

Throws Exceptions エラーの場合、ArgumentOutOfRangeException() が発生します。

Params
名称 | 説明
index | 挿入するブックマークのインデックス（ゼロから始まります）
bookmark | 追加したブックマーク
title | 追加するブックマークのタイトル

Notes

リストの指定した位置にブックマークを挿入します。

直接ブックマークを挿入するか、またはオーバーロードされた演算子を1つ使って指定したタイトルのブックマークを挿入することもできます。

文字列を挿入する場合、挿入される新しいブックマークの中でカプセル化されます。

ブックマークは1度に1つの場所にのみしか存在することができません。指定したブックマークが既に別のオブジェクトに含まれている場合、ブックマークの Clone が追加されます。

インデックスが配列内のブックマークの数と同じ場合、ブックマークは末尾に追加されます。

インデックスが有効なインデックスでない場合、このメソッドは ArgumentOutOfRangeException (引数範囲外の例外)を返します。

Example

ありません。


Remove Function

Remove メソッド

リストからブックマークを削除します。

Syntax

[C#]
bool Remove(Bookmark value)
[Visual Basic]
Function Remove(value As Bookmark) As Boolean

Params
名称 | 戻り値
value | 削除するブックマーク
戻り値 | ブックマークが削除された場合は True、そうでない場合は false

Notes

ブックマークが削除されると、その空いた場所を埋めるためにその下にあるブックマークが上に移動されます。

Example

ありません。


RemoveAt Method

RemoveAt メソッド

指定した位置のブックマークを削除します。

Syntax

[C#]
void RemoveAt(int index)
[Visual Basic]
Sub RemoveAt(index As Integer)

Params
名称 | 説明
index | 削除するブックマークを指定するゼロから始まるインデックス

Notes

指定した位置のブックマークを削除します。

その空いた場所を埋めるためにその下にあるブックマークが上に移動されます。

Example

ありません。


GetEnumerator メソッド

コレクションの列挙体を取得します。

Syntax

[C#]
IEnumerator<Bookmark> GetEnumerator()
[Visual Basic]
Function GetEnumerator() As IEnumerator(Of Bookmark)

Params
名称 | 説明
戻り値 | コレクションの列挙体

Notes

コレクションの列挙体を取得します。

Example

ありません。


Adopt Method

Adopt メソッド

指定したブックマークを取り込みます。

Syntax

[C#]
void Adopt(Bookmark value)
[Visual Basic]
Sub Adopt(value As Bookmark)

Throws Exceptions エラーの場合、Exception() が発生します。

Params
名称 | 説明
value | 取り込むブックマーク

Notes

ブックマークの階層構造にあるブックマークを取り込み（移動）します。

取り込まれるブックマークは、ブックマークの階層構造から切り離されて、現在のオブジェクトのブックマークコレクションの末尾に追加されます。

一部のブックマークは取り込むことができません。例えば、子はその親を取り込むことができません。このような場合、フィールドの構造体は変更されずに例外が返されます。

Example

ありません。


Refresh Method

Refresh メソッド

ブックマークの更新と再読み込みを行います。

Syntax

[C#]
virtual void Refresh()
[Visual Basic]
Overridable Sub Refresh()

Params
名称 | 説明
戻り値 | 利用不可

Notes

リストにあるすべてのブックマークの更新と再読み込みを行います。

まずブックマークが参照されると、PDF からブックマークのデータがキャッシュされます。これはキャッシュされないとできない最適化を行います。

しかし、低レベルの機能を使用してブックマークの構造を変更する場合、キャッシュには変更が反映されません。このような場合、Refresh メソッドを呼び出して、ブックマークを強制的に再読込させることができます。

Example

ありません。


Count プロパティ

型 | デフォルト値 | 読み取り専用 | 説明
[C#] int [Visual Basic] Integer | 説明を参照してください。 | はい | コレクション内のブックマークの数

Notes

コレクション内のブックマークの数。

すべてのコレクションに対して、Count プロパティを使用して含まれているブックマークの数を取得したり、プログラム言語に合った標準のメソッドを使用してコレクションをループすることができます。

Example

ありません。


Item プロパティ

型 | デフォルト | 読み取り専用 | 説明
[C#] Bookmark this[int index] [Visual Basic] Default Property Item(index As Integer) As Bookmark | 利用不可 | いいえ | 指定したインデックスのブックマークを取得または設定します。

Throws Exceptions エラーの場合、ArgumentOutOfRangeException() が発生します。

Notes

指定したインデックスのブックマークを取得または設定します。# では、このプロパティはそのクラスのインデクサになります。

インデックスが有効でない場合、このプロパティは ArgumentOutOfRangeException (引数の範囲外の例外)を返します。

Example

ありません。


Open プロパティ

型 | デフォルト値 | 読み取り専用 | 説明
[C#] bool [Visual Basic] Boolean | true | いいえ | ブックマークが開いているか閉じているかの状態を取得します。

Notes

このプロパティは、ブックマークが開いているか閉じているかの状態を取得します。

ブックマークが開いている場合、そのすべての子がその下にツリー表示されます。閉じている場合、子は非表示になっています。クライアントはクリックすることにより、ブックマークの表示/非表示を切り替えることができます。

Example

ありません。


Page プロパティ

型 | デフォルト値 | 読み取り専用 | 説明
[C#] Page [Visual Basic] Page | 0 | いいえ | ブックマークに関連付けるページ

Notes

このプロパティに、移動先の Page オブジェクトを使用できます。

ブックマークが非常に複雑な動作をする場合、このプロパティは null になることがあります。

Example

ありません。


PageID Property

PageID プロパティ

型 | デフォルト値 | 読み取り専用 | 説明
[C#] int [Visual Basic] Integer | 0 | いいえ | ブックマークに関連付けるページのページ ID

Notes

このプロパティに、関連付けるページのページ ID を使用することができます。

ブックマークが非常に複雑な動作をする場合、このプロパティは 0 になります。

Example

ありません。


Parent プロパティ

型 | デフォルト値 | 読み取り専用 | 説明
[C#] Bookmark [Visual Basic] Bookmark | なし | はい | ブックマークの親

Notes

ブックマークは階層構造になっています。

このプロパティは、階層構造内のブックマークの上位を見つけます。

最上位のブックマークには親がないので、この場合は null になります。

Example

ありません。


Title プロパティ

型 | デフォルト値 | 読み取り専用 | 説明
[C#] string [Visual Basic] String | "" | いいえ | 表示するブックマークのタイトル

Notes

このプロパティはブックマークのタイトルを定義します。

タイトルは、ブックマークタブに表示するテキストです。

Example

ありません。


Catalog Class

Catalog クラス

ドキュメントのカタログ

System.Object
   WebSupergoo.ABCpdf9.Objects.IndirectObject
      WebSupergoo.ABCpdf9.Objects.Catalog

メソッド | 説明
AnalyzeContent | ページ内容の全ドキュメント分析を行います
GetFieldNames | ドキュメントの全 eForm フィールド名を取得します
GetFields | ドキュメントの全 eForm フィールドを取得します
GetFonts | ドキュメントのフォントをすべて取得します
 | 継承されたメソッド...

プロパティ | 説明
Outline | ルートの Outline オブジェクト
Pages | ルートの Pages オブジェクト
 | 継承されたプロパティ...


AnalyzeContent Function

AnalyzeContent メソッド

ページ内容の全ドキュメント分析を行います。

Syntax

[C#]
void AnalyzeContent()
[Visual Basic]
Function AnalyzeContent()

Params
名称 | 説明
なし |

Notes

ドキュメントをスキャンし、内容を分析します。

ドキュメントの内容の解析には、全ドキュメントの内容の解凍や構文解析が含まれます。大量かつ複雑なドキュメントの解析には時間がかかってしまう可能性があります。

このため、最初にこのメソッドを呼び出すと分析がキャッシュされます。後で内容を変更する場合は、ご自身の責任でこのメソッドを呼び出して確実に更新してください。

全ドキュメント分析は Font.Subset メソッドなど他の特定の最適化を有効にします。

Example

ありません。


GetFieldNames メソッド

ドキュメントの全 eForm フィールド名を取得します。

Syntax

[C#]
string[] GetFieldNames()
[Visual Basic]
Function GetFieldNames() As String()

Params
名称 | 説明
戻り値 | ドキュメントのすべての eForm フィールド名

Notes

このメソッドはフィールドツリーをスキャンして、ドキュメントの全フィールド名（フルネーム）を取得します。

Example

ありません。


GetFields メソッド

ドキュメントのすべての eForm フィールドを取得します。

Syntax

[C#]
IndirectObject[] GetFields()
[Visual Basic]
Function GetFields() As IndirectObject()

Params
名称 | 説明
戻り値 | ドキュメントのすべての eForm フィールド

Notes

このメソッドはドキュメントのフィールドのツリーをスキャンして、すべてのフィールドの配列を作成します。

最も多いフィールドは Annotation で、ページに表示されています。すべてのフィールドは IndirectObject です。

Example

ありません。


GetFonts Function

GetFonts メソッド

このドキュメントのフォントをすべて取得します。

Syntax

[C#]
FontObject[] GetFonts()
[Visual Basic]
Function GetFonts() As FontObject()

Params
名称 | 説明
戻り値 | ドキュメントのすべてのフォント

Notes

ドキュメントをスキャンし、すべてのフォントの配列を作成します。

Example

ありません。


Outline プロパティ
型 | デフォルト値 | 読み取り専用 | 説明
[C#] Outline [Visual Basic] Outline | なし | はい | ルートの Outline オブジェクト

Notes

ルートの Outline オブジェクトをあらわします。

Outline オブジェクトはドキュメントの構造を保持しています。

Example

ありません。


Pages プロパティ
型 | デフォルト値 | 読み取り専用 | 説明
[C#] Pages [Visual Basic] Pages | なし | はい | ルートの Pages オブジェクト

Notes

ルートの Pages オブジェクトをあらわします。

Pages オブジェクトはドキュメントのあらゆるページのリファレンスを保持しています。

Example

ありません。


ColorSpace Class

ColorSpace クラス

PixMap などのオブジェクトのカラースペース

System.Object
   WebSupergoo.ABCpdf9.Objects.IndirectObject
      WebSupergoo.ABCpdf9.Objects.ColorSpace

メソッド | 説明
ColorSpace | カラースペースを構築します。
 | 継承されたメソッド...

プロパティ | 説明
ColorSpaceType | カラースペースの型
Components | カラースペースのカラーコンポーネントの数
Throws Exceptions IccProfile | このカラースペースに関連付けられている ICC Color Profile
Name | カラースペースに関連付けられている名前
Space | カラースペースのタイプ
 | 継承されたプロパティ...


ColorSpace コンストラクター

ColorSpace コンストラクタ

ColorSpace を構築します。

Syntax

[C#]
ColorSpace(ObjectSoup soup)
ColorSpace(ObjectSoup soup, ColorSpaceType space)

[Visual Basic]
Sub New(soup As ObjectSoup)
Sub New(soup As ObjectSoup, space As ColorSpaceType)

Params
名称 | 説明
soup | 新しく作成した StreamObject を保持する ObjectSoup
space | カラースペース

Notes

ColorSpace を構築します。

カラースペースが指定されなければ、デフォルトの DeviceRGB が使用されます。

Example

PixMap.Recolor メソッドを参照してください。


ColorSpaceType プロパティ
型 | デフォルト値 | 読み取り専用 | 説明
[C#] ColorSpaceType [Visual Basic] ColorSpaceType | なし | いいえ | カラースペースの型

Notes

このプロパティは下記の値となります。

  • None
  • DeviceGray
  • DeviceRGB
  • DeviceCMYK
  • CalGray
  • CalRGB
  • ICCBased
  • Lab
  • Indexed
  • Pattern
  • Separation
  • DeviceN

デバイスカラースペースはデバイスに依存するカラースペースです。これは出力機器によって出力される色が違ってきます。例えばあるモニターで表示される DeviceRGB の値は、別のモニターでは違って見えます。

Cal と ICC 及び Lab のカラースペースはデバイスに依存しません。

Indexed のカラースペースはパレットカラーに使用されます。パレットの各色は、DeviceRGB のような基本カラースペースに基づいて定義されます。パレットの最大数は 256 です。

Pattern のカラースペースは定義してあるパターンを繰り返し使用するための特殊なものです。

Separation と DeviceN のカラースペースは異なる基本の色に基づいて色を定義します。Separations は1つの色を設定します。DeviceN は複数の異なる色を定義します。例えば、DeviceN のカラースペースを使用すると、金や銀と黒色のインクの組み合わせを使用して印刷するようにイメージを定義できます。

None のカラースペースは不明なカラースペースや定義されていないカラースペースを表します。None を設定すると、デフォルトの DeviceRGB のカラースペースになります。

カラースペースの詳細については、Adobe PDF Specification の 4.5 章を参照してください。

Example

ありません。


Components プロパティ
型 | デフォルト値 | 読み取り専用 | 説明
[C#] int [Visual Basic] Integer | なし | はい | カラースペースのカラーコンポネントの数

Notes

カラースペースによってコンポーネントの数は異なります。

例えば、RGB カラースペースは3つのコンポーネント、CMYK カラースペースは 4つのコンポーネントを持っています。

このプロパティはカラースペースのカラーコンポーネントの数を設定します。

Indexed カラースペースはパレットを使用して色を定義します。パレットの1つのインデックスを使用して色の値が決まりますが、コンポーネントの数はパレットのカラーコンポーネントの数により決まります。

例えば、Idexed RGB のカラースペースのコンポーネントの数は3つです。

Pattern のカラースペースは特別でコンポーネントを持っていません。

Example

ありません。


IccProfile プロパティ
型 | デフォルト値 | 読み取り専用 | 説明
[C#] IccProfile [Visual Basic] IccProfile | 利用可能 | はい | このカラースペースに関連付けられている ICC Color Profile

Notes

このカラースペースに関連付けられている ICC Color Profile を記述する IccProfile をあらわします。

このプロパティの値の問い合わせを行っても、例外は発生しません。

新しいを値をこのプロパティに設定すると、自動的に IccProfile の結果は解凍され、有効になり、再度圧縮されます。もし既に無ければ、カラースペースとして同じ ObjectSoup に追加されます。

ColorSpaceType プロパティとComponents プロパティは、新しいプロファイルのカラースペースを表すために設定します。

設定が有効でない場合は例外が発生します。ObjectSoup にカラースペースが無かったり、IccProfile が無効である場合にこのようになります。

Example

PixMap.Recolor メソッドを参照してください。


Name プロパティ
型 | デフォルト値 | 読み取り専用 | 説明
[C#] string [Visual Basic] String | なし | はい | カラースペースに関連付けられている名前

Notes

カラースペースに関連付けられている名前を表します。

名前は Separation カラースペースだけに関係します。その名前は一般的にスポットカラー名を表します。

Example

ありません。


Space プロパティ

型 | デフォルト値 | 読み取り専用 | 説明
[C#] string [Visual Basic] String | なし | はい | カラースペースのタイプ

Notes

カラースペースのタイプをあらわします。

返されるタイプは、標準の PDF カラースペース名です。

例：

  • DeviceGray
  • DeviceRGB
  • DeviceCMYK
  • Lab
  • ICCBased
  • Separation
このプロパティは以前の製品との互換性のためにあります。通常は ColorSpaceType プロパティを使用してください。

Example

ありません。


Field Class

Field クラス

ドキュメントのフィールドを表します。

PDF の仕様では、フィールドとフィールドを区別し、ドキュメントのフィールドを表示します。

従って、全てのフィールドが表示されているとは限りません。表示されているフィールドは Page プロパティと Rect プロパティを使用して位置付けることができます。フィールドの値は Value プロパティを使用して変更できます。

フィールドは階層構造内に存在します。フィールドは子を、その子はそのまた子を持つことができます。Kids プロパティを使用して階層構造を掘り下げることができます。

他には、XForm のメソッドを使用して直接参照を取得できます。

フィールドオブジェクトはドキュメントで定義された基本的な抽象オブジェクトです。PDF の仕様で定義されているようにそれだけでオブジェクト ID がウィジェット注釈、フィールド辞書、または複合型のウィジェットフィールドを参照する場合があります。

System.Object
   WebSupergoo.ABCpdf9.Objects.IndirectObject
      WebSupergoo.ABCpdf9.Objects.Field

メソッド | 説明
Focus | フィールドの位置に描画するドキュメントを用意します
Stamp | ドキュメントにフィールドをスタンプします
 | 継承されたメソッド...

プロパティ | 説明
FieldType | フィールド型
Format | フィールドの書式
Kids | フィールドの全ての子
MultiSelect | フィールドが複数の選択をサポートするかを定義します
Name | 完全修飾名のフィールド名
Options | フィールドのオプション
Page | フィールドが表示されているページ
PageID | フィールドが表示されているページの ID
PartialName | 部分的なフィールド名
Rect | フィールドの位置とサイズ
Value | フィールドの値
 | 継承されたプロパティ...


Focus Function

Focus メソッド

フィールドの位置に描画するドキュメントを用意します。

Syntax

[C#]
bool Focus()
[Visual Basic]
Function Focus() As Boolean

Params
名称 | 説明
戻り値 | フォーカスが設定された場合、true を返します。

Notes

フィールドにフォーカスを設定します。

これはフィールドの位置に描画するドキュメントを用意します。

フォーカスが設定されると、このメソッドは true を返します。フィールドが非表示の位置にある場合、false を返します。

Doc.Page プロパティ、Doc.Rect プロパティ、Doc.Transform プロパティは、このメソッドを呼び出すとすべて変更されます。

Example

ありません。


Stamp Method

Stamp メソッド

ドキュメントにフィールドをスタンプします。

Syntax

[C#]
void Stamp()
[Visual Basic]
Sub Stamp()

Params
名称 | 説明
戻り値 | 利用不可

Notes

ドキュメントにフィールドが永久的にスタンプされ、そのフィールドは削除されます。

フィールドはそのページの新しいレイヤになるので(Doc.LayerCount プロパティを参照してください)、そのページで Doc.Flatten メソッドを呼び出す必要があります。

XForm.Stamp メソッドを使用してドキュメントに全てのフィールドをスタンプすることができます。

Example

ありません。


FieldType プロパティ

型 | デフォルト値 | 読み取り専用 | 説明
[C#] FieldType [Visual Basic] FieldType | 説明を参照してください。 | はい。 | フィールド型

Notes

FieldType の列挙体には下記の値が使用できます。

  • Pushbutton
  • Checkbox
  • Radio
  • Text
  • List
  • Combo
  • Signature
  • Unknown

これらのフィールド型の詳細については、Adobe PDF Specification の 8.6.3 章を参照してください。

Example

ありません。


Format プロパティ

型 | デフォルト値 | 読み取り専用 | 説明
[C#] string [Visual Basic] String | 説明を参照してください。 | はい | フィールドの書式

Notes

フィールドの書式をあらわします。

PDF の仕様ではフィールドの書式を定義しません。Acrobat はフィールドの書式を設定するために JavaScripts を使用します。

このプロパティは、使用されている JavaScript の書式メソッドと渡されている値を反映します。典型的な値は下記の通りです。

AFNumber_Format(2, 3, 0, 0, "", true);

これは、2つの少数値の数値形式を定義します。他のパラメータを認識するには、Acrobat にインストールされてくる JavaScripts を参照してください。

その他の典型的な書式設定メソッドは、AFPercent_Format、AFSpecial_Format、AFDate_Format、AFTime_Format です。詳細は、Acrobat にインストールされてくる JavaScripts を参照してください。

Example

ありません。


Kids プロパティ

型 | デフォルト値 | 読み取り専用 | 説明
[C#] Fields [Visual Basic] Fields | 説明を参照してください。 | はい | フィールドの全ての子

Notes
このプロパティは、このフィールドの全ての子をあらわします。

このコレクション の項目は、部分的なフィールド名または番号で参照できます。

全てのコレクションに対して、Count プロパティを使用して含まれているブックマークの数を定義したり、プログラム言語に合った標準メソッドを使用してコレクションをループできます。

Example

ありません。


MultiSelect プロパティ

型 | デフォルト値 | 読み取り専用 | 説明
[C#] bool [Visual Basic] Boolean | 説明を参照してください。 | はい | フィールドが複数の選択をサポートするかを定義します

Notes
このプロパティは、フィールドが複数の値をサポートするか定義できます。

殆どのフィールドは１つの値を保持します。テキストボックスにはテキストが1つあります。ラジオボタングループには選択されたボタンが1つあります。チェックボックスに はチェックを付けたり外したりすることができます。

しかしフィールドの種類によっては複数の値を持つことができます。例えば、リストボックスは複数の項目を選択するために使用できます。このような場合、MultiSelect プロパティを ｔrue に設定してください。

フィールドが複数の選択をサポートする場合、そのフィールドの Value プロパティは カンマで区切られた項目になります。

Example

ありません。


Name プロパティ

型 | デフォルト値 | 読み取り専用 | 説明
[C#] string [Visual Basic] String | 説明を参照してください。 | はい | フィールドの完全修飾名

Notes
このプロパティは、フィールドの完全修飾名をあらわします。

完全修飾名の構築方法についての詳細は XForm オブジェクトを参照してください。

Example

ありません。


Options プロパティ

型 デフォルト値 読み取り専用 説明
[C#]
string[]

[Visual Basic]
String() 		説明を参照してください。 はい フィールドのオプション

Notes
このプロパティは、このフィールドのオプションを表します。

一般的に、Value プロパティを使用して値を割り当てます。Textフィールドなどの一部のフィールドはどんな値でも受け付けます。Checkbox や List Box などその他のフィールドの値はオプションが限られています。フィールドのオプションは、特定のフィールドにどんなオプションを使用できるかを伝えます。

チェックボックスやラジオボタンのチェックのない状態は常に"Off"です。チェックのついた状態はさまざまで、このプロパティの項目 0 で使用できます。

Combo Box または List Box のオプションはこのプロパティから直接取得できます。

Pushbutton と Signature フィールドにはオプションがありません。

Example

ありません。


Page Property

Page プロパティ

型 | デフォルト値 | 読み取り専用 | 説明
[C#] Page [Visual Basic] Page | 説明を参照してください | はい | フィールドが表示されているページ

Notes

このフィールドが置かれているページを表します。

フィールドが非表示の場合、この値は null になります。

フィールドが非表示になるのは一般的にラジオボタンの場合です。この場合、フィールドがラジオボタンのグループを描写し、そのフィールドの子が表示ボタンになります。そのグループがどのページにあるかを見つけ出すには、Kids を反復処理して各ページの Rect プロパティを調べることができますが、ラジオボタンが複数のページに配置されているかもしれないということを覚えておいてください。

Example

ありません。


PageID Property

PageID プロパティ

型 | デフォルト値 | 読み取り専用 | 説明
[C#] int [Visual Basic] Integer | 説明を参照してください | はい | フィールドが表示されているページの ID

Notes

フィールドが置かれているページの ID を表します。

フィールドが非表示の場合、この値はゼロになります。

フィールドが非表示になるのは一般的にラジオボタンの場合です。この場合、フィールドがラジオボタンのグループを描写し、そのフィールドの子が表示ボタンになります。そのグループがどのページにあるかを見つけ出すには、Kids を反復処理して各ページの Rect プロパティを調べることができますが、ラジオボタンが複数のページに配置されているかもしれないということを覚えておいてください。

Example

ありません。


PartialName プロパティ

型 | デフォルト値 | 読み取り専用 | 説明
[C#] string [Visual Basic] String | 説明を参照してください。 | はい | 部分的なフィールド名

Notes

部分的なフィールド名。

部分的なフィールド名と完全修飾名のフィールドとの関連性については、XForm オブジェクトを参照してください。

Example

ありません。


Rect Property

Rect プロパティ

型 | デフォルト値 | 読み取り専用 | 説明
[C#] XRect [Visual Basic] XRect | 説明を参照してください | はい | フィールドの位置とサイズ

Notes

そのページのフィールドの位置とサイズを表します。

フィールドが非表示の場合、この四角形は空になります。

フィールドが非表示になるのは一般的にラジオボタンの場合です。この場合、フィールドがラジオボタンのグループを描写し、そのフィールドの子が表示ボタンになります。そのグループがどのページにあるかを見つけ出すには、Kids を反復処理して各ページの Rect プロパティを調べることができますが、ラジオボタンが複数のページに配置されているかもしれないということを覚えておいてください。

Example

ありません。


Value プロパティ

型 | デフォルト値 | 読み取り専用 | 説明
[C#] string [Visual Basic] String | "" | いいえ | フィールドの値

Notes
このプロパティは、フィールドの値をあらわします。

このプロパティを使用して、フォームのフィールドの値を取得したり設定したりします。

Textフィールドはフリーテキストになります。

Checkbox や Radio Button は、"Off" か、Options プロパティで指定したコントロール状態（チェックの付いた状態）のどちらかの値になります。

Options プロパティで指定したように、Combo Box や List Box の値は選択（オプション）が限定されています。

一般的な通操作

テキストフィールドの値の設定：

[C#]
theField.Value = "Mr Jones";

[Visual Basic]
theField.Value = "Mr Jones"

チェックボックスの設定：

[C#]
theField.Value = theField.Options[0];

[Visual Basic]
theField.Value = theField.Options(0)

チェックボックスのチェックを外す：

[C#]
theField.Value = "Off";

[Visual Basic]
theField.Value = "Off"

5番目のラジオボタンの設定：

[C#]
theField.Value = theField.Options[4];

[Visual Basic]
theField.Value = theField.Options(4)

複数行のフォームのフィールドについて

複数行のフィールドにキャリッジリターンを挿入する場合には、復帰(\r)を使用してください。

改行 (\n) やキャリッジリターンと改行の組み合わせ (\r\n) の使用は、古いバージョンの Acrobat との互換性が低くなります。

Example

ありません。


Fields Class

Fields クラス

フィールドのコレクションをカプセル化するクラスです。

System.Object
   WebSupergoo.ABCpdf9.Objects.Fields

Implements: IList<Field>, ICollection<Field>, IEnumerable<Field>, IList, ICollection, IEnumerable

メソッド | 説明
CopyTo | 配列にフィールドをコピーします
Throws Exceptions Add | フィールドをコレクションの末尾に追加します
Throws Exceptions Clear | 全てのフィールドをコレクションから削除します
Contains | コレクションが指定したフィールドを含んでいるか調べます
IndexOf | 指定したフィールドのインデックスを調べます
Throws Exceptions Insert | コレクションの指定したインデックス位置にフィールドを挿入します
Throws Exceptions Remove | フィールドをコレクションから削除します
Throws Exceptions RemoveAt | 指定したインデックス位置のフィールドをコレクションから削除します
GetEnumerator | コレクションの列挙子を取得します

プロパティ | 説明
Count | コレクションのフィールド数を取得します
Throws Exceptions Item | 指定したインデックスのフィールドを取得または設定します


CopyTo Function

CopyTo メソッド

コレクションにフィールドをコピーします。

Syntax

[C#]
void CopyTo(Field[] array, int index)
[Visual Basic]
Sub CopyTo(array As Field(), index As Integer)

Params
名称 | 説明
array | コピー先の配列
index | コピーを開始する配列のインデックス(配列の要素はゼロから始まる)

Notes

コレクションの要素を特定のインデックスから始まる配列にコピーします。

配列は1次元で、その要素はゼロから始まらなければなりません。

Example

ありません。


Add メソッド

項目をコレクションの末尾に追加します。

Syntax

[C#]
int Add(Field field)
[Visual Basic]
Function Add(field As Field) As Integer

Throws Exceptions エラーの場合、NotSupportedException() が発生します。

Params
名称 | 説明
field | 追加する項目

Notes

このメソッドは項目をコレクションに追加します。

全てのフィールドのコレクションは読み取り専用なので、このメソッドを呼び出すと NotSupportedException が発生します。

Example

ありません。


Clear メソッド

全てのフィールドをコレクションから削除します。

Syntax

[C#]
void Clear()
[Visual Basic]
Sub Clear()

Throws Exceptions エラーの場合、NotSupportedException() が発生します。

Params
名称 | 説明
なし |

Notes

全ての項目をコレクションからクリアーします。

全てのフィールドのコレクションは読み取り専用なので、このメソッドを呼び出すと NotSupportedException が発生します。

Example

ありません。


Contains Function

Contains メソッド

コレクションが指定したフィールドを含んでいるか調べます。

Syntax

[C#]
bool Contains(Field value)

[Visual Basic]
Function Contains(value As Field) As Boolean

Params
名称 | 説明
value | 置付けするオブジェクト
戻り値 | オブジェクトが見つかった場合は true、そうでなければ false を返します。

Notes

コレクションが指定したフィールドを含んでいるか調べます。

Example

ありません。


IndexOf Function

IndexOf メソッド

指定したフィールドのインデックスを調べます。

Syntax

[C#]
int IndexOf(Field value)
[Visual Basic]
Function IndexOf(value As Field) As Integer

Params
名称 | 説明
value | コレクションで確認するオブジェクト
戻り値 | 見つかった場合はインデックスの値を、そうでなければ -1 を返します。

Notes

コレクションの指定したフィールドのインデックスを調べます。

Example

ありません。


Insert メソッド

フィールドをコレクションの指定した位置に挿入します。

Syntax

[C#]
void Insert(int index, Field value)
[Visual Basic]
Sub Insert(index As Integer, value As Field)

Throws Exceptions エラーの場合、NotSupportedException() が発生します。

Params
名称 | 説明
index | 値を挿入する、ゼロから始まるインデックス
value | 配列に挿入する項目

Notes

フィールドをコレクションの指定した位置に挿入します。

全てのフィールドのコレクションは読み取り専用なので、このメソッドを呼び出すと NotSupportedException が発生します。

Example

ありません。


Remove Function

Remove メソッド

コレクションからフィールドを削除します。

Syntax

[C#]
bool Remove(Field value)
[Visual Basic]
Function Remove(value As Field) As Boolean

Throws Exceptions エラーの場合、NotSupportedException() が発生します。

Params
名称 | 説明
value | 削除するフィールド
戻り値 | フィールドが削除された場合は True、そうでない場合は false

Notes

コレクションからフィールドを削除します。

全てのフィールドのコレクションは読み取り専用なので、このメソッドを呼び出すと NotSupportedException が発生します。

Example

ありません。


RemoveAt メソッド

指定した位置のフィールドをコレクションから削除します。

Syntax

[C#]
void RemoveAt(int index)
[Visual Basic]
Sub RemoveAt(index As Integer)

Throws Exceptions エラーの場合、NotSupportedException() が発生します。

Params
名称 | 説明
index | 削除するフィールドのゼロから始まるインデックス

Notes

フィールドをコレクションから削除します。

全てのフィールドのコレクションは読み取り専用なので、このメソッドを呼び出すと NotSupportedException が発生します。

Example

ありません。


GetEnumerator Function

GetEnumerator メソッド

コレクションの列挙子を取得します。

Syntax

[C#]
IEnumerator<Field> GetEnumerator()
[Visual Basic]
Function GetEnumerator() As IEnumerator(Of Field)

Params
名称 | 説明
戻り値 | コレクションの列挙子

Notes

コレクションの Field 列挙子を取得します。

Example

ありません。


Count プロパティ

型 | デフォルト | 読み取り専用 | 説明
[C#] int [Visual Basic] Integer | なし | はい | コレクションの項目数

Notes

コレクションの項目数。

全てのフィールドのコレクションは読み取り専用なので、この値は変わりません。

Example

ありません。


Item プロパティ

型 | デフォルト | 読み取り専用 | 説明
[C#] Field this[int index] Field this[string index] [Visual Basic] Default Property Item(index As Integer) As Field Default Property Item(index As String) As Field | なし | いいえ | 指定したインデックスのフィールドを取得または設定します。

Throws Exceptions エラーの場合、ArgumentOutOfRangeException() が発生します。
Throws Exceptions エラーの場合、NotSupportedException() が発生します。

Notes

指定したインデックスのフィールドを取得または設定します。C#では、このプロパティはそのクラスのインデクサです。

指定したインデックスはゼロから始まるインデックスになります。インデックスが有効でない場合、このプロパティは ArgumentOutOfRangeException を返します。

他の方法として、フィールド名を指定する文字列になります。フィールド名がコレクションのフィールドと一致しない場合、null 値が返されます。

全てのフィールドのコレクションは読み取り専用なので、このメソッドを使用して項目を割り当てようとすると NotSupportedException が発生します。

Example

ありません。


FontObject Class

FontObject クラス

ドキュメントで使用する特定のフォント。

System.Object
   WebSupergoo.ABCpdf9.Objects.IndirectObject
      WebSupergoo.ABCpdf9.Objects.FontObject

メソッド | 説明
S» Throws Exceptions GetEncoding | PDF のテキストオペレータと一緒に使用する標準のエンコード辞書を取得します
EncodeText | PDF のテキストオペレータと一緒に使用するテキストをエンコードします
Subset | 前に埋め込んだフォントをサブセット化します
UnembedSimpleFont | これが簡単な操作の場合、フォントを埋め込みません
 | 継承されたメソッド...

プロパティ | 説明
BaseFont | フォントの PostScript 名
EmbeddedFont | 埋め込みフォントのファイル
IsComposite | フォントが複雑な複合フォントかどうか
IsSubset | フォントに埋め込みサブセットが含まれているかどうか
IsVertical | フォントが縦書きかどうか
Widths | フォントに含まれる文字の幅
WritingMode | フォントの書き込みモード （hotizontal または vertical） を取得します
 | 継承されたプロパティ...


GetEncoding Function

GetEncoding メソッド

PDF のテキストオペレータと一緒に使用する標準のエンコード辞書を取得します。

Syntax

[C#]
static Dictionary<char, char> GetEncoding(LanguageType type, bool vertical)
[Visual Basic]
Shared Function GetEncoding(type As LanguageType, vertical As Boolean) As Dictionary(Of Char, Char)

Throws Exceptions エラーの場合、Exception() が発生します。

Params
名称 | 説明
型 | エンコードの言語型
vertical | 縦書き/横書きにするか
戻り値 | Unicode 値をネイティブな文字 ID にマッピングする辞書

Notes

PDF のテキストオペレータと一緒に使用する標準のエンコード辞書を取得します。

エンコード辞書はこのメソッドのパラメータとして提供された言語と向きで定義されるので、お客様の責任でこのエンコードを持っているフォントでのみ返されたエンコード辞書が使用されるようにしてください。代わりに、このフォント固有のフォントのエンコードを使用してテキストをエンコードしなければならない場合は、EncodeText メソッドを参照してください。

Unicode の言語型は既に Unicode なので、この種のエンコードは同じです。このため、この種のエンコードを要求するとエラーが発生します。

言語型の詳細は、フォントと言語 を参照してください。

Example

ありません。


EncodeText Function

EncodeText メソッド

PDF のテキスオペレータと一緒に使用するテキストをエンコードします。

Syntax

[C#]
string EncodeText(string text, EncodingSupport support)
string EncodeText(string text, EncodingSupport support, out int outCount)
[Visual Basic]
Function EncodeText(text As String, support As EncodingSupport)
Function EncodeText(text As String, support As EncodingSupport, <Out> ByRef outCount As Integer)

Throws Exceptions エラーの場合、 Exception() が発生します。

Params
名称 | 説明
text | エンコードするテキスト
support | フォントに含まれていない文字をエンコードする方法
outCount | 戻り値でエンコードされる（パラメータの）テキストの文字数
戻り値 | エンコードしたテキストを含んでいる PDF の文字列

Notes

Tj または TJ 演算子と一緒に使用するために、Unicode テキストを PDF の文字列に変換します。

EncodingSupport 列挙体は次の値です。

  • All – すべてのテキストをエンコードします。
  • NoneIfAnyNotSupported – フォントに文字が含まれていない場合、何もエンコードしません。
  • SupportedPrefix – フォントに含まれない頭文字を除外してエンコードします。

フォントは、フォントを最初に作成した時にエンコーディングされてキャッシュされるので、フォントのエンコードを変更してもこのメソッドの動作に変化があるわけではありません。それを行いたい場合は、全く新しいフォントを作成する必要があります。

Example

ありません。


Subset Function

Subset メソッド

前に埋め込んだフォントをサブセット化します。

Syntax

[C#]
bool Subset()
bool Subset(string characters)
[Visual Basic]
Function Subset() As Boolean
Function Subset(characters as String) As Boolean

Params
名称 | 説明
characters | サブセット化に使われる文字セット
戻り値 | サブセット化がうまく行われたかどうか

Notes

以前に埋め込んだフォントをサブセット化します。

PDF の作成で多くの場合、フォントのサブセット化が効率的ではありません。以前に埋め込んだフォントのサブセットは時間がかかる作業になり得ますが、ファイルサイズもかなり小さくすることができます。

文字セットの文字列を用意していれば、これは比較的速い処理になりますが、文字セットを渡していない場合は作成しなければなりません。それにはドキュメント全体を分析して、使われている文字を見つけ出す必要があります。この場合、Catalog.AnalyzeContent メソッドをまだ呼び出していない場合は呼び出されます。

この呼び出しは、埋め込んだ TrueType フォントをサブセット化します。そのフォントが参照された場合、またはそのフォントが TrueType ではない場合、このメソッドは False を返します。

Example

ありません。


UnembedFont Function

UnembedFont メソッド

これがシンプルな操作の場合、フォントを埋め込みません。

Syntax

[C#]
int UnembedSimpleFont()
[Visual Basic]
UnembedSimpleFont() As Integer

Params
名称 | 説明
戻り値 | このメソッドを呼び出して削除されたフォントデータのバイト数

Notes

これがシンプルな操作の場合、フォントを埋め込みません。

ラテン語ベースのフォントは簡単で高速な処理として時々埋め込まれませんが、Unicode や記号のフォントを埋め込まないようにするのはもっと大変で、ドキュメントから簡単に削除することができません。複合フォントを埋め込まないようにするには、ReduceSizeOperation クラスを使用する必要があります。

このメソッドは、このメソッドを呼び出して削除されたフォントデータのバイト数を返します。複数のフォントオブジェクトが同じ埋め込みフォントを参照する可能性があるので注意してください。この場合、このメソッドを呼び出すたびに同じ数が返され、実際のフォントはその参照がすべて解放されるとドキュメントから実際に削除されます。

Example

ありません。


BaseFont Property

BaseFont プロパティ

型 | デフォルト値 | 読み取り専用 | 説明
[C#] string [Visual Basic] string | なし | はい | フォントの PostScript 名

Notes

フォントの PostScript 名

Example

ありません。


EmbeddedFont Property

EmbeddedFont プロパティ

型 | デフォルト値 | 読み取り専用 | 説明
[C#] StreamObject [Visual Basic] StreamObject | なし | はい | 埋め込みフォントのファイル

Notes

埋め込みフォントのファイル。

フォントのファイルは、TrueType、OpenType、または Type1 - PostScript など、様々なフォントになり得ます。

Example

ありません。


IsComposite Property

IsComposite プロパティ

型 | デフォルト値 | 読み取り専用 | 説明
[C#] bool [Visual Basic] bool | なし | はい | フォントが複雑な複合フォントかどうか

Notes

フォントが複雑な複合フォントかどうかを定義します。

複合フォントは一般的に ASCII ではない文字や複雑な書記体系に使用されます。

Example

ありません。


IsSubset Property

IsSubset プロパティ

型 | デフォルト値 | 読み取り専用 | 説明
[C#] bool [Visual Basic] bool | なし | はい | フォントに埋め込みサブセットが含まれているかどうか

Notes

フォントに埋め込みサブセットが含まれているかどうか

Example

ありません。


IsVertical Property

IsVertical プロパティ

型 | デフォルト値 | 読み取り専用 | 説明
[C#] bool [Visual Basic] bool | なし | はい | フォントが縦書き用かどうか

Notes

フォントが縦書き用かどうか定義します。

言語によっては、横書きではなく縦書きの場合があります。方向だけでなく固有の文字もあります。

Example

ありません。


WritingMode Property

WritingMode プロパティ

型 | デフォルト値 | 読み取り専用 | 説明
[C#] WritingModeType [Visual Basic] WritingModeType | 利用不可 | はい | フォントの書き込みモードを取得します。

Notes

フォントの書き込みモードを取得します。

WritingModeType 列挙体には次の値があります。

  • Horizontal
  • Vertical

Example

ありません。


Widths Property

Widths プロパティ

型 | デフォルト値 | 読み取り専用 | 説明
[C#] IDictionary<char, int> [Visual Basic] IDictionary<char, int> | なし | はい | フォントに含まれる文字の幅

Notes

そのフォントに含まれる全文字の幅。

配列に Unicode の値を代入できます。例えば、（ASCII 32 の）スペースの幅を取得するには、配列に item 32 を代入するだけです。値は PDF の 1/1000 単位です。

フォントのサブセット化は、文字があるフォントから部分的または完全に削除されてしまうことがあります。ABCpdf はこのプロパティのコレクションに有効な文字のサブセットだけを格納しようとしますが、それを伝えるのが困難な場合があり、幅があるために格納されている文字を信頼できない場合があります。

Example

ありません。


GraphicLayer Class

GraphicLayer クラス

ドキュメントのページに表示されている一般的なグラフィックレイヤー

System.Object
   WebSupergoo.ABCpdf9.Objects.IndirectObject
      WebSupergoo.ABCpdf9.Objects.StreamObject
         WebSupergoo.ABCpdf9.Objects.Layer
            WebSupergoo.ABCpdf9.Objects.GraphicLayer

メソッド | 説明
 | 継承されたメソッド...

プロパティ | 説明
 | 継承されたプロパティ...


GraphicsState Class

GraphicsState クラス

あらかじめ指定されたグラフィックスの状態

System.Object
   WebSupergoo.ABCpdf9.Objects.IndirectObject
      WebSupergoo.ABCpdf9.Objects.GraphicsState

メソッド | 説明
 | 継承されたメソッド...

プロパティ | 説明
 | 継承されたプロパティ...


IccProfile Class

IccProfile クラス

指定した ColorSpace の ICC カラープロファイル

System.Object
   WebSupergoo.ABCpdf9.Objects.IndirectObject
      WebSupergoo.ABCpdf9.Objects.StreamObject
         WebSupergoo.ABCpdf9.Objects.IccProfile

メソッド | 説明
Throws Exceptions IccProfile | IccProfile を構築します。
Throws Exceptions SetData | ストリームのバイナリーコンテンツの設定
 | 継承されたメソッド...

プロパティ | 説明
 | 継承されたプロパティ...


IccProfile コンストラクター

IccProfile コンストラクタ

IccProfile コンストラクタ

Syntax

[C#]
StreamObject(ObjectSoup soup, byte[] data)
StreamObject(ObjectSoup soup, string path)
[Visual Basic]
Sub New(soup As ObjectSoup, data() As Byte)
Sub New(soup As ObjectSoup, path As String)

Params
名称 | 説明
soup | 新しく作成した IccProfile を保持する ObjectSoup
data | バイト配列に保存される ICC プロファイル
path | ICC ファイルのパス

Notes

IccProfile のオブジェクトを作成します。

もし提供されているコンテンツが有効なプロファイルでない場合、例外が発生します。

Example

PixMap.Recolor メソッドを参照してください。


SetData Function

SetData メソッド

ストリームのバイナリーコンテンツの設定

Syntax

[C#]
override void SetData(byte[] value)
[Visual Basic]
Overrides Sub SetData(value() As Byte)

Params
名称 | 説明
value | ストリームのバイナリーコンテンツ

Notes

ストリームのバイナリーコンテンツの設定を行います。

このメソッドは StreamObject.SetData のオーバーライドです。

現在 StreamObject が圧縮データを保持している場合や、提供されている ICC プロファイルが有効でない場合、例外が発生します。

Example

ありません。


ImageLayer Class

ImageLayer クラス

ドキュメントのページに表示されている一般的なビットマップレイヤー。

実際のビットマップデータは、 PixMap オブジェクトに保存されています。ImageLayer はビットマップデータを参照し、描画位置と描画方法を定義します。

System.Object
   WebSupergoo.ABCpdf9.Objects.IndirectObject
      WebSupergoo.ABCpdf9.Objects.StreamObject
         WebSupergoo.ABCpdf9.Objects.Layer
            WebSupergoo.ABCpdf9.Objects.ImageLayer

メソッド | 説明
 | 継承されたメソッド...

プロパティ | 説明
PixMap | PixMap はイメージデータを含んでいます
 | 継承されたプロパティ...


PixMap プロパティ
型 | デフォルト値 | 読み取り専用 | 説明
[C#] PixMap [Visual Basic] PixMap | なし | はい | PixMap はイメージデータを含んでいます

Notes

PixMap はイメージデータを含んでいます。

Example

ありません。


Layer Class

Layer クラス

ページに表示するコンテンツ レイヤー

System.Object
   WebSupergoo.ABCpdf9.Objects.IndirectObject
      WebSupergoo.ABCpdf9.Objects.StreamObject
         WebSupergoo.ABCpdf9.Objects.Layer
            WebSupergoo.ABCpdf9.Objects.GraphicLayer
            WebSupergoo.ABCpdf9.Objects.ImageLayer
            WebSupergoo.ABCpdf9.Objects.TextLayer
            WebSupergoo.ABCpdf9.Objects.ViewLayer

メソッド | 説明
 | 継承されたメソッド...

プロパティ | 説明
Rect | 表示するコンテンツの範囲を定義する四角形
 | 継承されたプロパティ...


Rect プロパティ
型 | デフォルト値 | 読み取り専用 | 説明
[C#] XRect [Visual Basic] XRect | なし | はい | 表示する内容の範囲を定義する四角形

Notes

表示する内容の範囲を定義する XRect をあらわします。

四角形は PDF の座標系で定義されます。

Example

ありません。


Outline Class

Outline クラス

トップレベルのアウトライン項目

System.Object
   WebSupergoo.ABCpdf9.Objects.IndirectObject
      WebSupergoo.ABCpdf9.Objects.Bookmark
         WebSupergoo.ABCpdf9.Objects.Outline

メソッド | 説明
 | 継承されたメソッド...

プロパティ | 説明
 | 継承されたプロパティ...


Page Class

Page クラス

ドキュメントに表示されているページ。

System.Object
   WebSupergoo.ABCpdf9.Objects.IndirectObject
      WebSupergoo.ABCpdf9.Objects.Page

メソッド | 説明
DeInline | 外部イメージにインライン画像を作成します
Detach | ページからコンテンツストリームを切り離します
Flatten | ページのコンテンツストリームの平坦化と圧縮を行います
GetAnnotations | ページのすべての注釈を取得します
GetLayers | ページのすべてのコンテンツレイヤーを取得します
GetNamedSeparations | ページで参照された、指定したセパレーションをすべて取得します
GetText | 現在のページから指定した形式でコンテンツを抽出します
Recolor | ページのカラースペースを変換します
VectorizeText | ページのテキストをグリフ アウトラインに置き換えます
 | 継承されたメソッド...

プロパティ | 説明
PageNumber | ドキュメントのページ番号
Parent | このページの親
Rotation | 表示前のページの回転度数
 | 継承されたプロパティ...


DeInline Function

DeInline メソッド

外部イメージにインライン画像を作成します。

Syntax

[C#]
void DeInline(bool convertAnnotations)
void DeInline(bool convertAnnotations, out PixMap[] detachedPixMaps)
[Visual Basic]
Sub DeInline(convertAnnotations As Boolean)
Sub DeInline(convertAnnotations As Boolean, <Out> ByRef detachedPixMaps As PixMap())

Throws Exceptions エラーの場合、Exception() が発生します。

Params
名称 | 説明
convertAnnotations | 注釈の外観ストリームのカラースペースを変換するかどうか
detachedPixMaps | このメソッドを呼び出して抽出されたすべての PixMaps

Notes

外部イメージにインライン画像を作成します。

PDF のイメージは通常外部オブジェクトとして保持され、ページのコンテンツストリームから参照されます。しかし、小さい画像を埋め込んでそのイメージのバイナリデータを直接 PDF コンテント ストリームに埋め込むこともできます。これは PDF の特定の処理が複雑になってしまうので必ずしも望ましいとは限りません。

このメソッドにより、そういったインライン画像を抽出し、それらを標準の外部の PixMap オブジェクトに変換することができます。

Example

ありません。


Detach Function

Detach メソッド

ページからコンテンツストリームを切り離します。

Syntax

[C#]
void Detach(StreamObject layer)

[Visual Basic]
Sub Detach(layer As StreamObject)

Params
名称 | 説明
layer | ページから切り離すストリーム

Notes

ページからコンテンツストリームを切り離します。

レイヤーは削除されません。レイヤーのあらゆる参照がページから削除されるだけです。

Example

ありません。


Flatten Function

Flatten メソッド

ページのコンテンツストリームの平坦化と圧縮を行います。

Syntax

[C#]
void Flatten()
void Flatten(bool force)
[Visual Basic]
Sub Flatten()
Sub Flatten(force As Boolean)

Params
名称 | 説明
force | なくなる可能性のある付加的な情報がストリームに含まれていても、強制的に平坦化するかどうか（デフォルト値は false）
戻り値 | ページを平坦化するかどうか

Notes

ページに追加されたオブジェクトは個別のレイヤーとして保持されます。このメソッドを呼び出すと、現在のページのレイヤーをすべて平坦化し、レイヤーデータを再圧縮します。

このメソッドは Doc.Flatten メソッドと同じですが、Doc.Flatten メソッドが慎重になる時でさえ、「force」パラメータを使用して強制的にページを平坦化できます。

Doc.Flatten メソッドは、さまざまなレイヤーにさまざまな情報をタグ付けできるので慎重になります。ページの平坦化は、結果的にこの種の情報がなくなってしまいます。この種のタグ付けは PDF の仕様で定義されているものではありませんが、ドキュメントに付加的な情報を追加するために、さまざまな第三者アプリケーションがこのような特許技術を活用する可能性があります。

しかし、ある種の操作で、例えば PDF の描画操作を複数のコンテンツストリームに分ける場合にページの平坦化に失敗するのは非常に不都合があります。PDF のオペレータの位置を特定するために Doc.GetText メソッドを使用してページを分析し更新する場合、この種の問題を解決するのは非常に厄介です。

Example

ありません。


GetAnnotations メソッド

ページのすべての注釈を取得します。

Syntax

[C#]
Annotation[] GetAnnotations()
[Visual Basic]
Function GetAnnotations() As Annotation()

Params
名称 | 説明
戻り値 | ページのすべての注釈の配列

Notes

ページのすべての Annotation を取得します。

Example

ありません。


GetLayers メソッド

ページ内のすべてのレイヤーを取得します。

Syntax

[C#]
StreamObject[] GetLayers()
[Visual Basic]
Function GetLayers() As StreamObject()

Params
名称 | 説明
戻り値 | ページ内のすべてのレイヤーの配列

Notes

ページ内のすべての Layer を取得します。

Example

ありません。


GetNamedSeparations Function

GetNamedSeparations メソッド

ページで参照された、指定したセパレーションをすべて取得します。

Syntax

[C#]
string[] GetNamedSeparations()
[Visual Basic]
Function GetNamedSeparations() As String()

Params
名称 | 説明
戻り値 | セパレーションの名前の配列

Notes

ページで参照された、指定したセパレーションをすべて取得します。

通常、指定したセパレーションはそのページで使われるのでそのページで参照されます。

しかし、これは必然的なことではありません。セパレーションを参照できますが決して使われません。

Example

ありません。


GetText Function

GetText メソッド

現在のページから指定した形式でコンテンツを抽出します。

Syntax

[C#]
string GetText(TextType type, bool includeAnnotations)
[Visual Basic]
Function GetText(type As TextType, includeAnnotations As Boolean) As String

Params
名称 | 説明
type | 取得するコンテンツの形式
includeAnnotations | フィールドや注釈テキストを含めるかどうか
戻り値 | セパレーション名の配列

Notes

TextType 列挙体は次の値を取得できます。

  • Text
  • RawText
  • Svg
  • SvgPlus
  • SvgPlus2

Text はレイアウト順で、読み取り順と同じではないかもしれません。ABCpdf はテキスト項目の組み合わせ方を賢明に仮定しますが、曖昧な場合があります。TextType.Text 形式はより判読可能な出力にするために精巧なテキスト分析や補間を提供します。TextType.RawText 形式はより高速で簡素で、ドキュメントのテキストの文字通りの解釈を提供します。

SVG はベクタグラフィックスを表現するための XML ベースの形式です。SVG は標準の XML なので解析が簡単で、ページ上の各テキスト項目の正確な位置を知らせます。現在、ABCpdf は SVG のテキスト、パス、イメージのプレースホルダ―をサポートしています。

例えば、簡単な「Hello World」PDF は、以下のような内容になります。

<?xml version="1.0" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg width="612" height="792" x="0" y="0">
<text x="0" y="76.8" font-size="96" font-family="Times-Roman" >Hello World</text>
</svg>

SVG+ と SVG+2 は注釈付きの SVG 形式で、PDF オペレータの詳細やそれらと SVG のコンテンツ項目との関連性を含んでいます。これらは、PDF のページを分解して PDF のオブジェクトと SVG のオブジェクトの関連性を定義する場合に非常に役立ちます。SVG+ では、SVG の要素は PDF オペレータを生成する PDF 要素の前に登場し、フォームの XObject で Do オペレータの PDF 要素は生成されません。SVG+2 では、SVG の要素は PDF のオペレータを生成する PDF 要素の後に登場し、フォームの XObjects で Do オペレータの PDF 要素が生成されます。

例えば、SVG+ を使用して、あるページの特定の単語に関する PDF ストリームのセクションを特定できます。そして、その単語のテキストの show オペレータを別のものに置換できます。事実上、PDF 文書で低レベルの検索/置換操作を行うことになります。しかし、これは、例えば、短い単語を長いものに置換する場合に、レイアウトが自動調節されるわけではないので注意が必要です。

SVG+ の公定基準はありませんが、PDF の仕様がお分かりであれば、理解するのは簡単です。

例えば、簡単な「Hello World」PDF は以下のような内容になります。

<?xml version="1.0" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
                                        "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg width="612" height="792" x="0" y="0">
<pdf pdf_Op="q" pdf_StreamID="5" pdf_StreamOffset="0" pdf_StreamLength="1"
                                        />
<pdf pdf_Op="BT" pdf_StreamID="5" pdf_StreamOffset="3" pdf_StreamLength="2"
                                        />
<pdf pdf_Op="0 Tr" pdf_StreamID="5" pdf_StreamOffset="7"
                                        pdf_StreamLength="4" />
<pdf pdf_Op="/Fabc6 96 Tf" pdf_StreamID="5" pdf_StreamOffset="13"
                                        pdf_StreamLength="12" />
<pdf pdf_Op="0 0 0 rg" pdf_StreamID="5" pdf_StreamOffset="27"
                                        pdf_StreamLength="8" />
<pdf pdf_Op="1 0 0 1 0 715.2 Tm" pdf_StreamID="5" pdf_StreamOffset="37"
                                        pdf_StreamLength="18" />
<pdf pdf_Op="0 Ts" pdf_StreamID="5" pdf_StreamOffset="57"
                                        pdf_StreamLength="4" />
<text x="0" y="76.8" font-size="96" font-family="Times-Roman" pdf_CTM="1 0 0
                                        1 0 0" pdf_TM="1 0 0 1 0 715.2" pdf_Trm="96 0 0 96 0 715.2" pdf_Tf="Fabc6"
                                        pdf_Tz="100" pdf_Ts="0" pdf_w1000="5027" pdf_Op="(Hello World) Tj"
                                        pdf_StreamID="5" pdf_StreamOffset="63" pdf_StreamLength="16" >Hello
                                        World</text>
<pdf />
<pdf pdf_Op="ET" pdf_StreamID="5" pdf_StreamOffset="81" pdf_StreamLength="2"
                                        />
<pdf pdf_Op="Q" pdf_StreamID="5" pdf_StreamOffset="85" pdf_StreamLength="1"
                                        />
</svg>

PDF ストリーム内のオペレータは SVG で記述されています。例えば、最初の「q」オペレータはオブジェクト ID 5 のオフセット 0 にあり、長さは 1 バイトです。「Hellow World」を示す「Tj」オペレータはオフセット 63 にあり、長さは 16 です。CTM （現在の変換行列）、TM (Text Matrix) や PDF のその他の重要なステート値が示されています。

Example

ありません。


Recolor Function

Recolor メソッド

ページを、1つのカラースペースから別のカラースペースに変換します。

Syntax

[C#]
void Recolor(ColorSpace space, bool convertAnnotations)
void Recolor(ColorSpace space, bool convertAnnotations, out PixMap[] recoloredPixMaps)

[Visual Basic]
Sub Recolor(space As ColorSpace, convertAnnotations As Boolean)
Sub Recolor(space As ColorSpace, convertAnnotations As Boolean, <Out> ByRef recoloredPixMaps As PixMap())

Throws Exceptions  エラーの場合、Exception() が発生します。

Params
名称 | 説明
space | 変換先のカラースペース
convertAnnotations | 注釈の外観ストリームのカラースペースを変換するかを定義します
recoloredPixMaps | このメソッドの呼び出しで変換し直された、すべての PixMaps

Notes

ページを、1つのカラースペースから別のカラースペースに変換します。

そのページで使用されたすべてのイメージは新しいカラースペースに変換されます。そのページのコンテンツストリームで使用されたすべてのカラー演算子は新しいカラースペースに変換されます。

注釈やフィールドはページの一部ではなく、ページの上に浮いています。注釈の外観ストリームを変換するのか、それとも本来のカラースペースのままにしておくのかを選択できます。

カラースペースの特性について何か知っていれば、あるカラースペースから別のカラースペースに色のマッピングだけを実用的に行うことができます。カラースペースにこの情報（例えばデバイスのカラースペースかどうか）がなければ、ABCpdf はデフォルトのカラープロファイルを使用します。

処理できない場合は例外が発生します。これは Page が ObjectSouｐ でない場合や ColorSpace オブジェクトが何らかの理由で無効の場合に起こることがあります。

Recolor 処理の一部として、そのページで使用したすべてのイメージに対して PixMap.Recolor を呼び出す必要があります。Recolor 処理が済むと、これらの PixMap オブジェクトはもう圧縮されません。StreamObject.Compress メソッドを使用して PixMap オブジェクトを圧縮できます。

Example

ありません。


VectorizeText Function

VectorizeText メソッド

ページのテキストをグリフのアウトラインに置き換えます。

Syntax

[C#]
void VectorizeText()
[Visual Basic]
Sub VectorizeText()

Throws Exceptions  エラーの場合、Exception() が発生します。

Params
名称 | 説明
なし |

Notes

テキストをベクター化、つまりテキストを同等のグリフのポリゴンのアウトラインに置き換えます。

Example

[C#]
Doc theDoc = new Doc();
theDoc.FontSize = 96;
theDoc.AddText("Hello World");
List<Page> theList = new List<Page>();
foreach (IndirectObject obj in theDoc.ObjectSoup) {
  Page page = obj as Page;
  if (page != null) {
    theList.Add(page);
  }
}
for (int i = 0; i < theList.Count; i++) {
  Page page = theList[i];
  page.VectorizeText();
}
theDoc.Save(Server.MapPath("VectorizedText.pdf"));
theDoc.Clear();
[Visual Basic]
Dim theDoc As Doc = New Doc()
theDoc.FontSize = 96
theDoc.AddText("Hello World")
Dim obj As IndirectObject
Dim thePage As Page
Dim theList As New List(Of Page)
For Each obj in theDoc.ObjectSoup
  thePage = TryCast(obj, Page)
  If thePage IsNot Nothing Then
    theList.Add(thePage)
  End If
Next
For Each thePage As Page in theList
  thePage.VectorizeText()
Next
theDoc.Save(Server.MapPath("VectorizedText.pdf"))
theDoc.Clear()


PageNumber Property

PageNumber プロパティ

型 | デフォルト値 | 読み取り専用 | 説明
[C#] int [Visual Basic] Integer | なし | はい | ドキュメントのページ番号

Notes

現在の Page Number を保持します。

PageNumber は、1から Doc.PageCount までのインデックスを使用するページを表します。

Example

ありません。


Parent Property

Parent プロパティ

型 | デフォルト値 | 読み取り専用 | 説明
[C#] Pages [Visual Basic] Pages | なし | はい | このページの親

Notes

このページの親の Pages オブジェクトをあらわします。

Example

ありません。


Rotation Property

Rotation プロパティ

型 | デフォルト値 | 読み取り専用 | 説明
[C#] int [Visual Basic] Integer | なし | いいえ | 表示前のページの回転度数

Notes

表示前のページの回転度数（時計回り）。

0 と 180 の値は縦を表します。90 と 270 の値は横を表します。

値は 90 の倍数でなければなりません。

Example

ありません。


Pages Class

Pages クラス

ドキュメントの Pages のノード

System.Object
   WebSupergoo.ABCpdf9.Objects.IndirectObject
      WebSupergoo.ABCpdf9.Objects.Pages

メソッド | 説明
GetPageArray | ノードに表示しているすべての Page オブジェクトを取得します
Recolor | ページのカラースペースを変換します
 | 継承されたメソッド...

プロパティ | 説明
Count | ノードに表示しているページ数
Parent | ノードの親
 | 継承されたプロパティ...


GetPageArray メソッド

ノードに表示しているすべての Page オブジェクトを取得します。

Syntax

[C#]
Page[] GetPageArray()
[Visual Basic]
Function GetPageArray() As Page()

Params
名称 | 説明
戻り値 | ノードに表示しているすべての Page オブジェクトの配列

Notes

ノードに表示しているすべての Page オブジェクトを取得します。

Example

ありません。


Recolor Function

Recolor メソッド

ページを、1つのカラースペースから別のカラースペースに変換します。

Syntax

[C#]
void Recolor(ColorSpace space, bool convertAnnotations)
void Recolor(ColorSpace space, bool convertAnnotations, out PixMap[] recoloredPixMaps)

[Visual Basic]
Sub Recolor(space As ColorSpace, convertAnnotations As Boolean)
Sub Recolor(space As ColorSpace, convertAnnotations As Boolean, <Out> ByRef recoloredPixMaps As PixMap())

Throws Exceptions  エラーの場合、Exception() が発生します。

Params
名称 | 説明
space | 変換先のカラースペース
convertAnnotations | 注釈の外観ストリームのカラースペースを変換するかを定義します
recoloredPixMaps | このメソッドの呼び出しによって色を変換し直されたすべての PixMaps

Notes

ページを、1つのカラースペースから別のカラースペースに変換します。

このメソッドはこのページのグループ内のすべての Page オブジェクトに対して Page.Recolor メソッドを呼び出します。

Example

ありません。


Count プロパティ
型 | デフォルト値 | 読み取り専用 | 説明
[C#] int [Visual Basic] Integer | なし | はい | ノードに表示しているページ数

Notes

ノードに表示しているページ数を表します。

Example

ありません。


Parent プロパティ
型 | デフォルト値 | 読み取り専用 | 説明
[C#] Pages [Visual Basic] Pages | なし | はい | ノードの親

Notes

ノードの親の Pages のオブジェクトをあらわします。

Example

ありません。


PixMap Class

PixMap クラス

ビットマップ形式のイメージ

System.Object
   WebSupergoo.ABCpdf9.Objects.IndirectObject
      WebSupergoo.ABCpdf9.Objects.StreamObject
         WebSupergoo.ABCpdf9.Objects.PixMap

メソッド | 説明
Throws Exceptions CompressCcitt | イメージを CCITT 形式で圧縮します
Throws Exceptions CompressJbig2 | イメージを JBIG2 形式で圧縮します
Throws Exceptions CompressJpeg | イメージを JPEG 形式で圧縮します
Throws Exceptions CompressJpx | イメージを JPEG 2000 形式で圧縮します
Throws Exceptions GetBitmap | PixMap イメージを System.Drawing.Bitmap として取得します
Throws Exceptions Realize | イメージをコンポーネントカラーに変換します
Throws Exceptions Recolor | イメージのカラースペースを別のカラースペースに変換します
Throws Exceptions Resample | カラーコンポーネントのビット数を変更します
Throws Exceptions Resize | イメージのサイズを変更します
SetAlpha | イメージに一定のアルファ値(0-255)を設定します
SetChromakey | イメージにクロマキーの透明色を設定します
ToGrayscale | イメージをグレースケールに変換します
 | 継承されたメソッド...

プロパティ | 説明
AutoFix | 壊れているイメージを自動修正します
BitsPerComponent | カラーコンポーネントのビット数
Throws Exceptions ColorSpace | イメージの ColorSpace
ColorSpaceType | イメージのカラースペースの型
Components | 各ピクセルのカラーコンポーネントの数
ImageMask | イメージが 1 ビットのマスクイメージか定義します
Height | ピクセル単位のイメージの高さ
Width | ピクセル単位のイメージの幅
 | 継承されたプロパティ...


CompressCcitt Function

CompressCcitt メソッド

イメージを CCITT 形式で圧縮します。

Syntax

[C#]
void CompressCcitt()
[Visual Basic]
Sub CompressCcitt()

Throws Exceptions  エラーの場合、Exception() が発生します。

Params
名称 | 説明
なし |

Notes

イメージを CCITT 形式で圧縮します。

CCITT 形式の圧縮は白黒のイメージしかサポートしません。これは、ＦＡＸ やスキャンされたイメージにとって最適なロスレス圧縮形式です。

BitsPerComponent と Components の値を 1 に設定すると、PixMap はこのメソッドを使用して圧縮します。BitsPerComponent と Components の値が 1 ではない場合、例外が発生します。

Example

ありません。


CompressJbig2 Function

CompressJbig2 メソッド

イメージを JBIG2 形式で圧縮します。

Syntax

[C#]
void CompressJbig2()
[Visual Basic]
Sub CompressJbig2()

Throws Exceptions  エラーの場合、Exception() が発生します。

Params
名称 | 説明
なし |

Notes

イメージを JBIG2 形式で圧縮します。

JBIG2 形式の圧縮は白黒のイメージしかサポートしません。これは、繰り返しパターンを含むスキャンしたドキュメントのようなイメージに効果的です。

Example

ありません。


CompressJpeg Function

CompressJpeg メソッド

イメージを JPEG 形式で圧縮します。

Syntax

[C#]
void CompressJpeg(int quality)
[Visual Basic]
Sub CompressJpeg(quality As Integer)

Throws Exceptions  エラーの場合、Exception() が発生します。

Params
名称 | 説明
quality | JPEG の圧縮品質 (0 - 100)

Notes

イメージを JPEG 形式で圧縮します。

JPEG 形式の圧縮は RGB、グレースケールや CMYK をサポートします。写真のような連続階調（グラデーション）のイメージに効果的です。しかし、非可逆圧縮で非圧縮イメージと比較すると品質が劣る場合があります。

JPEG 形式の圧縮品質値は 0 から 100 までで、小さいほどファイルサイズは小さくなりますがイメージの品質は悪くなります。一般的に 75 を勧めます。

Example

Recolor メソッドを参照してください。


CompressJpx Function

CompressJpx メソッド

イメージを JPEG2000 形式で圧縮します。

Syntax

[C#]
void CompressJpx(int quality)
[Visual Basic]
Sub CompressJpx(quality As Integer)

Throws Exceptions  エラーの場合、Exception() が発生します。

Params
名称 | 説明
quality | JPEG2000 の圧縮品質 (0 - 100)

Notes

イメージを JPEG2000 形式で圧縮します。

JPEG2000 形式の圧縮は RGB、グレースケールや CMYK をサポートします。写真のような連続階調（グラデーション）のイメージに効果的です。しかし、非可逆圧縮で非圧縮イメージと比較すると品質が劣る場合があります。

JPEG2000 形式の圧縮品質値は 0 から 100 までで、小さいほどファイルサイズは小さくなりますがイメージの品質は悪くなります。一般的に 75 を勧めます。

Example

ありません。


GetBitmap Function

GetBitmap メソッド

PixMap イメージを System.Drawing.Bitmap として取得します。

Syntax

[C#]
virtual System.Drawing.Bitmap GetBitmap()
[Visual Basic]
Overridable Function GetBitmap() As System.Drawing.Bitmap

Throws Exceptions エラーの場合、 Exception() が発生します。

Params
名称 | 説明
戻り値 | イメージを含んでいる Bitmap

Notes

PixMap イメージを System.Drawing.Bitmap として取得します。

その後で、このビットマップを使用して画面に描画するか、System.Drawing のルーチンで操作できます。

ABCpdf は、色の変更とスピードを最小限にするために、PixMap に含まれているイメージをそのままコピーしようとします。

しかし、PDF イメージは System.Drawing でサポートされている多くのカラースぺースやビット深度を含めることができるので、イメージのカラースペースまたはビット深度を変更しなければならない場合があります。

更に、表示前にイメージの変更に使用できる、デコード配列などの特定のパラメータがあります。このメソッドは、イメージ内容をできるだけそのまま返します。つまり、デコード配列やアルファチャンネルは含まれません。

一部のビットマップ形式は特定の操作に使用できないので注意してください。特に、Graphics.FromImage メソッドを使ってインデックスカラーのビットマップに描画することができません。この理由から、返されたビットマップに描画したい場合は、使用前にそのピクセル形式を確認してください。

Example

ContentExtract サンプル プロジェクトを参照してください。


Realize メソッド

イメージをコンポーネントカラーに変換します。

Syntax

[C#]
void Realize()
[Visual Basic]
Sub Realize()

Throws Exceptions エラーの場合、Exception() が発生します。

Params
名称 | 説明
なし |

Notes

イメージをコンポーネントカラーに変換します。クロマキーをマスクに変換します。復号配列を除去します。

インデクスカラースペースはパレットカラーに使用されます。パレットの各項目は DeviceRGB のような基本カラースペースに基づいて定義されます。パレットの最大数は 256 です。

このメソッドでインデクスカラーのイメージを実行すると、圧縮が無くなります。圧縮をする場合、StreamObject.Compress メソッドを使用してください。

Example

Resize メソッドを参照してください。


Recolor Function

Recolor メソッド

イメージのカラースペースを別のカラースペースに変換します。

Syntax

[C#]
void Recolor(ColorSpace space)
void Recolor(ColorSpace space, RenderingIntent intent)

[Visual Basic]
Sub Recolor(space As ColorSpace)
Sub Recolor(space As ColorSpace, intent As RenderingIntent)

Throws Exceptions エラーの場合、Exception() が発生します。

Params
名称 | 説明
space | 変換先のカラースペース
intent | レンダリングインテント（カラースペースの変換方法）の列挙定数。変換方法が与えられない場合、そのイメージのデフォルト値（一般的には RelativeColorimetric）が使用されます。

Notes

イメージのカラースペースを別のカラースペースに変換します。

このメソッドを実行すると、現在のカラースペースから新しいカラースペースにマッピングされている PixMap イメージのピクセルになります。新しい ColorSpace が PixMap に割り当てられます。そこに新しいカラースペースが無ければ PixMap の ObjectSoup に追加されます。

カラースペースの特性について何か知っている場合のみ、色を別のカラースペースに賢くマッピングできます。カラースペースにこの情報が含まれていない場合（例えばデバイスカラースペースの場合）、ABCpdf はデフォルトのカラープロファイルを使用します。

処理できない場合、例えば ObjectSoup に PixMap が無かったり、ColorSpace オブジェクトが何らかの理由で無効な場合に例外が発生します。

ImageMask プロパティが true の場合、そのイメージにはカラースペースが無いので白黒イメージとなります。イメージマスクは白黒以外にはならないので、このイメージマスクを変更しようとすると例外が発生します。

レンダリングインテント（カラースペースの変換方法）はガモット（色再現領域）外の色の処理方法を定義します。下記の値が有効です。

  • Perceptual (知覚)
  • RelativeColorimetric (相対カラーメトリック)
  • Saturation (彩度)
  • AbsoluteColorimetric (絶対カラーメトリック)

Perceptual（知覚）：
視覚的に良好な状態になるようにマッピングします。これは写真イメージに適しています。一般的に、色再現領域（ガモット）の広いカラースペース（例：RGB）から狭いカラースペース（例：CMYK）にマッピングする時に使用します。

RelativeColorimetric（相対カラーメトリック）：
色再現領域外の色だけ変換し直します。一般的に、同種のカラースペース（例：RGB から RGB、CMYK から CMYK）にマッピングする時に使用します。同じ色値を維持しつつ、輝度を変更することができます。ベクトルグラフィックスに適しています。

Saturation（彩度）：
厳密な色の精度より色を鮮明にすることを重視するグラフやマンガのようなイメージに適しています。

AbsoluteColorimetric（絶対カラーメトリック）：
色再現領域外の色だけ変換し直します。色再現領域に一番近い色を使用します。各種の異なる媒体で正確な再現が求められるロゴやソリッドカラーに適しています。

詳しくは、PDF Reference を参照してください。

PixMap をマッピングし直した後は圧縮がなくなり、 BitsPerComponent （カラーコンポーネントのビット数）は8ビットまたは16ビットになります。圧縮する場合は、 StreamObject.Compress メソッドを使用してください。

Example

ここでは、ドキュメントのイメージをすべて CMYK に変更します。

[C#]
Doc theDoc = new Doc();
theDoc.Read(Server.MapPath("../Rez/spaceshuttle.pdf"));
List<PixMap> theList = new List<PixMap>();
// find all the PixMap objects in the soup
foreach (IndirectObject obj in theDoc.ObjectSoup) {
  PixMap p = obj as PixMap;
  if (p != null)
    theList.Add(p);
}
// add our destination color space
ColorSpace cs = new ColorSpace(theDoc.ObjectSoup);
cs.IccProfile = new IccProfile(theDoc.ObjectSoup, Server.MapPath("../Rez/abccmyk.icc"));
// convert images to our color space
for (int i = 0; i < theList.Count; i++) {
  PixMap p = theList[i];
  p.Recolor(cs, RenderingIntent.Perceptual);
  p.CompressJpeg(75);
}
theDoc.Save(Server.MapPath("pixmaprecolor.pdf"));
theDoc.Clear();
[Visual Basic]
Dim theDoc As New Doc()
theDoc.Read(Server.MapPath("../Rez/spaceshuttle.pdf"))
Dim theList As New List(Of PixMap)
' find all the PixMap objects in the soup
Dim obj As IndirectObject
Dim p As PixMap
For Each obj In theDoc.ObjectSoup
  p = TryCast(obj, PixMap)
  If p IsNot Nothing Then
    theList.Add(p)
  End If
Next ' add our destination color space
Dim cs As New ColorSpace(theDoc.ObjectSoup)
cs.IccProfile = New IccProfile(theDoc.ObjectSoup, Server.MapPath("../Rez/abccmyk.icc"))
' convert images to our color space
For i As Integer = 0 To theList.Count - 1
  p = theList(i)
  p.Recolor(cs, RenderingIntent.Perceptual)
  p.CompressJpeg(75)
Next
theDoc.Save(Server.MapPath("pixmaprecolor.pdf"))
theDoc.Clear()

spaceshuttle.pdf [page 1]

pixmaprecolor.pdf [page 1]


Resample Function

Resample メソッド

カラーコンポーネントのビット数を変更します。

Syntax

[C#]
void Resample(int bitsPerComponent)
[Visual Basic]
Sub Resample(bitsPerComponent As Integer)

Throws Exceptions  エラーの場合、Exception() が発生します。

Params
名称 | 説明
bitsPerComponent | カラーコンポーネントのビット数

Notes

カラーコンポーネントのビット数を変更します。

1、2、4、8、16 ビットをサポートします。

インデックスカラーイメージに対してこのプロパティを変更すると、カラーコンポーネントよりインデックスの精度が変わります。もしコンポーネントの精度を変更するなら PixMap に対して Realize を行う必要があります。

Resize のような命令は 8ビットイメージと 16ビットイメージに対してより自然に実行されます（より良い結果、処理の速さ、メモリをあまり使用しない）。 サイズ変更および 8ビットや 16ビットへの移行を行うなら、Resize の前に Resample を実行した方が良いです。

このメソッドでインデックスカラーのイメージを実行すると、圧縮が無くなります。圧縮をする場合、StreamObject.Compress メソッドを使用してください。

Example

ありません。


Resize Function

Resize メソッド

イメージのサイズを変更します。

Syntax

[C#]
void Resize(int width, int height)
void Resize(int width, int height, Interpolation interpolation)

[Visual Basic]
Sub Resize(width As Integer, height As Integer)
Sub Resize(width As Integer, height As Integer, interpolation As Interpolation)

Throws Exceptions  エラーの場合、Exception() が発生します。

Params
名称 | 説明
width | 変更先のイメージの幅
height | 変更先のイメージの高さ
interpolation | イメージのサイズ変更時に使用する補間法。デフォルトは Auto です。

Notes

指定した補間法で、イメージのサイズを変更します。

全ての補間法が全てのイメージの型に使用できるわけではないので、interpolation パラメータは命令ではなく要求として考えてください。。指定した値が適切でない場合、ABCpdf は自動的に適した値を使用します。

このメソッドを実行すると、イメージには圧縮が無くなります。圧縮をする場合、StreamObject.Compress メソッドを使用してください。

Interpolation 列挙体は次の値を取得できます。

  • Auto
  • NearestNeighbor
  • Linear
  • Cubic
  • Lanczos
  • Super

Auto： ABCpdf が自動的に適した補間法を選択します。品質を重視する場合この値を使用してください。

NearestNeighbor： 処理速度が一番高速ですが、品質が最も低い補間法です。インデックスカラーのイメージの場合、この値しか使用できません。

Linear、Cubic、Lanzcos について下記の違いがあります。
Linear ：品質 - 低 処理速度 - 速
Cubic ：品質 - 中 処理速度 - 中
Lanzcos：品質 - 高 処理速度 - 低

Super：上記3つの方法は一部のイメージのピクセルから加重平均を基に処理を行いますが、大きなイメージを非常に小さくするとデータが無くなる場合があります。そこで、この補間法は全てのイメージのピクセルを基に処理を行います。この補間法はイメージを縦と横同時に縮小する場合に使用できます。

Example

ドキュメントにある全てのイメージの解像度を1/4にリサイズするサンプルです。

[C#]
Doc theDoc = new Doc();
theDoc.Read(Server.MapPath("../Rez/spaceshuttle.pdf"));
foreach (IndirectObject io in theDoc.ObjectSoup) {
  if (io is PixMap) {
    PixMap pm = (PixMap)io;
    pm.Realize(); // eliminate indexed color images
    pm.Resize(pm.Width / 4, pm.Height / 4);
  }
}
theDoc.Save(Server.MapPath("pixmapresize.pdf"));
theDoc.Clear();
[Visual Basic]
Dim theDoc As Doc = New Doc()
theDoc.Read(Server.MapPath("../Rez/spaceshuttle.pdf"))
Dim io As IndirectObject
For Each io in theDoc.ObjectSoup
  If TypeOf io Is PixMap Then
    Dim pm As PixMap = CType(io, PixMap)
    pm.Realize() ' eliminate indexed color images
    pm.Resize(pm.Width / 4, pm.Height / 4)
  End If
Next
theDoc.Save(Server.MapPath("pixmapresize.pdf"))
theDoc.Clear()

spaceshuttle.pdf [page 1]

pixmapresize.pdf [page 1]


SetAlpha メソッド

イメージにアルファ値（透明度 : 0 - 255）を設定します。

Syntax

[C#]
void SetAlpha(double alpha)
[Visual Basic]
Sub SetAlpha(alpha As Double)

Params
名称 | 説明
alpha | イメージに指定するアルファ値（透明度）

Notes

PixMap にアルファ値（透明度）を指定します。

アルファ値は 0（透明）から 255（不透明）までの範囲があります。その範囲外の値は、アルファチャンネルが無効になります。

Example

下記のコードはイメージを描画し、その右下に透明度が50%のイメージを描画します。

[C#]
Doc theDoc = new Doc();
theDoc.Rect.Pin = XRect.Corner.TopLeft;
theDoc.Rect.Magnify(0.5, 0.5);
string thePath = Server.MapPath("../mypics/mypic.tif");
theDoc.AddImageFile(thePath, 1);
theDoc.Rect.Move(theDoc.Rect.Width, -theDoc.Rect.Height);
int i = theDoc.AddImageFile(thePath, 1);
ImageLayer im = (ImageLayer)theDoc.ObjectSoup[i];
im.PixMap.SetAlpha(128);
theDoc.Save(Server.MapPath("pixmapsetalpha.pdf"));
theDoc.Clear();
[Visual Basic]
Dim theDoc As Doc = New Doc()
theDoc.Rect.Pin = XRect.Corner.TopLeft
theDoc.Rect.Magnify(0.5, 0.5)
Dim thePath As String = Server.MapPath("../mypics/mypic.tif")
theDoc.AddImageFile(thePath, 1)
theDoc.Rect.Move(theDoc.Rect.Width, -theDoc.Rect.Height)
Dim i As Integer = theDoc.AddImageFile(thePath,1)
Dim im As ImageLayer = CType(theDoc.ObjectSoup(i), ImageLayer)
im.PixMap.SetAlpha(128)
theDoc.Save(Server.MapPath("pixmapsetalpha.pdf"))
theDoc.Clear()

pixmapsetalpha.pdf


SetChromakey メソッド

イメージにクロマキーの透明色を設定します。

Syntax

[C#]
void SetChromakey(string chromakey)
[Visual Basic]
Sub SetChromakey(chromakey As String)

Params
名称 | 説明
chromakey | イメージに指定するクロマキー文字列

Notes

イメージに透明色や色の範囲を指定します。

色の各コンポーネントのために2つの値を指定します。

たとえば、RGB の白いイメージを作る場合は次のように指定します。

doc.SetChromakey("255 255 255 255 255 255")

オフホワイトのような色を加えたい場合は、次のように指定します。

doc.SetChromakey("250 255 250 255 250 255")

色の値の配列に PixMap "/Mask" を設定すると同じ結果になります。

Example

下記のコードは、緑の背景の上にイメージを追加しました。クロマキーを使用して、黒と黒に近い色の透明色を作成します。

[C#]
Doc theDoc = new Doc();
theDoc.Rect.Inset(20, 20);
theDoc.Color.String = "0 255 0";
theDoc.FillRect();
string thePath = Server.MapPath("../mypics/mypic.tif");
int i = theDoc.AddImageFile(thePath, 1);
ImageLayer im = (ImageLayer)theDoc.ObjectSoup[i];
im.PixMap.SetChromakey("0 50 0 50 0 50");
theDoc.Save(Server.MapPath("pixmapsetchromakey.pdf"));
theDoc.Clear();
[Visual Basic]
Dim theDoc As Doc = New Doc()
theDoc.Rect.Inset(20, 20)
theDoc.Color.String = "0 255 0"
theDoc.FillRect()
Dim thePath As String = Server.MapPath("../mypics/mypic.tif")
Dim i As Integer = theDoc.AddImageFile(thePath,1)
Dim im As ImageLayer = CType(theDoc.ObjectSoup(i), ImageLayer)
im.PixMap.SetChromakey("0 50 0 50 0 50")
theDoc.Save(Server.MapPath("pixmapsetchromakey.pdf"))
theDoc.Clear()

pixmapsetchromakey.pdf


ToGrayscale メソッド

イメージをグレースケールに変換します。

Syntax

[C#]
void ToGrayscale()
[Visual Basic]
Sub ToGrayscale()

Params
名称 | 説明
なし |

Notes

イメージをグレースケールに変換します。マスクの作成に便利です。

このメソッドは現在、RGB イメージをグレースケールに変換するだけで、他のカラースペースにイメージを変換することはできません。

Example

下記のコードは、カラーイメージと右下にグレースケールに変換したイメージを描画します。

[C#]
Doc theDoc = new Doc();
theDoc.Rect.Pin = XRect.Corner.TopLeft;
theDoc.Rect.Magnify(0.5, 0.5);
string thePath = Server.MapPath("../mypics/mypic.tif");
theDoc.AddImageFile(thePath, 1);
theDoc.Rect.Move(theDoc.Rect.Width, -theDoc.Rect.Height);
int i = theDoc.AddImageFile(thePath, 1);
ImageLayer im = (ImageLayer)theDoc.ObjectSoup[i];
im.PixMap.ToGrayscale();
theDoc.Save(Server.MapPath("pixmaptograyscale.pdf"));
theDoc.Clear();
[Visual Basic]
Dim theDoc As Doc = New Doc()
theDoc.Rect.Pin = XRect.Corner.TopLeft
theDoc.Rect.Magnify(0.5, 0.5)
Dim thePath As String = Server.MapPath("../mypics/mypic.tif")
theDoc.AddImageFile(thePath, 1)
theDoc.Rect.Move(theDoc.Rect.Width, -theDoc.Rect.Height)
Dim i As Integer = theDoc.AddImageFile(thePath,1)
Dim im As ImageLayer = CType(theDoc.ObjectSoup(i), ImageLayer)
im.PixMap.ToGrayscale()
theDoc.Save(Server.MapPath("pixmaptograyscale.pdf"))
theDoc.Clear()

pixmaptograyscale.pdf


AutoFix Property

AutoFix プロパティ

型 | デフォルト値 | 読み取り専用 | 説明
[C#] bool [Visual Basic] Boolean | true | いいえ | 壊れているイメージを自動修正します

Notes

壊れているドキュメントに壊れたイメージが含まれている可能性があります。破損で最も一般的なのは、イメージデータの切り捨てですが、エラーが発生するよりはそのイメージデータを使った方がよいというのがほとんどです。

このプロパティが設定されている場合、イメージの解凍時に確認されます。データが切り捨てられているのがわかった場合、下部に空白データが追加されます。

一般的には、壊れているイメージの下部に黒いコンテンツが表示されます。オリジナルデータの切り取られた量に応じて、空白スペースは変わります。

Example

ありません。


BitsPerComponent プロパティ
型 | デフォルト値 | 読み取り専用 | 説明
[C#] int [Visual Basic] Integer | なし | はい | カラーコンポーネントのビット数

Notes

カラーコンポーネントのビット数

1、2、4、8、16 ビットをサポートします。

カラーコンポーネントのビット数を変更する場合、Resample メソッドを使用してください。

Example

ありません。


ColorSpace プロパティ
型 | デフォルト値 | 読み取り専用 | 説明
[C#] ColorSpace [Visual Basic] ColorSpace | なし | はい | イメージの ColorSpace

Notes

イメージの ColorSpace をあらわします。

Example

ありません。


ColorSpaceType プロパティ
型 | デフォルト値 | 読み取り専用 | 説明
[C#] ColorSpaceType [Visual Basic] ColorSpaceType | なし | はい | イメージのカラースペース

Notes

イメージのカラースペース(ColorSpaceType)

このプロパティの参照は、ColorSpace.ColorSpaceType プロパティを参照するより効果的です。

理由は

1. 新しく ColorSpace のオブジェクトを作成する必要がありません。

2. 一部の PixMap (ImageMasksなど)の型にはカラースペースがありません。この場合 ColorSpaceType は PixMap の定義に含まれ、PixMap によって判断されます。

Example

ありません。


Components プロパティ
型 | デフォルト値 | 読み取り専用 | 説明
[C#] int [Visual Basic] Integer | なし | はい | 各ピクセルのカラーコンポーネントの数

Notes

各ピクセルのカラーコンポーネントの数をあらわします。グレースケールのイメージは1つのコンポーネントです。RGB イメージは3つのコンポーネントです。CMYK イメージは4つのコンポーネントです。

このプロパティの参照は、ColorSpace.Components プロパティを参照するより効果的です。

理由は

1. 新しく ColorSpace のオブジェクトを作成する必要がありません。

2. 一部の PixMap (ImageMasks など)の型にはカラースペースがありません。この場合コンポーネントの数は PixMap の定義に含まれ、PixMap によって判断されます。

Example

ありません。


Height プロパティ
型 | デフォルト値 | 読み取り専用 | 説明
[C#] int [Visual Basic] Integer | なし | はい | ピクセル単位のイメージの高さ

Notes

ピクセル単位のイメージの高さをあらわします。

Example

ありません。


ImageMask プロパティ
型 | デフォルト値 | 読み取り専用 | 説明
[C#] bool [Visual Basic] Boolean | なし | はい | イメージが 1ビットのマスクイメージ

Notes

イメージが 1 ビットのマスクイメージか定義します

Example

ありません。


Width プロパティ
型 | デフォルト値 | 読み取り専用 | 説明
[C#] int [Visual Basic] Integer | なし | はい | ピクセル単位のイメージの幅

Notes

ピクセル単位のイメージの幅をあらわします。

Example

ありません。


Signature Class

Signature クラス

PDF 文書のデジタル署名のフィールドを示します。

認証だけではなく、デジタル署名を使用してファイルが署名後に変更されたかも検出できます。

System.Object
   WebSupergoo.ABCpdf9.Objects.IndirectObject
      WebSupergoo.ABCpdf9.Objects.Field
         WebSupergoo.ABCpdf9.Objects.Signature

メソッド | 説明
Throws Exceptions Commit | 以前にサインした署名をドキュメントに書き込みます（元に戻せないようにします）
Throws Exceptions GetCertificates | 証明書のエンコードされた X.509 データを取り出します
Throws Exceptions Sign | 秘密キーとパスワードを使用して、デジタル署名に署名します
Throws Exceptions Validate | デジタル署名の状態の確認と検証を行います
 | 継承されたメソッド...

プロパティ | 説明
IsModified | 署名した後に PDF が改ざんされていると True になります
IsTimeValid | ドキュメントを署名した時、署名の証明書の時間が有効だった場合は True になります
IsSecure | 署名の証明書が ValidationPolicy によって信用された場合は True になります
IsTrusted | 検証ポリシーと照らし合わせて署名の証明書を信用する場合は True になります
Location | 署名した場所
Reason | 署名の理由
Signer | 署名する人の名前
Throws Exceptions SigningUtcTime | 署名の日時 （UTC 形式）
TimestampServiceUrl | タイムスタンプサービスの URL
ValidationPolicy | 証明書検証ポリシー
 | 継承されたプロパティ...


Commit Function

Commit メソッド

以前にサインした署名をドキュメントに書き込みます（元の状態に戻せないようにします）。

Syntax

[C#]
void Commit()

[Visual Basic]
Sub Commit()

Throws Exceptions エラーの場合、 Exception() が発生します。

Params
名称 | 説明
なし |

Notes

サインした後に署名をドキュメントに書き込む必要があります。

通常、これはドキュメントを保存する時に内部的に行われるので何もする必要はありませんが、ドキュメントに複数の署名フィールドがある場合などは保存する前に書き込まなければならない場合があります。

PDF の構造上、署名する度にドキュメントを増分アップデートする必要があります。これは、署名を行う度に PDF ビューアがドキュメントの変更を表示できるようにするためです。そのため、複数のフィールドを署名している場合、署名（最後を除く）ごとにサインして書き込む必要があります。最後の署名は最終保存で無条件に書き込まれるので必要ありません。

それぞれの書き込み後に、以前のフォームのフィールドの参照はすべて無効になります。アップデートされたフォームのフィールドの参照を Doc.Form.Fields プロパティから取得しなければなりません。

Example

ありません。


GetCertificates Function

GetCertificates メソッド

証明書用にエンコードされた X.509 データを取り出します。

Syntax

[C#]
IEnumerable<byte[]> GetCertificates()
IEnumerable<byte[]> GetCertificates(out int outCount)
[Visual Basic]
Function GetCertificates() As IEnumerable(Of Byte())
Function GetCertificates(<Out> ByRef outCount As Integer) As IEnumerable(Of Byte())

Throws Exceptions エラーの場合、 Exception() が発生します。

Params
名称 | 説明
outCount | 証明書の数
戻り値 | 証明書用にエンコードされた X.509 データ

Notes

ドキュメントの署名に使用された証明書のエンコードされた X.509 データを取り出します。通常は1つの証明書だけが返されますが、ドキュメントによっては証明書チェーンの作成に使用可能な付加的な証明書を取得できます。その場合、常に最初の証明書が署名に使用された証明書になります。

このメソッドの戻り値のデータを System.Security.Cryptography.X509Certificates の X509Certificate2 クラスのコンストラクタに渡して、主題、発行者、シリアル番号、バージョンなどの証明書の詳細を取り出すことができます。詳しくは、Annotations サンプルを参照してください。

Example

ありません。


Sign Method

Sign メソッド

秘密キーとパスワードを使用して、デジタル署名に署名します。

Syntax

[C#]
void Sign(string path, string password)
void Sign(byte[] data, string password)
void Sign(Stream stream, string password)
void Sign(X509Certificate2 cert, bool silent)
[Visual Basic]
Sub Sign(path As String, password As String)
Sub Sign(data() As Byte, password As String)
Sub Sign(stream As Stream, password As String)
Sub Sign(cert As X509Certificate2, silent As Boolean)

Throws Exceptions エラーの場合、 Exception() が発生します。

Params
名称 | 説明
path | 署名に使用する PFX/PKCS #12 （.pfx または .p12） ファイルのパス
data | 署名に使用する PFX/PKCS #12 （.pfx または .p12） ファイルのデータ
stream | 署名に使用する PFX/PKCS #12 （.pfx または .p12） ファイルのストリーム
password | 秘密キーの使用を許可するパスワード
cert | 署名に使用する PFX/PKCS #12 （.pfx または .p12） 証明書の System.Security.Cryptography.X509Certificates.X509Certificate2 オブジェクト
silent | 秘密キーを使用しないように指示するかを定義します。（「強力な秘密キーの保護を有効にする」チェックボックスにチェックが付けられた状態（アプリケーションで秘密キーが使われる度に促します）でインポートした）証明書の秘密キーを使用する時にこのパラメータが False の場合、ダイアログボックスが表示されてから閉じなければなりません。このパラメータが True の場合、署名に失敗します。非インタラクティブ/自動運転の場合は、このパラメータを True にしてください。

Notes

署名フィールドに署名します。

署名するには、秘密キーを使用する必要があります。このキーの使用を許可するには、X509Certificate2 証明書を使用していない場合はパスワードが必要です。

通常、秘密キーを保護するパスワードは PFX/PKCS #12 （.pfx または .p12）ファイルにあります。署名を行うには、この PFX/PKCS #12 ファイルのパスと秘密キーの使用を許可するパスワードが必要です。

タイムスタンプ局（TSA） のサービスを使用することで、タイムスタンプ付きの署名を作成できます。TimestampServiceUrl を参照してください。

同じ PDF ドキュメントの複数の署名フィールドに署名する場合、署名をした後その都度 Commit メソッドを手動で呼び出してください。

ファイルを利用できない場合、ファイルが無効な場合、またはパスワードが不正の場合は、例外が発生します。

Example

PDF ドキュメントを読み込んでその中に埋め込まれている署名フィールドに署名を行います。 署名の前に、デジタル署名を行う場所とその理由を明記しています。

[C#]
Doc theDoc = new Doc();
theDoc.Read(Server.MapPath("../Rez/Authorization.pdf"));
Signature theSig = (Signature)theDoc.Form["Signature"];
theSig.Location = "Washington";
theSig.Reason = "Schedule Agreed";
theSig.Sign(Server.MapPath("../Rez/JohnSmith.pfx"), "1234");
theDoc.Save(Server.MapPath("Signed.pdf"));

[Visual Basic]
Dim theDoc As Doc = New Doc()
theDoc.Read(Server.MapPath("../Rez/Authorization.pdf"))
Dim theSig As Signature = theDoc.Form("Signature")
theSig.Location = "Washington"
theSig.Reason = "Schedule Agreed"
theSig.Sign(Server.MapPath("../Rez/JohnSmith.pfx"), "1234")
theDoc.Save(Server.MapPath("Signed.pdf"))


Validate Function

Validate メソッド

署名状態の確認と検証を行います。

Syntax

[C#]bool Validate()
bool Validate(string[] certificatePaths)
bool Validate(System.Collections.IEnumerable certificates)
[Visual Basic]Function Validate() As Boolean
Function Validate(certificatePaths() As String) As Boolean
Function Validate(certificates As System.Collections.IEnumerable) As Boolean

Throws Exceptions エラーの場合、 Exception() が発生します。

Params
名称 | 説明
certificatePaths | X.509 証明書 (.cer) ファイルのパスの配列
certificates | System.Security.Cryptography.X509Certificates.X509Certificate2 のコレクション
戻り値 | 証明書が有効な場合は True を返します

Notes
署名が有効な場合は True を返します。正確には、このメソッドは IsModified、IsTimeValid、IsTrusted プロパティを更新します。IsModified プロパティが False で、IsTimeValid、 IsSecure、IsTrusted プロパティがすべて True の場合だけ、戻り値が True になります。

認証局によって発行された証明書を参照することにより、署名の証明書が有効だと確認できます。

このメソッドは、そのような一連の証明書を参照して、署名状態の確認と検証を行えます。更に、ABCpdf は Windows 証明書ストアの証明書を使って検証することもできます。詳しくは、ValidationPolicy プロパティを参照してください。

用意した証明書をドキュメントレベルでキャッシュするので、このメソッドは1つのドキュメントの複数の署名を確認する場合にも有効です。パラメータを何も設定しない場合、このメソッドは前にキャッシュした証明書を使ってドキュメントを検証します。つまり、ValidationPolicy プロパティが EntireChainTrust に設定されていない、またはこのメソッドの以前の呼び出しを使って証明書が用意されていなければ、パラメータなしでこのメソッドを呼び出すと、検証する証明書がないことを表すエラーが発生します。

ABCpdf は現在、提供された証明書や PDF ドキュメントに埋め込まれた証明書の取り消し確認を行いません。この種の操作をしなければならない場合は、GetCertificates メソッドを使用して独自に証明書を確認してください。

証明書を使えない場合や無効な場合、例外が発生します。つまり、署名されていない署名フィールドに検証を行うと例外が発生します。

Adobe Reader が証明書ファイルなしで PDF ドキュメントを検証するのは？

Adobe Reader は PDF ドキュメントを検証するのに証明書ファイルのリストはいりません。これは、Adobe Reader が内蔵されている複数の公開キーのインフラストラクチャー構成を使って PDF ドキュメントを認証するできるからです。

  • ドキュメント認証サービス（CDS）は、Adobe のルート認証局 (Adobe Root CA) にまでさかのぼってチェーンする信用階層です。
  • Adobe Approved Trust List (AATL) は （Adobe Reader/Acrobat 9 またはそれ以降のバージョン用の） CA 証明書の追加リストで、Adobe Reader は Adobe から定期的にダウンロードできます。
  • Windows の証明書ストア。これは、Acrobat で電子署名の Windows 統合が有効になっている場合のみ True になります（Acrobat 9 および X ではデフォルトではありません）。

Adobe Reader と同じように PDF ドキュメントを検証するには、Adobe Reader が使用しているのと同じ証明書を使う必要があります。これは、Adobe Reader から .cer 形式の証明書ファイルに認証 ID をエクスポートすることにより簡単に行えます。（注意：通常、CDS や AATL 証明書はデフォルトでは Windows 証明書ストアにはありません。）

System.Security.Cryptography.X509Certificates.X509Store （以下のサンプル）を使用して、Windows 証明書ストアにアクセスできます。

Example

[C#]
// Validate using certificate files
Doc theDoc = new Doc();
theDoc.Read(Server.MapPath("../Rez/Signed.pdf"));
string[] theCerts = Server.MapPath("../Rez/JohnSmith.cer").Split(new char[] { ';' });
Signature theSig = (Signature)theDoc.Form["Signature"];
if ((theSig.Validate(theCerts)) && (!theSig.IsModified)) {
  theDoc.AddText("Signature valid at " + DateTime.Now.ToString());
}
theDoc.Save(Server.MapPath("SignedAndValidated.pdf"));

// Validate using the Windows Certificate Store
Doc theDoc = new Doc();
theDoc.Read(Server.MapPath("../Rez/Signed.pdf"));
X509Store theStore = new X509Store(StoreName.Root, StoreLocation.LocalMachine);
theStore.Open(OpenFlags.ReadOnly);
Signature theSig = (Signature)theDoc.Form["Signature"];
if ((theSig.Validate(theStore.Certificates)) && (!theSig.IsModified)) {
  theDoc.AddText("Signature valid at " + DateTime.Now.ToString());
}
theStore.Close();
theDoc.Save(Server.MapPath("SignedAndValidated.pdf"));
[Visual Basic]
' Validate using certificate files
Dim theDoc As Doc = New Doc()
theDoc.Read(Server.MapPath("../Rez/Signed.pdf"))
Dim theCerts() As String = { Server.MapPath("../Rez/JohnSmith.cer") }
Dim theSig As Signature = theDoc.Form("Signature")
If (theSig.Validate(theCerts)) And (Not theSig.IsModified) Then
  theDoc.AddText("Signature valid at " + DateTime.Now.ToString())
End If
theDoc.Save(Server.MapPath("SignedAndValidated.pdf"))

' Validate using the Windows Certificate Store
Dim theDoc As Doc = New Doc()
theDoc.Read(Server.MapPath("../Rez/Signed.pdf"))
Dim theStore As X509Store = New X509Store(StoreName.Root, StoreLocation.LocalMachine)
theStore.Open(OpenFlags.ReadOnly)
Dim theSig As Signature = theDoc.Form("Signature")
If (theSig.Validate(store.Certificates)) And (Not theSig.IsModified) Then
  theDoc.AddText("Signature valid at " + DateTime.Now.ToString())
End If
theStore.Close()
theDoc.Save(Server.MapPath("SignedAndValidated.pdf"))


IsModified Property

IsModified プロパティ

型 | デフォルト値 | 読み取り専用 | 説明
[C#] bool [Visual Basic] Boolean | true | はい | 署名した後に PDF が改ざんされていると True になります

Example

署名した後に PDF が改ざんされているかを確認できます。

ある種の更新が許可されているということをわかっているのが重要です。このプロパティは、PDF のある更新が正当なものかに関係があります。つまり、オリジナルの PDF が何らかの方法で改ざんされているかを確認できます。

しかし、増分更新による PDF の更新が可能です。この増分更新は変更を含んだ PDF を提供しますが、ある署名が行われた時点の PDF の正確な状態に戻すことができます。

通常、これは、署名がいくつもされていて、新しい PDF 更新にそれぞれの署名を適用し、その特定の更新に対して有効にしなければならない場合に必要となります。

Validate メソッドを参照してください。


IsTrusted Property

IsSecure プロパティ

型 | デフォルト値 | 読み取り専用 | 説明
[C#] bool [Visual Basic] Boolean | false | はい | PDF と署名がうまく作成・使用されているように思える場合は True。

Example

PDF と署名がうまく作成・使用されているように思える場合は True を返します。

PDF の署名は特定の部分に置かれ、残りの PDF に付けられるべきですが、技術的には合っていても使い方がまずい/疑わしい署名を作成してしまう可能性があります。

例えば、PDF の最初の部分に付かない署名を作成することもあり得ます。これは合法ですが実用的ではないので、この種の構造は不安だとみなされるはずです。

このプロパティを使用して、署名がうまく実用的に使われているかを確認できます。


IsTrusted Property

IsTrusted プロパティ

型 | デフォルト値 | 読み取り専用 | 説明
[C#] bool [Visual Basic] Boolean | false | はい | 検証ポリシーと照らし合わせて署名の証明書を信用する場合は True になります

Example

Validate メソッドと ValidationPolicy プロパティを参照してください。


IsTimeValid Property

IsTimeValid プロパティ

型 | デフォルト値 | 読み取り専用 | 説明
[C#] bool [Visual Basic] Boolean | false | はい | ドキュメントを署名した時、署名の証明書の時間が有効だった場合は True になります。

Example

Validate メソッドを参照してください。


Location Property

Location プロパティ

型 | デフォルト値 | 読み取り専用 | 説明
[C#] string [Visual Basic] String | null | いいえ | 署名した場所

Notes

署名した場所

このプロパティを設定する場合、Sign メソッドを呼び出す前に設定してください。

このプロパティに null 値も設定できます。null の場合は場所指定なしになります。

注意： このプロパティは証明書が有効な場合にのみ効果があります。証明書の検証については Validate メソッドで確認できます。

Example

Sign メソッドを参照してください。


Reason Property

Reason プロパティ

型 | デフォルト値 | 読み取り専用 | 説明
[C#] string [Visual Basic] String | null | いいえ | 署名の理由

Notes

署名の理由

このプロパティを設定する場合、Sign メソッドを呼び出す前に設定してください。

このプロパティに null 値も設定できます。null の場合は理由なしになります。

注意： このプロパティは証明書が有効な場合にのみ効果があります。証明書の検証については Validate メソッドで確認できます。

Example

Sign メソッドを参照してください。


Signer Property

Signer プロパティ

型 | デフォルト値 | 読み取り専用 | 説明
[C#] string [Visual Basic] String | 説明をご覧ください | いいえ | 署名する人の名前

Notes

署名する人の名前

Sign メソッドを呼び出すと、秘密キーに関連付けられている名前と合致するように署名する人の名前が自動的に更新されます。

注意： このプロパティは証明書が有効な場合にのみ効果があります。証明書の検証については Validate メソッドで確認できます。

低レベルで署名を操作するコードを書かない限り、このプロパティを変更する必要はありません。

Example

ありません。


SigningUtcTime Property

SigningUtcTime プロパティ

型 | デフォルト値 | 読み取り専用 | 説明
[C#] DateTime [Visual Basic] DateTime | 説明を参照してください | いいえ | 署名の日時（UTC 形式）

Notes

署名の日時（UTC 形式）

Sign メソッドを呼び出すと、UTC 日時が自動的に更新されます。

注意： このプロパティは証明書が有効な場合にのみ効果があります。証明書の検証については Validate メソッドで確認できます。

低レベルで署名を操作するコードを書かない限り、このプロパティを変更する必要はありません。

PDF の日時形式が正しくないと、例外が発生します。

Example

ありません。


TimestampServiceUrl Property

TimestampServiceUrl プロパティ

型 | デフォルト値 | 読み取り専用 | 説明
[C#] System.Uri [Visual Basic] System.Uri | null | いいえ | タイムスタンプサービスの URL

Notes

このプロパティが null ではない場合、Sign メソッドを呼び出すと、このプロパティに指定した URL で提供されているサービスを使用して X.509 の RFC 3161 のタイムスタンプ付き署名が作成されます。このプロパティは、Sign メソッドのオプションとして機能するのであって、PDF ドキュメントには残らないので注意してください。

タイムスタンプ局が認証を求めた場合、URL に認証情報を指定できます。

例： https://username:password@example.com/tsp

ABCpdf は System.Net.WebRequest を使ってタイムスタンプ要求を送ります。SSL/TLS チャンネルに接続する時に System.Net.ServicePointManager.ServerCertificateValidationCallback を使用して信頼関係をカスタマイズできます。

Example

ありません。


ValidationPolicy Property

ValidationPolicy プロパティ

型 | デフォルト値 | 読み取り専用 | 説明
[C#] ValidationPolicyType [Visual Basic] ValidationPolicyType | EntireChainTrust | いいえ | 証明書検証ポリシー

Notes

証明書検証ポリシーを表します。

ValidationPolicyType 列挙体の値は次の通りです。

  • EntireChainTrust
  • CertificateSignatureOnly

Validate メソッドを呼び出すと、オプションで付加的な証明書を渡すことができます。このプロパティはそういった証明書の使用方法と文書署名の証明書の検証方法を表します。

このプロパティを EntireChainTrust に設定すると、ABCpdf は RFC 5280 に書かれているように X.509 の認証パス検証を行うことにより、信頼できるルート認証局（トラストアンカー）に対して文書署名の証明書を検証できるか確認します。ABCpdf は、ローカルマシンの Windows 証明書ストアの「信頼できるルート認証局」にある証明書をトラストアンカーとして使用します。Validate メソッドに渡された証明書は、付加的なトラストアンカーと見なされます。

このプロパティを CertificateSignatureOnly に設定した場合、ABCpdf は少なくとも文書署名の証明書の1つが Validate メソッドに渡された証明書のうちの1つの公開キーで署名されているか確認します。この値が設定されている場合、Valudate メソッドは Windows 証明書ストアを確認しません。Validate メソッドに証明書が何も渡されていない場合、例外が発生します。

EntireChainTrust は、Acrobat が証明書チェーンを確立する方法であり PKI の通常の動作方法でもあるのでデフォルト値として妥当です。

Example

ありません。


StreamObject Class

StreamObject クラス

PDF データのストリーム

System.Object
   WebSupergoo.ABCpdf9.Objects.IndirectObject
      WebSupergoo.ABCpdf9.Objects.StreamObject
         WebSupergoo.ABCpdf9.Objects.IccProfile
         WebSupergoo.ABCpdf9.Objects.Layer
         WebSupergoo.ABCpdf9.Objects.PixMap

メソッド | 説明
Throws Exceptions StreamObject | StreamObject を構築します
ClearData | ストリームのデータや圧縮設定をクリアします
ClearCachedDecompressed | ストリームのキャッシュされ解凍されたデータをクリアします
Compress | ストリームのデータを圧縮します
CompressAscii85 | ASCII 85 圧縮を使用してストリームのデータを圧縮します
CompressAsciiHex | ASCII Hex 圧縮を使用してストリームのデータを圧縮します
CompressFlate | Flate 圧縮を使用してストリームのデータを圧縮します
CompressRunLength | Run Length （ランレングス）圧縮を使用してストリームのデータを圧縮します
Decompress | ストリームのデータを解凍します
GetData | ストリームのバイナリーデータを取得します
SetData | ストリームのバイナリーデータを設定します
Throws Exceptions SetFile | ファイルのデータをストリームのバイナリに設定します
GetText | ストリームの内容を文字列で取得します
SetText | ストリームの内容を文字列として設定します
 | 継承されたメソッド...

プロパティ | 説明
Compressed | ストリームデータを圧縮あるいは暗号化します
Compression | 主な圧縮タイプ
Compressions | ストリームに適用するすべての圧縮タイプ
Length | 暗号化されたストリームデータのバイト数
 | 継承されたプロパティ...


StreamObject コンストラクタ

StreamObject のコンストラクタ

Syntax

[C#]
StreamObject(ObjectSoup soup)
StreamObject(ObjectSoup soup, byte[] data)
StreamObject(ObjectSoup soup, string path)
[Visual Basic]
Sub New(soup As ObjectSoup)
Sub New(soup As ObjectSoup, data() As Byte)
Sub New(soup As ObjectSoup, path As String)

Params
名称 | 説明
soup | 新規に作成する StreamObject を含む ObjectSoup
data | StreamObject に書き込まれるバイト配列
path | StreamObject に書き込まれるデータを含むファイルのパス

Notes

StreamObject を作成します。

引数がないと、StreamObject にはデータが含まれません。この場合は例外が発生しません。

バイト配列の引数を設定すると、StreamObject のデータがバイト配列の内容で初期化されます。この場合は例外が発生しません。

文字列の引数を設定すると、StreamObject のデータがファイルの内容で初期化されます。ファイルを読むことができないと、例外が発生します。

Example

ありません。


ClearData メソッド

ストリームのデータや圧縮設定をクリアします。

Syntax

[C#]
void ClearData()

[Visual Basic]
Sub ClearData()

Params
名称 | 説明
なし |

Notes

すべてのデータや圧縮設定をクリアして、データのないストリームになります。

Example

ありません。


ClearCachedDecompressed Function

ClearCachedDecompressed メソッド

ストリームのキャッシュされ解凍されたデータをクリアします。

Syntax

[C#]
void ClearCachedDecompressed()
[Visual Basic]
Sub ClearCachedDecompressed()

Params
名称 | 説明
なし |

Notes

非圧縮データは大半の命令時に圧縮ストリームから取得されますが、それでもストリームは圧縮されます。（実際のストリームの解凍を含む）後の命令が解凍アルゴリズムを発生する必要がないように、非圧縮データは時々キャッシュされます。

これはメモリの使用量が増し、ドキュメントのメモリでの保持期間が伸びるのは望ましいことではありません。

このメソッドは、キャッシュされ解凍されたデータをクリアして、再度読み取ったドキュメントのメモリを解放する必要がないようにます。

Doc.ClearCachedDecompressedStreams メソッドを使用して、複数のストリームオブジェクトに適用できます。

Example

ありません。


Compress メソッド

ストリームのデータを圧縮します。

Syntax

[C#]
void Compress()

[Visual Basic]
Sub Compress()

Params
名称 | 説明
なし |

Notes

ストリームのデータが圧縮されていない場合に圧縮します。

Example

ありません。


CompressAscii85 Function

CompressAscii85 メソッド

ASCII 85 圧縮を使用してストリームのデータを圧縮します。

Syntax

[C#]
bool CompressAscii85()
bool CompressAscii85(bool force)
[Visual Basic]
Sub CompressAscii85() As Boolean
Sub CompressAscii85(force As Boolean) As Boolean

Params
名称 | 説明
force | ASCII 85 圧縮を使用して強制的にストリームを圧縮します
戻り値 | 圧縮が適用されているか確認します

Notes

ASCII 85 圧縮を使用してストリームのデータを圧縮します。

ASCII 85 は5バイトのデータをそれぞれ4文字の ASCII 表記に置換します。それ自体は厳密には圧縮メソッドではないのでデータのサイズは約20%増えてしまいますが圧縮されたデータは ASCII になり、PDF データをテキストとして扱わなければならない場合に役立ちます。

PDF ストリームは、ストリームのデータに圧縮フィルタのセットを使えるようにします。例えば、Flate 圧縮してから ASCII85 エンコーディングする場合です。これは2つの圧縮フィルタとして順番に表されます。

このメソッドはストリームを解凍しません。既に圧縮されている場合、このメソッドは既に圧縮されたデータを圧縮した後にその圧縮設定を追加します。

ABCpdf は特定の圧縮順番にならないようにします。あるオブジェクトでの圧縮タイプが違法だったり、圧縮の順番は違法でなくても、（その他のほとんどのビューアではサポートされていても） Acrobat でサポートされていなかったりします。ただ、これらは稀で恐らく目にすることはありません。

強制的に圧縮してこの動作をオーバーライドできますが、オーバーライドすると Acrobat で無効または表示できないドキュメントが作成されてしまう場合があります。

Example

ありません。


CompressAsciiHex Function

CompressAsciiHex メソッド

ASCII Hex 圧縮を使用してストリームのデータを圧縮します。

Syntax

[C#]
bool CompressAsciiHex()
bool CompressAsciiHex(bool force)
[Visual Basic]
Sub CompressAsciiHex() As Boolean
Sub CompressAsciiHex(force As Boolean) As Boolean

Params
名称 | 説明
force | ASCII Hex 圧縮を使用して強制的にストリームを圧縮します
戻り値 | 圧縮が適用されているか確認します

Notes

ASCII Hex 圧縮を使用してストリームのデータを圧縮します。

ASCII Hex は、各データのバイトを2バイトの16進数表記に置換します。それ自体は厳密には圧縮メソッドではないのでデータのサイズは倍になってしまいますが圧縮されたデータは ASCII になり、PDF データをテキストとして扱わなければならない場合に役立ちます。

PDF ストリームは、ストリームのデータに圧縮フィルタのセットを使えるようにします。例えば、Flate 圧縮してから ASCII85 エンコーディングにする場合です。これは2つの圧縮フィルタとして順番に表されます。

このメソッドはストリームを解凍しません。既に圧縮されている場合、このメソッドは既に圧縮されたデータを圧縮した後にその圧縮設定を追加します。

ABCpdf は特定の圧縮順番にならないようにします。あるオブジェクトでの圧縮タイプが違法だったり、圧縮の順番は違法でなくても、（その他のほとんどのビューアではサポートされていても） Acrobat でサポートされていなかったりします。ただ、これらは稀で恐らく目にすることはありません。

強制的に圧縮を行うことでこの動作をオーバーライドできますが、オーバーライドすると Acrobat では無効または表示できないドキュメントが作成されてしまう場合があります。

Example

ありません。


CompressFlate Function

CompressFlate メソッド

Flate 圧縮を使用してストリームのデータを圧縮します。

Syntax

[C#]
bool CompressFlate()
bool CompressFlate(bool force)
[Visual Basic]
Sub CompressFlate() As Boolean
Sub CompressFlate(force As Boolean) As Boolean

Params
名称 | 説明
force | Flate 圧縮を使用して強制的にストリームを圧縮します
戻り値 | 圧縮が適用されているか確認します

Notes

Flate 圧縮を使用してストリームのデータを圧縮します。

Flate 圧縮は、速くて効果的な標準のロスレス圧縮方法です。これは ZIP のようなファイル形式や PNG のようなイメージ形式のベースとして使用されます。ほとんどの場合にこの圧縮方法が選ばれます。

PDF ストリームは、ストリームのデータに圧縮フィルタのセットを使えるようにします。例えば、Flate 圧縮してから ASCII85 エンコーディングする場合です。これは2つの圧縮フィルタとして順番に表されます。

このメソッドはストリームを解凍しません。既に圧縮されている場合、このメソッドは既に圧縮されたデータを圧縮した後にその圧縮設定を追加します。

ABCpdf は特定の圧縮順番にならないようにします。あるオブジェクトでの圧縮タイプが違法だったり、圧縮の順番は違法でなくても、（その他のほとんどのビューアではサポートされていても） Acrobat でサポートされていなかったりします。ただ、これらは稀で恐らく目にすることはありません。

強制的に圧縮してこの動作をオーバーライドできますが、オーバーライドすると Acrobat で無効または表示できないドキュメントが作成されてしまう場合があります。

Example

ありません。


CompressRunLength Function

CompressRunLength メソッド

ランレングス圧縮を使用してストリームのデータを圧縮します。

Syntax

[C#]
bool CompressRunLength()
bool CompressRunLength(bool force)
[Visual Basic]
Sub CompressRunLength() As Boolean
Sub CompressRunLength(force As Boolean) As Boolean

Params
名称 | 説明
force | ランレングス圧縮を使用して強制定期にストリームを圧縮します
戻り値 | 圧縮が適用されているか確認します

Notes

ランレングス圧縮を使用してストリームのデータを圧縮します。

ランレングス圧縮はシンプルな圧縮形式で、一連の同一バイトをその順番のバイトの個数と値に置換します。エンコードとでコードはシンプルですが比較的効率が悪いので、CompressFlate メソッドの方が好まれます。

PDF ストリームは、ストリームのデータに圧縮フィルタのセットを使えるようにします。例えば、Flate 圧縮してから ASCII85 エンコーディングにする場合です。これは2つの圧縮フィルタとして順番に表されます。

このメソッドはストリームを解凍しません。既に圧縮されている場合、このメソッドは既に圧縮されたデータを圧縮した後にその圧縮設定を追加します。

ABCpdf は特定の圧縮順番にならないようにします。あるオブジェクトでの圧縮タイプが違法だったり、圧縮の順番は違法でなくても、（その他のほとんどのビューアではサポートされていても） Acrobat でサポートされていなかったりします。ただ、これらは稀で恐らく目にすることはありません。

強制的に圧縮を行うことでこの動作をオーバーライドできますが、オーバーライドすると Acrobat では無効または表示できないドキュメントが作成されてしまう場合があります。

Example

ありません。


Decompress メソッド

ストリームのデータを解凍します。

Syntax

[C#]
bool Decompress()
[Visual Basic]
Function Decompress() As Boolean

Params
名称 | 説明
戻り値 | ストリームのデータが解凍されているか確認します

Notes

ストリームからすべての圧縮を解凍します。

一部の環境では完全に解凍できない場合があります。その場合、このメソッドは False を返します。

Example

ありません。


GetData メソッド

ストリームのバイナリーデータを取得します。

Syntax

[C#]
byte[] GetData()

[Visual Basic]
Function GetData() As Byte()

Params
名称 | 説明
戻り値 | ストリームのバイナリーデータ

Notes

ストリームのバイナリーデータを取得します。

ストリームが圧縮されている場合、データも圧縮されます。

Example

ありません。


GetText メソッド

ストリームの内容を文字列で取得します。

Syntax

[C#]
string GetText()
[Visual Basic]
Function GetText() As String

Params
名称 | 説明
戻り値 | ストリームの内容を文字列で取得します。

Notes

ストリームの内容を文字列で取得します。

このメソッドを使用する前に、ストリームが解凍されているか確認してください。

Example

ありません。


SetData Function

SetData メソッド

ストリームのバイナリーデータを設定します。

Syntax

[C#]
virtual void SetData(byte[] value)
[Visual Basic]
Overridable Sub SetData(value() As Byte)

Params
名称 | 説明
value | ストリームのバイナリーデータ

Notes

ストリームのバイナリーデータを設定します。

圧縮設定は変更できません。従って、例えば Flate 圧縮のストリームの場合、 Flate 圧縮して SetData メソッドを使用しなければなりません。

このため、SetData メソッドを使用する前に ClearData メソッドを実行してください。

Example

ありません。


SetFile Function

SetFile メソッド

ファイルのデータをストリームのバイナリーに設定します。

Syntax

[C#]
void SetFile(string path)
[Visual Basic]
Sub SetFile(path As String)

Params
名称 | 説明
path | StreamObject に設定するデータファイルのパス

Notes

ファイルからデータを読んで、そのデータをストリームのバイナリーデータとして設定します。ファイルを読み取ることができないと、例外が発生します。

圧縮設定は変更できません。従って、例えば Flate 圧縮のストリームの場合、 Flate 圧縮して SetFile メソッドを使用しなければなりません。

このため、SetFile メソッドを使用する前に ClearData メソッドを実行してください。

Example

ありません。


SetText メソッド

ストリームの内容を文字列で設定します。

Syntax

[C#]
void SetText(string value)
[Visual Basic]
Sub SetText(value As String))

Params
名称 | 説明
value | ストリームの内容を文字列で設定します。

Notes

文字列としてストリームの内容を設定します。

圧縮設定は変更できません。従って、SetData を使用する前に ClearData を呼び出してください。

Example

ありません。


Compressed プロパティ
型 | デフォルト値 | 読み取り専用 | 説明
[C#] bool [Visual Basic] Boolean | なし | はい | ストリームデータを圧縮あるいは暗号化します。

Notes

ストリームデータを圧縮あるいは暗号化します。

Example

ありません。


Compression プロパティ

型 | デフォルト | 読み込み専用 | 説明
[C#] CompressionType [Visual Basic] CompressionType | 説明を参照してください。 | はい | 主な圧縮タイプ

Notes

複数のメソッドを使用して単一ストリームを圧縮したり暗号化することができます。このプロパティはストリームに使用する主な圧縮タイプを反映します。

高レベル圧縮になる圧縮型（例：JPEG）は高レベル圧縮にならないもの（例：ASCII 85）よりも重要だと見なされます。

圧縮型の列挙体は次の値を取得できます。

  • None
  • Unknown
  • Flate
  • Lzw
  • Ccitt
  • Jpeg
  • Jpx
  • AsciiHex
  • Ascii85
  • RunLength
  • Jbig2
  • Crypt

これらの圧縮型の詳細については、Adobe PDF Specification の 3.3章をご覧ください。

Example

ありません。


Compressions Property

Compressions プロパティ

型 デフォルト値 読み取り専用 説明
[C#]
CompressionType[]

[Visual Basic]
CompressionType() 		説明を参照してください はい ストリームに適用するすべての圧縮タイプ

Notes

複数のメソッドを順番に使用して、ストリームを圧縮したり暗号化することができます。

このプロパティはストリームに適用するすべての圧縮タイプを表します。

CompressionTypes 列挙体は、必要な解凍順に並べられます。

Example

ありません。


Length プロパティ
型 | デフォルト値 | 読み取り専用 | 説明
[C#] int [Visual Basic] Integer | なし | はい | 暗号化されたストリームデータのバイト数

Notes

暗号化されたストリームデータのバイト数をあらわします。

Example

ありません。


TextLayer Class

TextLayer クラス

ドキュメントのページに表示するマルチスタイルテキストのレイヤー

System.Object
   WebSupergoo.ABCpdf9.Objects.IndirectObject
      WebSupergoo.ABCpdf9.Objects.StreamObject
         WebSupergoo.ABCpdf9.Objects.Layer
            WebSupergoo.ABCpdf9.Objects.TextLayer

メソッド | 説明
 | 継承されたメソッド...

プロパティ | 説明
Characters | ページに表示する文字数
EndPos | テキストの終了位置の設定
FullText | AddHtml または AddText メソッドの最初の呼び出しで提供されたフルテキスト
Lines | ページに表示する行数
Previous | テキストチェーンの前のテキストオブジェクト
TextEnd | このレイヤーに描く最終文字までのオフセット
TextNext | チェーン内の次の項目の先頭文字までのオフセット
TextStart | このレイヤーに描く先頭文字までのオフセット
Truncated | テキストを切り詰めるかを定義します
 | 継承されたプロパティ...


Characters プロパティ
型 | デフォルト値 | 読み取り専用 | 説明
[C#] int [Visual Basic] Integer | なし | はい | ページに表示する文字数

Notes

ページに表示する文字数をあらわします。

Example

ありません。


EndPos プロパティ
型 | デフォルト値 | 読み取り専用 | 説明
[C#] XPoint [Visual Basic] XPoint | なし | はい | キステトの終了位置を設定

Notes

XPoint はテキストの終了位置を設定します。

この値は、PDF の座標系で定義されます。

Example

ありません。


Lines プロパティ
型 | デフォルト値 | 読み取り専用 | 説明
[C#] int [Visual Basic] Integer | なし | はい | ページに表示する行数

Notes

ページに表示する行数をあらわします。

Example

ありません。


Previous プロパティ
型 | デフォルト値 | 読み取り専用 | 説明
[C#] TextLayer [Visual Basic] TextLayer | なし | はい | テキストチェーンの前のテキストオブジェクト

Notes

テキストチェーンの前のテキストオブジェクトを表します。

オブジェクトがテキストチェーンの一部でなかったり先頭の場合、このプロパティは Null になります。

Example

ありません。


Truncated プロパティ
型 | デフォルト値 | 読み取り専用 | 説明
[C#] bool [Visual Basic] Boolean | なし | はい | テキストを切り詰めるか定義します

Notes

テキストを切り詰めるか定義します。

このプロパティは、設定されているテキストをすべて表示できるか定義します。テキストを切り詰める場合は True、そうでなければ False にします。

途中で切れたテキストオブジェクトだけつなぐことができます。オブジェクトが途中で切れてないということは表示するテキストがもう無いということです。

Example

ありません。


FullText Property

FullText プロパティ

型 | デフォルト値 | 読み取り専用 | 説明
[C#] string [Visual Basic] String | なし | はい | AddHtml または AddText メソッドの最初の呼び出しで提供されたフルテキスト

Notes

AddHtml または AddText メソッドの最初の呼び出しで提供されたフルテキスト

このテキストはチェーン内の全項目で共有されます。シンプルなテキストで、スタイルの指定はありません。

Example

ありません。


TextStart Property

TextStart プロパティ

型 | デフォルト値 | 読み取り専用 | 説明
[C#] int [Visual Basic] Integer | なし | はい | このレイヤーに描く先頭文字までのオフセット

Notes

このレイヤーに描く （FullText プロパティの）先頭文字までのオフセット

Example

ありません。


TextEnd Property

TextEnd プロパティ

型 | デフォルト値 | 読み取り専用 | 説明
[C#] int [Visual Basic] Integer | なし | はい | このレイヤーに描く最終文字までのオフセット

Notes

このレイヤーに描く （FullText プロパティの）最終文字までのオフセット

Example

ありません。


TextNext Property

TextNext プロパティ

型 | デフォルト値 | 読み取り専用 | 説明
[C#] int [Visual Basic] Integer | なし | いいえ | チェーン内の次の項目の先頭文字までのオフセット

Notes

チェーン内の次の項目の （FullText プロパティの）先頭文字までのオフセット

このプロパティを変更することで、チェーン内の次の項目の先頭文字の開始位置を制御できます。つまり、値を増やすとチェーンの項目から項目まで文字をスキップさせることができます。値を減らすと前の項目からテキストを反復させることができます。

Example

ありません。


ViewLayer Class

ViewLayer クラス

ドキュメントのページに部分的に表示されているイメージの全体を表示します。

System.Object
   WebSupergoo.ABCpdf9.Objects.IndirectObject
      WebSupergoo.ABCpdf9.Objects.StreamObject
         WebSupergoo.ABCpdf9.Objects.Layer
            WebSupergoo.ABCpdf9.Objects.ViewLayer

メソッド | 説明
 | 継承されたメソッド...

プロパティ | 説明
ContentHeight | イメージの内容の高さ（ピクセル単位）
ContentWidth | イメージの内容の幅（ピクセル単位）
PageHeight | 現在のページの内容の高さ（ピクセル単位）
PageOffset | 現在のページのトップまでのオフセット（ピクセル単位）
PageWidth | 現在のページの内容の幅（ピクセル単位）
ScrollHeight | イメージのスクロールの高さ（ピクセル単位）
ScrollWidth | イメージのスクロールの幅（ピクセル単位）
Truncated | イメージを切り詰めるか定義します
 | 継承されたプロパティ...


ContentHeight Property

ContentHeight プロパティ

型 | デフォルト値 | 読み取り専用 | 説明
[C#] int [Visual Basic] Integer | なし | はい | イメージの内容の高さ（ピクセル単位）

Notes

イメージの内容の高さを表します。通常、ScrollHeight と非常に近い値になります。

HTML を追加する時に一度に見えるのは1ページだけです。このプロパティはマルチページ PDF に変換する前に、HTML の高さを確認できます。

Example

ありません。


ContentWidth Property

ContentWidth プロパティ

型 | デフォルト値 | 読み取り専用 | 説明
[C#] int [Visual Basic] Integer | なし | はい | イメージの内容の幅（ピクセル単位）

Notes

イメージの内容の幅を表します。通常、ScrollWidth と非常に近い値になります。

HTML を追加する時に一度に見えるのは1ページだけです。このプロパティはマルチページ PDF に変換する前に、HTML の幅を確認できます。

Example

ありません。


PageHeight Property

PageHeight プロパティ

型 | デフォルト値 | 読み取り専用 | 説明
[C#] int [Visual Basic] Integer | なし | はい | 現在のページの内容の高さ（ピクセル単位）

Notes

現在のページの内容の高さを表します。

内容の高さが表示する領域より小さい場合（例えば、ちょうどよいところで改ページするためだったり、内容が指定した範囲より小さい場合）があるので注意してください。

Example

ありません。


PageOffset Property

PageOffset プロパティ

型 | デフォルト値 | 読み取り専用 | 説明
[C#] int [Visual Basic] Integer | なし | はい | 現在のページのトップまでのオフセット（ピクセル単位）

Notes

下のイメージのトップから現在のページのトップまでの垂直方向のオフセット値を表します。

Example

ありません。


PageWidth Property

PageWidth プロパティ

型 | デフォルト値 | 読み取り専用 | 説明
[C#] int [Visual Basic] Integer | なし | はい | 現在のページの内容の幅（ピクセル単位）

Notes

現在のページの内容の幅を表します。

Example

ありません。


ScrollHeight Property

ScrollHeight プロパティ

型 | デフォルト値 | 読み取り専用 | 説明
[C#] int [Visual Basic] Integer | なし | はい | イメージのスクロールの高さ（ピクセル単位）

Notes

イメージのスクロールの高さを表します。

これは、HTML でスクリプトを使って取得するのと同じ高さです。

Example

ありません。


ScrollWidth Property

ScrollWidth プロパティ

型 | デフォルト値 | 読み取り専用 | 説明
[C#] int [Visual Basic] Integer | なし | はい | イメージのスクロール幅（ピクセル単位）

Notes

イメージのスクロール幅を表します。

これは、HTML 内でスクリプトを使って取得するのと同じスクロール幅です。

Example

ありません。


Truncated プロパティ
型 | デフォルト値 | 読み取り専用 | 説明
[C#] bool [Visual Basic] Boolean | なし | はい | イメージを切り詰めるか定義します

Notes

イメージを切り詰めるか定義します。

Example

ありません。


Atom Class

Atom クラス

PDF の基本オブジェクトは、基本的な PDF データから形成されます。

System.Object
   WebSupergoo.ABCpdf9.Atoms.Atom
      WebSupergoo.ABCpdf9.Atoms.ArrayAtom
      WebSupergoo.ABCpdf9.Atoms.BoolAtom
      WebSupergoo.ABCpdf9.Atoms.DictAtom
      WebSupergoo.ABCpdf9.Atoms.NameAtom
      WebSupergoo.ABCpdf9.Atoms.NullAtom
      WebSupergoo.ABCpdf9.Atoms.NumAtom
      WebSupergoo.ABCpdf9.Atoms.RefAtom
      WebSupergoo.ABCpdf9.Atoms.StringAtom

Implements: ICloneable, IDisposable

メソッド | 説明
S» FromString | PDF 文字列から適切な Atom のタイプを作成します
Dispose | Atom を解放します
Clone | 現在の Atom のコピーを作成します
Equals | 2つの Atom が同一かを確認します
GetHashCode | Atom のハッシュコードを取得します
S» GetBool | Atom が BoolAtom の場合、Boolean の値を Atom から取得します。
S» GetDouble | Atom が NumAtom の場合、double の値を Atom から取得します。
S» GetID | Atom が RefAtom の場合、オブジェクットの ID 値を Atom から取得します。
S» GetInt | Atom が NumAtom の場合、integer の値を Atom から取得します。
S» GetItem | Atom が他の Atom を含む型の場合、指定した項目を Atom から取得します。
S» GetName | Atom が NameAtom の場合、名前の値を Atom から取得します。
S» GetText | Atom が StringAtom の場合、テキストの値を Atom から取得します。
S» RemoveItem | Atom が DictAtom の場合、指定したエントリーを Atom から削除します。
S» SetItem | Atom が他の Atom を含む型の場合、指定した項目を Atom に追加します。
ToString | PDF に表示された時の Atom の文字列を返します。

プロパティ | 説明
なし |


Clone メソッド

現在の Atom のコピーを作成します。

Syntax

[C#]
Atom Clone()
[Visual Basic]
Function Clone() As Atom

Params
名称 | 説明
戻り値 | 作成した最新のコピー

Notes

このメソッドはオブジェクトのインスタンスをコピーして新しいオブジェクトを作成します。

これは、オブジェクトが含む全てをコピーします。

Example

ありません。


Dispose Function

Dispose メソッド

オブジェクトを解放します。

Syntax

[C#]
void Dispose()
protected virtual void Dispose(bool disposing)

[Visual Basic]
Sub Dispose()
Protected Overridable Sub Dispose(disposing As Boolean)

Params
名称 | 説明
なし |

Notes

このメソッドは、強制的にオブジェクトを解放して、ガベージ・コレクションを縮小します。

このメソッドは、IDisposable インタフェースを実装するオブジェクトの基本的なデザインパターンに基づいています。このメソッドは追加したオブジェクトを解放するサブクラスでオーバーライドすることができます。

このメソッドを呼び出した後でオブジェクトを使用しないでください。

Example

ありません。


Equals Function

Equals メソッド

2つの Atom が同一か確認します。

Syntax

[C#]
override bool Equals(object test);
[Visual Basic]
Overrides Function Equals(test As Object) As Boolean

Params
名称 | 説明
test | 確認対象のオブジェクト
戻り値 | 2つの Atom が同一か確認します。

Notes

指定したオブジェクトが現在のオブジェクトと同一か確認します。

PDF ドキュメントで同じオブジェクトを参照している場合、オブジェクトは同一と判断されます。

Example

ありません。


FromString メソッド

PDF 文字列から適切な Atom のタイプを作成します。

Syntax

[C#]
static Atom FromString(string value)
[Visual Basic]
Shared Function FromString(value As String) As Atom

Params
名称 | 説明
value | オブジェクトの値を示す文字列
戻り値 | 返された Atom

Notes

このメソッドに渡すテキストはネイティブな PDF フォーマットにしてください。従って、文字列の中に一般的でないキャラクタがあれば、エスケープシーケンスによって処理する必要があります。

PDF の詳細については PDF Reference を参照してください。

Example

ありません。


GetHashCode Function

GetHashCode メソッド

Atom のハッシュコードを取得します。

Syntax

[C#]
override int GetHashCode()
[Visual Basic]
Overrides Function GetHashCode() As Integer

Params
名称 | 説明
戻り値 | ハッシュコード

Notes

ハッシュテーブルのようなアルゴリズムやデータ構造で使われるハッシュコードを取得します。

Example

ありません。


GetBool Function

GetBool メソッド

Atom が BoolAtom の場合、Boolean の値を Atom から取得します。

Syntax

[C#]
static bool GetBool(Atom atom)

[Visual Basic]
Shared Function GetBool(atom As Atom) As Boolean

Params
名称 | 説明
atom | Boolean を取得する Atom
戻り値 | 返された Boolean

Notes

Atom が BoolAtom の場合、Boolean の値を Atom から取得します。

Atom が BoolAtom でない場合やその値が null の場合、false を返します。

Example

ありません。


GetDoubleメソッド

Atom が NumAtom の場合、double の値を Atom から取得します。

Syntax

[C#]
static double GetDouble(Atom atom)
[Visual Basic]
Shared Function GetDouble(atom As Atom) As Double

Params
名称 | 説明
atom | double を取得する Atom
戻り値 | 返された double

Notes

Atom が NumAtom の場合、double の値を Atom から取得します。

もし Atom が NumAtom でない場合やその値が null の場合、0 を返します。

Example

ありません。


GetIDメソッド

Atom が RefAtom の場合、オブジェクットの ID 値を Atom から取得します。

Syntax

[C#]
static int GetID(Atom atom)
[Visual Basic]
Shared Function GetID(atom As Atom) As Integer

Params
名称 | 説明
atom | オブジェクットの ID を取得する Atom
戻り値 | 返されたオブジェクトの ID

Notes

Atom が RefAtom の場合、オブジェクットの ID 値を Atom から取得します。

もし Atom が RefAtom でない場合やその値が null の場合、0 を返します。

Example

ありません。


GetIntメソッド

Atom が NumAtom の場合、integer の値を Atom から取得します。

Syntax

[C#]
static int GetInt(Atom atom)
[Visual Basic]
Shared Function GetInt(atom As Atom) As Integer

Params
名称 | 説明
atom | integer を取得する Atom
戻り値 | 返された integer

Notes

Atom が NumAtom の場合、integer の値を Atom から取得します。

もし Atom が NumAtom でない場合やその値が null の場合、0 を返します。

Example

ありません。


GetItem Function

GetItem メソッド

Atom が他の Atom を含む型の場合、指定した項目を Atom から取得します。

Syntax

[C#]
static Atom GetItem(Atom atom, string key)
static Atom GetItem(Atom atom, int index)

[Visual Basic]
Shared Function GetItem(atom As Atom, key As String) As Atom
Shared Function GetItem(atom As Atom, index As Integer) As Atom

Params
名称 | 説明
atom | 項目の取得先の Atom
key | 取得する項目の名
index | 取得する項目のインデックス
戻り値 | 返された Atom

Notes

DictAtoms と ArrayAtoms は両方とも他の Atom を含めることができます。

このメソッドを使用することにより、DictAtoms や ArrayAtoms から項目を取得できます。

ArrayAtoms のエントリーはインデックスで参照できます。取得先の Atom が ArrayAtom でなかったり null だったり、あるいは index の値が配列の範囲を超えた場合、null が返されます。

DictAtoms のエントリーは名前や番号で参照できます。取得先の Atom が DictAtom でなかったり null だったり、あるいは名前が辞書の中の key でなかったり、index の値が辞書の配列の範囲を超えた場合、 null が返されます。

Example

ありません。


GetNameメソッド

Atom が NameAtom の場合、名前の値を Atom から取得します。

Syntax

[C#]
static string GetName(Atom atom)
[Visual Basic]
Shared Function GetName(atom As Atom) As String

Params
名称 | 説明
atom | 名前を取得する Atom
戻り値 | 返された名前

Notes

Atom が NameAtom の場合、名前の値を Atom から取得します。

もし Atom が NameAtom でない場合やその値が null の場合、空文字列 ("") を返します。

Example

ありません。


GetText メソッド

Atom が StringAtom の場合、テキストの値を Atom から取得します。

Syntax

[C#]
static string GetText(Atom atom)
[Visual Basic]
Shared Function GetText(atom As Atom) As String

Params
名称 | 説明
atom | テキストを取得する Atom
戻り値 | 返されたテキスト

Notes

Atom が StringAtom の場合、テキストの値を Atom から取得します。

もし Atom が StringAtom でない場合やその値が null の場合、空文字列 ("") を返します。

Example

ありません。


RemoveItem メソッド

Atom が DictAtom の場合、指定したエントリーを Atom から削除します。

Syntax

[C#]
static void RemoveItem(Atom atom, string key)

[Visual Basic]
Shared Sub RemoveItem(atom As Atom, key As String)

Params
名称 | 説明
atom | 項目を削除する Atom
key | 削除する項目の名

Notes

DictAtoms は名前で参照される他の Atom を含むことができます。

このメソッドの使用すろことにより、名前で参照される項目を DictAtom から削除ができます。

もし Atom が DictAtom でない場合、このメソッドによる影響はありません。

Example

ありません。


SetItem Function

SetItem メソッド

Atom が他の Atom を含む型の場合、指定した項目を Atom に追加します。

Syntax

[C#]
static Atom SetItem(Atom atom, string key, Atom val)
static Atom SetItem(Atom atom, int index, Atom val)

[Visual Basic]
Shared Function SetItem(atom As Atom, key As String, val As Atom) As Atom
Shared Function SetItem(atom As Atom, index As Integer, val As Atom) As Atom

Params
名称 | 説明
atom | 項目の追加先の Atom
key | 追加する項目の名
index | 項目の追加先のインデックス
戻り値 | 返された Atom

Notes

DictAtoms と ArrayAtoms は両方とも他の Atom を含めることができます。

このメソッドを使用することにより、DictAtoms や ArrayAtoms に項目を追加できます。

追加先の Atom が DictAtoms や ArrayAtoms でない場合、追加は失敗します。

ArrayAtoms のエントリーは番号で参照できます。追加先の Atom が ArrayAtom でかつ、index の値が配列の範囲内の場合、追加は成功します。index の値が 0 より小さい場合、Atom の配列の最後に追加されます。

DictAtoms のエントリーは名前で参照できます。追加先の Atom が DictAtom でかつ、key が空文字列でなければ、追加は成功します。

追加に成功すると、追加された Atom を返します。失敗した場合は null を返します。

Example

ありません。


ToString Function

ToString メソッド

PDF に表示された時の Atom の文字列を返します。

Syntax

[C#]
override string ToString()
[Visual Basic]
Overrides Function ToString() As String

Params
名称 | 説明
戻り値 | オブジェクトの文字列

Notes

オブジェクトが最終の PDF ドキュメントに挿入された時のオブジェクトの文字列を取得します。

オブジェクトの文字列の値が大きかったり、変わった文字を含んでいる場合があるので注意してください。

Example

ありません。


ArrayAtom Class

ArrayAtom クラス

他の Atom の配列を含む Atom

System.Object
   WebSupergoo.ABCpdf9.Atoms.Atom
      WebSupergoo.ABCpdf9.Atoms.ArrayAtom

Implements: IList<Atom>, ICollection<Atom>, IEnumerable<Atom>, IList, ICollection, IEnumerable

メソッド | 説明
ArrayAtom | ArrayAtom コンストラクタ
CopyTo | 配列に Atom をコピーします
Add | 項目を配列の末尾に追加します
Clear | 配列からすべての Atom を削除します
Contains | 指定した Atom を含む配列か確認します
IndexOf | 指定した Atom のインデックスを取得します
Throws Exceptions Insert | 配列の指定した位置に Atom を挿入します
Remove | 配列から Atom を削除します
Throws Exceptions RemoveAt | 指定した位置の Atom を配列から削除します
GetEnumerator | コレクションの列挙子を取得します
 | 継承されたメソッド...

プロパティ | 説明
Count | 配列内の Atom の数を取得します
Throws Exceptions Item | 指定したインデックスの Atom を取得または設定します
 | 継承されたプロパティ...


ArrayAtom コンストラクタ

ArrayAtom コンストラクタ

Syntax

[C#]
ArrayAtom()
[Visual Basic]
Sub New()

Params
名称 | 説明
なし |

Notes

空の ArrayAtom を作成します。

Example

ありません。


CopyTo Function

CopyTo メソッド

配列に Atom をコピーします。

Syntax

[C#]
void CopyTo(Atom[] array, int index)
[Visual Basic]
Sub CopyTo(array As Atom(), index As Integer)

Params
名称 | 説明
array | コピー先のオブジェクト配列
index | コピーを開始するゼロから始まる配列のインデックス

Notes

特定のインデックスの配列に Atom をコピーします。

配列は一次元で、ゼロから始まるインデックスでなければなりません。

Example

ありません。


Add メソッド

項目を配列の最後に追加します。

Syntax

[C#]
int Add(Atom atm)
int Add(int num)
int Add(double real)
int Add(string str)

[Visual Basic]
Function Add(atm As Atom) As Integer
Function Add(num As Integer) As Integer
Function Add(real As Double) As Integer
Function Add(str As String) As Integer

Params
名称 | 説明
atm | 追加する Atom
num | 追加する整数
real | 追加する浮動小数点数値
str | 追加する文字列
戻り値 | 新しい要素を挿入した位置

Notes

このメソッドは配列に項目を追加します。

配列に直接 Atom を追加したり、オーバーロードオペレータを使用して数値や文字列を追加することができます。

文字列を追加する場合、StringAtom 内にカプセル化されてから挿入されます。また、整数や浮動小数点数値を追加する場合、NumAtom に変換されてから挿入されます。これらのオペレーションは自分で Atom を作成して追加するよりも効率的です。

Atom は、一度に一ヶ所にしか存在できません。そのため、他のオブジェクトで Atom が使用されている場合、その Atom の Clone が挿入されます。

Null 値を追加すると、配列に追加された NullAtom を返します。

Example

ありません。


Clear メソッド

配列からすべての Atom を削除します。

Syntax

[C#]
void Clear()
[Visual Basic]
Sub Clear()

Params
名称 | 説明
なし |

Notes

配列からすべての Atom を削除します。

Example

ありません。


Contains メソッド

指定した Atom を含む配列か確認します。

Syntax

[C#]
bool Contains(Atom value)
[Visual Basic]
Function Contains(value As Atom) As Boolean

Params
名称 | 説明
value | 確認するオブジェクト
戻り値 | オブジェクトが見つかった場合は True、そうではない場合は False

Notes

指定したオブジェクトを含む Soup か確認します。

Example

ありません。


IndexOf Function

IndexOf メソッド

指定した Atom のインデックスを取得します。

Syntax

[C#]
int IndexOf(Atom value)
[Visual Basic]
Function IndexOf(value As Atom) As Integer

Params
名称 | 説明
value | コレクションで確認するオブジェクト
戻り値 | 見つかった場合は値のインデックス、そうでない場合は -1。

Notes

コレクションの特定の Atom のインデックスを取得します。

Example

ありません。


Insert メソッド

配列の指定した位置に Atom を挿入します。

Syntax

[C#]
void Insert(int index, Atom value)
[Visual Basic]
Sub Insert(index As Integer, value As Atom)

Throws Exceptions エラーの場合、ArgumentOutOfRangeException() が発生します。

Params
名称 | 説明
index | オブジェクトを挿入するゼロから始まるインデックス
value | 配列に挿入する Atom

Notes

配列の指定した位置に Atom を挿入します。

インデックスが配列の項目の数値と等しい場合、Atom は最後に追加されます。

Atom は一度に一ヶ所にしか存在できません。他のオブジェクトで既に Atom が使用されている場合、Atom の Clone が挿入されます。

Null 値を追加すると、配列に NullAtom が追加されます。

インデックスが有効でない場合、ArgumentOutOfRangeException エラーが発生します。

Example

ありません。


Remove メソッド

配列から Atom を削除します。

Syntax

[C#]
bool Remove(Atom value)
[Visual Basic]
Function Remove(value As Atom) As Boolean

Params
名称 | 説明
value | 削除する Atom

Notes

Atom が削除されると隙間ができます。その隙間を埋めるために、削除された Atom の下にある要素は上に移動されます。

Example

ありません。


RemoveAt メソッド

指定した位置の Atom を配列から削除します。

Syntax

[C#]
void RemoveAt(int index)
[Visual Basic]
Sub RemoveAt(index As Integer)

Throws Exceptions エラーの場合、ArgumentOutOfRangeException()が発生します。

Params
名称 | 説明
index | 削除する項目のゼロから始まるインデックス

Notes

インデックスが有効でない場合、ArgumentOutOfRangeException エラーが発生します。

Atom が削除されると隙間ができます。削除された Atom の後続要素が移動し、その隙間を埋めます。

Example

ありません。


GetEnumerator メソッド

コレクションの列挙子を取得します。

Syntax

[C#]
IEnumerator<Atom> GetEnumerator()
[Visual Basic]
Function GetEnumerator() As IEnumerator(Of Atom)

Params
名称 | 説明
戻り値 | コレクションの列挙子

Notes

コレクションの列挙子を取得します。

Example

ありません。


Count プロパティ
型 | デフォルト値 | 読み取り専用 | 説明
[C#] int [Visual Basic] Integer | なし | はい | 配列内の Atom の数

Notes

配列内の Atom の数をあらわします。

配列に Atom が追加されると Count が増えます。

Example

ありません。


Item Property

Item プロパティ

型 | デフォルト値 | 読み取り専用 | 説明
[C#] Atom this[int index] int this[int index, int def] double this[int index, double def] string this[int index, string def] [Visual Basic] Default Property Item(index As Integer) As Atom Default Property Item(index As Integer, def As Integer) As Integer Default Property Item(index As Integer, def As Double) As Double Default Property Item(index As Integer, def As String) As String | なし | いいえ | 指定したインデックスの Atom を取得または設定します。

Throws Exceptions  エラーの場合、ArgumentOutOfRangeException() が発生します。

Notes

指定したインデックスの Atom を取得または設定します。C#言語では、このプロパティはそのクラスのインデクサになります。

Atom に直接アクセスしたり、演算子のオーバーロードを使用して数値や文字列を指定することができます。オーバーロードを使用して数値や文字列にアクセスする方法は、Atom に直接アクセスして値を取得するよりも効率的です。

def パラメータを使用してオーバーロードを指定します。値が設定されている場合、このパラメータは無視されます。値が取得されている場合、このパラメータは基本的な Atom が正確なタイプでなかった時のデフォルト値になります。たとえば、整数を取得する場合に基本的な Atom が StringAtom だった場合、そのデフォルト値が返されます。

Atom は、一度に一ヶ所にしか存在できません。そのため、他のオブジェクトで Atom が使用されている場合、その Atom の Clone が挿入されます。

Null 値を追加すると、配列に追加されている NullAtom を返します。

インデックスが有効でない場合、このプロパティは ArgumentOutOfRangeException エラーを発生します。

Example

ありません。


BoolAtom Class

BoolAtom クラス

Boolean 値を含む Atom

System.Object
   WebSupergoo.ABCpdf9.Atoms.Atom
      WebSupergoo.ABCpdf9.Atoms.BoolAtom

メソッド | 説明
BoolAtom | BoolAtom を構築します
 | 継承されたメソッド...

プロパティ | 説明
Truth | ブールが True か False かを設定/取得します
 | 継承されたプロパティ...


BoolAtom コンストラクタ

BoolAtom を構築します。

Syntax

[C#]
BoolAtom()
BoolAtom(bool value)

[Visual Basic]
Sub New()
Sub New(value As Boolean)

Params
名称 | 説明
value | Atom の初期値

Notes

BoolAtom を構築します。

値を指定しなければ、False (デフォルト)が使用されます。

Example

ありません。


Truth プロパティ
型 | デフォルト値 | 読み取り専用 | 説明
[C#] bool [Visual Basic] Boolean | なし | いいえ | ブールが True か False かを設定/取得します。

Notes

ブールが True か False かを設定/取得します。

Example

ありません。


DictAtom Class

DictAtom クラス

名前によってインデックス化された、他の Atom の辞書を含む Atom

System.Object
   WebSupergoo.ABCpdf9.Atoms.Atom
      WebSupergoo.ABCpdf9.Atoms.DictAtom

Implements: IDictionary<string, Atom>, ICollection<KeyValuePair<string, Atom>>, IEnumerable<KeyValuePair<string, Atom>>, IDictionary, ICollection, IEnumerable

メソッド | 説明
DictAtom | DictAtom コンストラクタ
CopyTo | 配列に Atom をコピーします
Throws Exceptions Add | 辞書に項目を追加します
Clear | 辞書からすべての要素を削除します
Contains | 辞書が指名した要素を含んでいるか確認します
Remove | 辞書から要素を削除します
GetKeys | 辞書の配列の名前をすべて取得します
GetValues | 辞書のすべての Atom の配列を取得します
GetEnumerator | 辞書の一覧を取得します
 | 継承されたメソッド...

プロパティ | 説明
Count | 辞書の要素の数を取得します
Throws Exceptions Item | 指名した Atom を取得/設定します
Keys | 辞書のキーのコレクションを取得します
Values | 辞書の Atom のコレクションを取得します
 | 継承されたプロパティ...


DictAtom コンストラクタ

DictAtom を構築します。

Syntax

[C#]
DictAtom()
[Visual Basic]
Sub New()

Params
名称 | 説明
なし |

Notes

空の DictAtom を構築します。

Example

ありません。


CopyTo Function

CopyTo メソッド

配列に Atom をコピーします。

Syntax

[C#]
void CopyTo(Atom[] array, int index)
void CopyTo(KeyValuePair<string, Atom>[] array, int index)
[Visual Basic]
Sub CopyTo(array As Atom(), index As Integer)
Sub CopyTo(array As KeyValuePair(Of String, Atom)(), index As Integer)

Params
名称 | 説明
array | コピー先の配列
index | コピーを開始するゼロから始まる配列インデックス

Notes

辞書の要素を特定の配列にコピーします。

配列は一次元で、ゼロから始まるインデックスでなければなりません。

ICollection.CopyTo の実装は、配列の要素型が一致する場合、配列に KeyValuePair<string, Atom> の値をコピーします。それ以外は、配列に DictionaryEntry の値をコピーします。

Example

ありません。


Add Function

Add メソッド

辞書に項目を追加します。

Syntax

[C#]
void Add(string key, Atom atm)
void Add(string key, int num)
void Add(string key, double real)
void Add(string key, string str)

[Visual Basic]
Sub Add(key As String, atm As Atom)
Sub Add(key As String, num As Integer)
Sub Add(key As String, real As Double)
Sub Add(key As String, str As String)

Throws Exceptions  エラーの場合、ArgumentException() が発生します。
Throws Exceptions  エラーの場合、ArgumentNullException() が発生します。

Params
名称 | 説明
key | 追加する要素のキーとして使用される文字列
atm | 追加する Atom
num | 追加する整数
real | 追加する浮動小数点数値
str | 追加する文字列

Notes

辞書に項目を追加します。

辞書に直接 Atom を追加したり、演算子のオーバーロードを使用して数値や文字列を追加できます。

文字列を追加する場合、StringAtom 内にカプセル化されてから挿入されます。また、整数や浮動小数点数値を追加する場合、NumAtom に変換されてから挿入されます。これらの処理は、自分で Atom を作成して追加するよりも効率的です。

Atom は一度に一ヶ所にしか存在できません。そのため、Atom が他のオブジェクトに含められている場合、その Atom の Clone が挿入されます。

Null 値を追加すると、辞書に追加された NullAtom を返します。

キーが Null の場合、このメソッドは ArgumentNullException を発生します。キーが既に辞書にある場合、このメソッドは ArgumentException を発生します。

Example

ありません。


Clear メソッド

辞書からすべての要素を削除します。

Syntax

[C#]
void Clear()

[Visual Basic]
Sub Clear()

Params
名称 | 説明
なし |

Notes

辞書からすべての要素を削除します。

Example

ありません。


Contains メソッド

辞書に指定した要素名があるか確認します。

Syntax

[C#]
bool Contains(string name)
[Visual Basic]
Function Contains(name As String) As Boolean

Params
名称 | 説明
name | 確認する要素
戻り値 | 名前が見つかった場合は True、そうでない場合は False

Notes

辞書に指定した要素名があるか確認します。

Example

ありません。


Remove Function

Remove メソッド

要素を辞書から削除します。

Syntax

[C#]
void Remove(string name)
[Visual Basic]
Sub Remove(name As String)

Params
名称 | 説明
name | 削除する要素の名前

Notes

指定した名前の要素を辞書から削除します。

Example

ありません。


GetKeys メソッド

辞書の配列の名前をすべて取得します。

Syntax

[C#]
string[] GetKeys()
[Visual Basic]
Function GetKeys() As String()

Params
名称 | 説明
戻り値 | 辞書の配列の名前をすべて取得します。

Notes

辞書の配列の名前をすべて取得します。

Example

ありません。


GetValues メソッド

辞書のすべての Atom の配列を取得します。

Syntax

[C#]
Atom[] GetValues()
[Visual Basic]
Function GetValues() As Atom()

Params
名称 | 説明
戻り値 | 辞書のすべての Atom の配列を取得します。

Notes

辞書のすべての Atom の配列を取得します。

Example

ありません。


GetEnumerator Function

GetEnumerator メソッド

辞書の列挙子を取得します。

Syntax

[C#]
DictAtom.Enumerator GetEnumerator()
[Visual Basic]
Function GetEnumerator() As DictAtom.Enumerator

Params
名称 | 説明
戻り値 | 辞書の列挙子

Notes

辞書の列挙子（KeyValuePair<string, Atom>）を取得します。

DictAtom.Enumerator は値型で、IEnumerator<KeyValuePair<string, Atom>> と IDictionaryEnumerator を実装します。

Example

ありません。


Count プロパティ
型 | デフォルト値 | 読み取り専用 | 説明
[C#] int [Visual Basic] Integer | なし | あり | 辞書の要素の数

Notes

辞書の要素の数をあらわします。

辞書に要素が追加されると、Count が増えます。

Example

ありません。


Item プロパティ
型 | デフォルト値 | 読み取り専用 | 説明
[C#] Atom this[string name] int this[string name, int def] double this[string name, double def] string this[string name, string def] [Visual Basic] Default Property Item(name As String) As Atom Default Property Item(name As String, def As Integer) As Integer Default Property Item(name As String, def As Double) As Double Default Property Item(name As String, def As String) As String | なし | はい | 指定した名前の項目を取得または設定します。

Throws Exceptions エラーの場合、ArgumentNullException() が発生します。

Notes

指定した名前の項目を取得または設定します。C# 言語では、このプロパティはそのクラスのインデクサになります。

Atom に直接アクセスしたり、演算子のオーバーロードを使用して数値や文字列を指定することができます。オーバーロードを使用して数値や文字列にアクセスする方が Atom に直接アクセスして値を取得するより効率的です。

def パラメータを使用してオーバーロードを指定します。

値を設定する場合、このパラメータは無視されます。値を取得する場合、基本的な Atom が正確な型でないと、このパラメータはデフォルト値になります。たとえば、整数を取得する場合に基本的な Atom が StringAtom だった場合、そのデフォルト値が返されます。

Atom は一度に一ヶ所にしか存在できません。そのため、Atom が他のオブジェクトに含まれている場合、その Atom の Clone が挿入されます。

Null 値を追加すると、配列に追加されている NullAtom を返します。

名前が Null の場合、このプロパティは ArgumentNullException を発生します。

Example

ありません。


Keys Property

Keys プロパティ

型 | デフォルト値 | 読み取り専用 | 説明
[C#] DictAtom.KeyCollection [Visual Basic] DictAtom.KeyCollection | なし | はい | 辞書のキーのコレクションを取得します。

Notes

辞書のキーのコレクションを取得します。

DictAtom.KeyCollection は ICollection<string> と ICollection を実装します。

Example

ありません。


Values Property

Values プロパティ

型 | デフォルト値 | 読み取り専用 | 説明
[C#] DictAtom.ValueCollection [Visual Basic] DictAtom.ValueCollection | なし | はい | 辞書の Atom のコレクションを取得します。

Notes

辞書の Atom のコレクションを取得します。

DictAtom.ValueCollection は ICollection<Atom> と ICollection を実装します。

Example

ありません。


NameAtom Class

NameAtom クラス

名前を表す Atom

System.Object
   WebSupergoo.ABCpdf9.Atoms.Atom
      WebSupergoo.ABCpdf9.Atoms.NameAtom

メソッド | 説明
NameAtom | NameAtom を構築します
 | 継承されたメソッド...

プロパティ | 説明
Text | その名前のテキスト
 | 継承されたプロパティ...


NameAtom Constructor

NameAtom コンストラクタ

NameAtom を構築します。

Syntax

[C#]
NameAtom()
NameAtom(string value)

[Visual Basic]
Sub New()
Sub New(value As String)

Params
名称 | 説明
value | Atom の初期値

Notes

NameAtom を構築します。

値が指定されていない場合、デフォルト（空文字）が使用されます。

Example

ありません。


Text Property

Text プロパティ

型 | デフォルト値 | 読み取り専用 | 説明
[C#] string [Visual Basic] String | なし | いいえ | その名前のテキスト

Notes

その名前のテキスト

Example

ありません。


NullAtom Class

NullAtom クラス

Null の Atom

System.Object
   WebSupergoo.ABCpdf9.Atoms.Atom
      WebSupergoo.ABCpdf9.Atoms.NullAtom

メソッド | 説明
NullAtom | NullAtom を構築します
 | 継承されたメソッド...

プロパティ | 説明
なし |
 | 継承されたプロパティ...


NullAtom コンストラクタ

NullAtom を構築します。

Syntax

[C#]
NullAtom()
[Visual Basic]
Sub New()

Params
名前 | 説明
なし |

Notes

NullAtom を構築します。

Example

ありません。


NumAtom Class

NumAtom クラス

数値を表す Atom。

System.Object
   WebSupergoo.ABCpdf9.Atoms.Atom
      WebSupergoo.ABCpdf9.Atoms.NumAtom

メソッド | 説明
NumAtom | NumAtom を構築します
 | 継承されたメソッド...

プロパティ | 説明
Num | 整数値
Num64 | 64 ビットの整数値
Real | 浮動小数点数値
 | 継承されたプロパティ...


NumAtom コンストラクタ

NumAtom を構築します。

Syntax

[C#]
NumAtom()
NumAtom(int num)
NumAtom(double real)
[Visual Basic]
Sub New()
Sub New(num As Integer)
Sub New(real As Double)

Params
名前 | 説明
num | Atom の初期の整数値
real | Atom の初期の浮動小数点数値

Notes

NumAtom を構築します。

値が指定されていないと、デフォルト値(0)が使われます。

Example

ありません。


Num プロパティ
型 | デフォルト値 | 読み取り専用 | 説明
[C#] int [Visual Basic] Integer | なし | いいえ | 整数値

Notes

整数値をあらわします。

Example

ありません。


Num64 Property

Num64 プロパティ

型 | デフォルト値 | 読み取り専用 | 説明
[C#] long [Visual Basic] Long | なし | いいえ | 64 ビットの整数値

Notes

64 ビットの整数値。

Example

ありません。


Real プロパティ
型 | デフォルト値 | 読み取り専用 | 説明
[C#] double [Visual Basic] Double | なし | いいえ | 浮動小数点数値

Notes

浮動小数点数値をあらわします。

Example

ありません。


RefAtom Class

RefAtom クラス

IndirectObject を参照する Atom

System.Object
   WebSupergoo.ABCpdf9.Atoms.Atom
      WebSupergoo.ABCpdf9.Atoms.RefAtom

メソッド | 説明
RefAtom | RefAtom を構築します
Assign | 参照する IndirectObject を設定します
Resolve | 参照している IndirectObject を取得します
 | 継承されたメソッド...

プロパティ | 説明
ID | 参照する IndirectObject の ID
Gen | 参照する IndirectObject の作成
 | 継承されたプロパティ...


RefAtom コンストラクタ

RefAtom を構築します。

Syntax

[C#]
RefAtom()
RefAtom(IndirectObject value)

[Visual Basic]
Sub New()
Sub New(value As IndirectObject)

Params
名称 | 説明
value | Atom が参照する初期の IndirectObject

Notes

RefAtom を構築します。

IndirectObject を指定しなければ、エントリが 0 の Null オブジェクト(デフォルト)が使われます。

Example

ありません


Assign メソッド

参照する IndirectObject を設定します。

Syntax

[C#]
void Assign(IndirectObject value)
[Visual Basic]
Sub Assign(value As IndirectObject)

Params
名前 | 説明
value | 参照する IndirectObject

Notes

参照する IndirectObject を設定します。

Example

ありません。


Resolve メソッド

参照している IndirectObject を取得します。

Syntax

[C#]
IndirectObject Resolve(ObjectSoup objects)
[Visual Basic]
Function Resolve(objects As ObjectSoup) as IndirectObject

Params
名前 | 説明
objects | 検索するオブジェクトのコレクション
戻り値 | 該当する IndirectObject

Notes

このメソッドは RefAtom が参照している IndirectObject を取得します。

RefAtom が別の RefAtom を参照している場合、このメソッドは RefAtom ではない Atom が見つかるまで続行します。項目が見つからない場合、Null を返します。

Example

ありません。


ID プロパティ
型 | デフォルト値 | 読み取り専用 | 説明
[C#] int [Visual Basic] Integer | なし | いいえ | 参照する IndirectObject の ID

Notes

参照する IndirectObject の ID を表します。

Example

ありません。


Gen プロパティ
型 | デフォルト値 | 読み取り専用 | 説明
[C#] int [Visual Basic] Integer | なし | いいえ | 参照する IndirectObject を作成するかを定義します

Notes

参照する IndirectObject を作成するかを定義します。

Example

ありません。


StringAtom Class

StringAtom クラス

テキストを表す Atom

System.Object
   WebSupergoo.ABCpdf9.Atoms.Atom
      WebSupergoo.ABCpdf9.Atoms.StringAtom

メソッド | 説明
StringAtom | StringAtom を構築します
 | 継承されたメソッド...

プロパティ | 説明
Text | テキスト文字列
 | 継承されたプロパティ...


StringAtom コンストラクタ

StringAtom を構築します。

Syntax

[C#]
StringAtom()
StringAtom(string value)

[Visual Basic]
Sub New()
Sub New(value As String)

Params
名称 | 説明
value | Atom の初期の値

Notes

StringAtom を構築します。

値が指定されていないと、デフォルト(空白の文字列)が使われます。

Example

ありません。


Text プロパティ
型 | デフォルト値 | 読み取り専用 | 説明
[C#] string [Visual Basic] String | なし | いいえ | テキスト文字列

Notes

テキスト文字列をあらわします。

Example

ありません。


Operation Class

Operation クラス

ドキュメントで行われる処理

System.Object
   WebSupergoo.ABCpdf9.Operations.Operation
      WebSupergoo.ABCpdf9.Operations.RecolorOperation
      WebSupergoo.ABCpdf9.Operations.XpsImportOperation
      WebSupergoo.ABCpdf9.Operations.SwfImportOperation
      WebSupergoo.ABCpdf9.Operations.RenderOperation

Implements: IDisposable

メソッド | 説明
なし |

プロパティ | 説明
なし |
イベント | 説明
ProcessingObject | IndirectObject の処理前に発生します
ProcessedObject | IndirectObject の処理後に発生します


ProcessingObject Event

ProcessingObject イベント

IndirectObject の処理の直前に発生します。

Syntax

[C#]
event ProcessingObjectEventHandler ProcessingObject;

delegate void ProcessingObjectEventHandler(object sender, ProcessingObjectEventArgs e);

[Visual Basic]
Event ProcessingObject As ProcessingObjectEventHandler

Delegate Sub ProcessingObjectEventHandler(sender As Object, e As ProcessingObjectEventArgs);

Params
名称 | 説明
sender | イベントを発生する処理
e | 処理の制御に使用する ProcessingObjectEventArgs

Notes

一般的に、処理前に IndirectObject に関するプロパティを定義するために ProcessingObject イベントを処理します。

このハンドラが CancelEventArgs から派生する EventArgs クラスを渡すので、IndirectObject での処理のキャンセルを選択することもできます。

このイベントをイベントハンドルと関連付けるには、ProcessingObjectEventHandler デリゲートのインスタンスをこのイベントに追加してください。

Example

RecolorOperation.Recolor メソッドを参照してください。


ProcessedObject Event

ProcessedObject イベント

IndirectObject の処理直後に発生します。

Syntax

[C#]
event ProcessedObjectEventHandler ProcessedObject;

delegate void ProcessedObjectEventHandler(object sender, ProcessedObjectEventArgs e);

[Visual Basic]
Event ProcessedObject As ProcessedObjectEventHandler

Delegate Sub ProcessedObjectEventHandler(sender As Object, e As ProcessedObjectEventArgs);

Params
名称 | 説明
sender | イベントを発生する処理
e | 処理状態の報告に使用する ProcessedObjectEventArgs

Notes

一般的に、IndirectObject の後で処理するために ProcessedObject イベントを処理します。

このイベントをイベントハンドルに関連付けるには、このイベントに ProcessedObjectEventHandler デリゲートのインスタンスを追加してください。イベントハンドラはイベントが発生したときに必ず呼び出されます。

Example

RecolorOperation.Recolor メソッドを参照してください。


ProcessedObjectEventArgs Class

ProcessedObjectEventArgs クラス

ProcessedObject イベントのデータを提供します。

System.Object
   System.EventArgs
      WebSupergoo.ABCpdf9.Operations.ProcessedObjectEventArgs

メソッド | 説明
ProcessedObjectEventArgs | ProcessedObjectEventArgs コンストラクタ

プロパティ | 説明
Object | 処理直後の IndirectObject を取得します
Tag | イベントのデータ保存に使用可能なオブジェクトを取得または設定します
Succcessful | 処理が成功したかを示す値を取得します


ProcessedObjectEventArgs コンストラクター

ProcessedObjectEventArgs コンストラクタ

ProcessedObjectEventArgs コンストラクタ

Syntax

[C#]
ProcessedObjectEventArgs(IndirectObject obj, bool successful)
[Visual Basic]
Sub New(obj As IndirectObject, successful As Boolean)

Params
名称 | 説明
obj | 処理された IndirectObject
successful | 処理が成功したかを示す値

Notes

IndirectObject を詳述する ProcessedObjectEventArgs を作成してください。うまく処理されたかを示します。

Example

ありません。


Object Property

Object プロパティ

型 | デフォルト値 | 読み取り専用 | 説明
[C#] IndirectObject [Visual Basic] IndirectObject | なし | はい | 処理直後の IndirectObject を取得します。

Notes

処理直後の IndirectObject を取得します。

Example

RecolorOperation.Recolor メソッドを参照してください。


Successful Property

Successful プロパティ

型 | デフォルト値 | 読み取り専用 | 説明
[C#] bool [Visual Basic] Boolean | なし | はい | プロセスが成功したかを示す値を取得します

Notes

プロセスが成功したかを示す値を取得します。

Example

RecolorOperation.Recolor メソッドを参照してください。


Tag Property

Tag プロパティ

型 | デフォルト値 | 読み取り専用 | 説明
[C#] object [Visual Basic] Object | なし | いいえ | イベントのデータ保存に使用可能なオブジェクトを取得または設定します。

Notes

イベントのデータ保存に使用可能なオブジェクトを取得または設定します。

これは情報を ProcessingObject イベントから ProcessedObject イベントに渡す必要がある場合に役立ちます。

Example

RecolorOperation.Recolor メソッドを参照してください。


ProcessingObjectEventArgs Class

ProcessingObjectEventArgs クラス

ProcessingObject イベントのデータを提供します。

このクラスは処理をキャンセルできるように CancelEventArgs クラスから派生しています。

System.Object
   System.EventArgs
      System.ComponentModel.CancelEventArgs
         WebSupergoo.ABCpdf9.Operations.ProcessingObjectEventArgs

メソッド | 説明
ProcessingObjectEventArgs | ProcessingObjectEventArgs コンストラクタ

プロパティ | 説明
Object | 処理する IndirectObject を取得します
Tag | イベントのデータを保存するオブジェクトを取得または設定します
Info | 関連情報を含んでいる ProcessingInfo を取得します


ProcessingObjectEventArgs Constructor

ProcessingObjectEventArgs コンストラクタ

ProcessingObjectEventArgs コンストラクタ

Syntax

[C#]
ProcessingObjectEventArgs(IndirectObject obj)
ProcessingObjectEventArgs(IndirectObject obj, ProcessingInfo info)
[Visual Basic]
Sub New(obj As IndirectObject)
Sub New(obj As IndirectObject, info As ProcessingInfo)

Params
Name | 説明
obj | 処理寸前の IndirectObject
info | 関連情報を含んでいる ProcessingInfo

Notes

処理寸前の IndirectObject を詳述する ProcessingObjectEventArgs を構築します。

Example

ありません。


Object Property

Object プロパティ

型 | デフォルト値 | 読み取り専用 | 説明
[C#] IndirectObject [Visual Basic] IndirectObject | なし | はい | 処理する IndirectObject を取得します。

Notes

処理する IndirectObject を取得します。

Example

RecolorOperation.Recolor メソッドを参照してください。


Tag Property

Tag プロパティ

型 | デフォルト値 | 読み取り専用 | 説明
[C#] object [Visual Basic] Object | なし | いいえ | イベントのデータを保存するためのオブジェクトを取得または設定します。

Notes

イベントのデータを保存するためのオブジェクトを取得または設定します。

これは、情報を ProcessingObject イベントから ProcessedObject イベントに渡す必要がある場合に役立ちます。

Example

RecolorOperation.Recolor メソッドを参照してください。


Info Property

Info プロパティ

型 | デフォルト値 | 読み取り専用 | 説明
[C#] ProcessingInfo [Visual Basic] ProcessingInfo | なし | はい | 関連情報を含んでいる ProcessingInfo を取得します。

Notes

関連情報を含んでいる ProcessingInfo を取得します。

Example

XpsImportOperation.Import メソッドと SwfImportOperation.Import メソッドを参照してください。


ProcessingInfo Class

ProcessingInfo クラス

Operation.ProcessingObject イベントに関連する情報を提供します。ProcessingObjectEventArgs.Object が null で、ソースが PDF 以外の場合、ここでその処理のソース情報を取得できます。

System.Object
   WebSupergoo.ABCpdf9.Operations.ProcessingInfo

メソッド | 説明
ProcessingInfo | ProcessingInfo コンストラクタ

プロパティ | 説明
SourceType | 処理するソースオブジェクトのタイプとその処理段階を取得します
Handled | その処理がデフォルトの処理をスキップするために、イベントハンドラがイベントを処理したかを示す値を取得または設定します。
X | ソースオブジェクトの配置場所の x 座標を取得します
Y | ソースオブジェクトの配置場所の y 座標を取得します
Width | ソースオブジェクトの幅を取得します
Height | ソースオブジェクトの高さを取得します
DocNumber | 処理中/処理するソースドキュメントのドキュメント番号を取得または設定します
DocCount | ソースオブジェクトのドキュメントの数を取得します
PageNumber | 処理中/処理するソースページのページ番号を取得または設定します
PageCount | ソースオブジェクトのページ数を取得します
FrameNumber | 処理中/処理するソースフレームのフレーム番号を取得または設定します
FrameCount | ソースオブジェクトのフレーム数を取得します
FrameRate | ソースオブジェクトの1秒当たりのフレーム数を取得します
BackgroundColor | ソースオブジェクトの背景色を取得します
Text | ソースオブジェクトのテキストを取得します
StreamPosition | 存在する場合、ソースオブジェクトのストリームの位置を取得します。
StreamLength | 存在する場合、ソースオブジェクトのストリーム長を取得します。


ProcessingInfo Constructor

ProcessingInfo コンストラクタ

ProcessingInfo コンストラクタ。

Syntax

[C#]
ProcessingInfo()
[Visual Basic]
Sub New()

Params
名称 | 説明
なし |

Notes

ProcessingInfo を作成します。

Example

ありません。


SourceType Property

SourceType プロパティ

型 | デフォルト値 | 読み取り専用 | 説明
[C#] ProcessingSourceType [Visual Basic] ProcessingSourceType | 説明を参照してください。 | はい | 処理するソースオブジェクトのタイプとその処理段階を取得します。

Notes

ProcessingSourceType の列挙体には次の値があります。

  • Unknown
  • Document
  • Page
  • PageContent
  • Image
  • ImageMask
  • MultiFrameImage
  • ImageFrame
  • Stream
  • Path
  • Text
  • FormXObject
  • Shading

ソースタイプの趣旨はその処理に依存します。

Example

ありません。


Handled Property

Handled プロパティ

型 | デフォルト値 | 読み取り専用 | 説明
[C#] bool [Visual Basic] Boolean | false | いいえ | その処理がデフォルトの処理をスキップするために、イベントハンドラがイベントを処理したかを示す値を取得または設定します

Notes

このプロパティは、その処理がデフォルトの処理をスキップするかを定義します。

Example

XpsImportOperation.Import メソッドを参照してください。


X Property

X プロパティ

型 | デフォルト値 | 読み取り専用 | 説明
[C#] double? [Visual Basic] Nullable(Of Double) | なし | はい | ソースオブジェクトの配置場所の X 座標を取得します。

Notes

このプロパティは配置場所の水平方向のオブセットを取得します。

値はソースオブジェクトの座標系になります。

Example

ありません。


Y Property

Y プロパティ

型 | デフォルト値 | 読み取り専用 | 説明
[C#] double? [Visual Basic] Nullable(Of Double) | なし | はい | ソースオブジェクトの配置場所の Y 座標を取得します。

Notes

このプロパティは配置場所の垂直方向のオフセットを取得します。

値はソースオブジェクトの座標系になります。

Example

ありません。


Width Property

Width プロパティ

型 | デフォルト値 | 読み取り専用 | 説明
[C#] double? [Visual Basic] Nullable(Of Double) | なし | はい | ソースオブジェクトの幅を取得します。

Notes

このプロパティはソースオブジェクトの幅を取得します。

値はソースオブジェクトの座標系になります。

Example

ありません。


Height Property

Height プロパティ

型 | デフォルト値 | 読み取り専用 | 説明
[C#] double? [Visual Basic] Nullable(Of Double) | なし | はい | ソースオブジェクトの高さを取得します。

Notes

このプロパティは、ソースオブジェクトの高さを取得します。

値はソースオブジェクトの座標系になります。

Example

ありません。


DocNumber Property

DocNumber プロパティ

型 | デフォルト値 | 読み取り専用 | 説明
[C#] int? [Visual Basic] Nullable(Of Integer) | なし | いいえ | 処理中/処理するソースドキュメントのドキュメント番号を取得または設定します。

Notes

Operation.ProcessingObject の発生時に、その処理に応じてこのプロパティの値が決まります。

デフォルト以外にしたい場合、イベントハンドラがこの値を変更するはずです。現在のドキュメントの処理を終了するには、この値を null に設定してください。

Example

XpsImportOperation.Import メソッドを参照してください。


DocCount Property

DocCount プロパティ

型 | デフォルト値 | 読み取り専用 | 説明
[C#] int? [Visual Basic] Nullable(Of Integer) | なし | はい | ソースオブジェクトのドキュメントの数を取得します。

Notes

このプロパティは、ドキュメントのページ数を取得します。

Example

ありません。


PageNumber Property

PageNumber プロパティ

型 | デフォルト値 | 読み取り専用 | 説明
[C#] int? [Visual Basic] Nullable(Of Integer) | なし | いいえ | 処理中/処理するソースページのページ番号を取得または設定します。

Notes

Operation.ProcessingObject イベントの発生時に、その処理に応じてこのプロパティの値が決まります。

デフォルト以外にしたい場合、イベントハンドラがこの値を変更するはずです。現在のページの処理を終了するには、この値を null に設定してください。

Example

XpsImportOperation.Import メソッドを参照してください。


PageCount Property

PageCount プロパティ

型 | デフォルト値 | 読み取り専用 | 説明
[C#] int? [Visual Basic] Nullable(Of Integer) | なし | はい | ソースオブジェクトのページ数を取得します。

Notes

このプロパティは、ソースオブジェクトのページ数を取得します。

Example

ありません。


FrameNumber Property

FrameNumber プロパティ

型 | デフォルト値 | 読み取り専用 | 説明
[C#] long [Visual Basic] Nullable(Of Long) | なし | いいえ | 処理中/処理するソースのフレームのフレーム番号を取得または設定します。

Notes

Operation.ProcessingObject イベントの発生時に、その処理に応じてこのプロパティの値が決まります。

デフォルト以外にしたい場合、イベントハンドラがこの値を変更するはずです。現在のフレームの処理を終了するには、この値を null に設定してください。

Example

SwfImportOperation.Import メソッドを参照してください。

ここでは、3.5秒の位置にフレームをインポートします。

[C#]
Doc doc = new Doc();
using(SwfImportOperation operation = new SwfImportOperation()) {
  operation.Doc = doc;
  operation.ContentAlign = ContentAlign.Top;
  operation.ContentScaleMode = ContentScaleMode.ShowAll;
  operation.ProcessingObject += delegate(object sender, ProcessingObjectEventArgs e) {
    if(e.Info.SourceType==ProcessingSourceType.MultiFrameImage && e.Info.FrameNumber.HasValue)
      e.Info.FrameNumber = 1+(long)(e.Info.FrameRate.Value*3.5);
  }
  operation.Import(Server.MapPath("ABCpdf.swf"));
}
doc.Save(Server.MapPath("swf.pdf"));
doc.Clear();
[Visual Basic]
Dim theDoc As Doc = New Doc()
Using theOperation As New SwfImportOperation
  theOperation.Doc = theDoc
  theOperation.ContentAlign = ContentAlign.Top
  theOperation.ContentScaleMode = ContentScaleMode.ShowAll
  AddHandler theOperation.ProcessingObject, AddressOf Processing
  theOperation.Import(Server.MapPath("ABCpdf.swf"))
End Using
theDoc.Save(Server.MapPath("swf.pdf"))
theDoc.Clear()

Private Shared Sub Processing(sender As Object, e As ProcessingObjectEventArgs)
  If e.Info.SourceType = ProcessingSourceType.MultiFrameImage _
    AndAlso e.Info.FrameNumber.HasValue Then
    e.Info.FrameNumber = 1 + CLng(e.Info.FrameRate.Value * 3.5)
  End If
End Sub


FrameCount Property

FrameCount プロパティ

型 | デフォルト値 | 読み取り専用 | 説明
[C#] long? [Visual Basic] Nullable(Of Long) | なし | はい | ソースオブジェクト内のフレーム数を取得します。

Notes

このプロパティは、ソースオブジェクト内のフレーム数を取得します。

Example

ありません。


FrameRate Property

FrameRate プロパティ

型 | デフォルト値 | 読み取り専用 | 説明
[C#] double [Visual Basic] Nullable(Of Double) | なし | はい | ソースオブジェクトの1秒当たりのフレーム数を取得します。

Notes

このプロパティは、ソースオブジェクトの1秒当たりのフレーム数を取得します。

Example

FrameNumber プロパティと SwfImportOperation.Import メソッドを参照してください。


BackgroundColor Property

BackgroundColor プロパティ

型 | デフォルト値 | 読み取り専用 | 説明
[C#] XColor [Visual Basic] XColor | なし | はい | ソースオブジェクトの背景色を取得します。

Notes

このプロパティは、ソースオブジェクトの背景色を取得します。

Example

SwfImportOperation.Import メソッドを参照してください。


StreamPosition Property

StreamPosition プロパティ

型 | デフォルト値 | 読み取り専用 | 説明
[C#] long [Visual Basic] Nullable(Of Long) | なし | はい | 適用可能な場合、ソースオブジェクトのストリームの位置を取得または設定します。

Notes

Operation.ProcessingObject イベントが発生した時のこのプロパティの値はその処理に依存します。

このプロパティは PDF のストリームの位置を保持します。現在のストリームの処理を終了するには、この値を null に設定してください。

RenderOperation.Save メソッドを参照してください。

Example

ありません。


StreamLength Property

StreamLength プロパティ

型 | デフォルト値 | 読み取り専用 | 説明
[C#] long [Visual Basic] Nullable(Of Long) | なし | いいえ | 適用可能な場合、ソースオブジェクトのストリーム長を取得します。

Notes

Operation.ProcessingObject イベントが発生した時のこのプロパティの値はその処理に依存します。

RenderOperation.Save メソッドを参照してください。

Example

ありません。


Text Property

Text プロパティ

型 | デフォルト値 | 読み取り専用 | 説明
[C#] string [Visual Basic] String | なし | いいえ | 適用可能な場合、ソースイベントのユニコード テキストを取得します。

Notes

Operation.ProcessingObject イベントが発生した時のこのプロパティの値はその処理に依存します。

RenderOperation.Save メソッドを参照してください。

Example

ありません。


RecolorOperation Class

RecolorOperation クラス

PDF ドキュメントの色の再変換処理

System.Object
   WebSupergoo.ABCpdf9.Operations.Operation
      WebSupergoo.ABCpdf9.Operations.RecolorOperation

メソッド | 説明
RecolorOperation | RecolorOperation コンストラクタ
Throws Exceptions Recolor | PDF ドキュメントの一部の色を再変換します
 | 継承されたメソッド...

プロパティ | 説明
DestinationColorSpace | 変換先の ColorSpace
ConvertAnnotations | 注釈の色を再変換するを定義します
 | 継承されたプロパティ...


RecolorOperation Constructor

RecolorOperation コンストラクタ

RecolorOperation コンストラクタ

Syntax

[C#]
RecolorOperation()
[Visual Basic]
Sub New()

Params
名称 | 説明
なし |

Notes

RecolorOperation を作成します。

Recolor メソッドを呼び出す前に ColorSpace を指定しなければなりません。

Example

Recolor メソッドを参照してください。


Recolor Function

Recolor メソッド

ドキュメントのページを別の色に再変換します。

Syntax

[C#]
void Recolor(Doc doc)
void Recolor(Pages pages)
void Recolor(Page page)
[Visual Basic]
Sub Recolor(doc As Doc)
Sub Recolor(pages As Pages)
Sub Recolor(page As Page)

Throws Exceptions  エラーの場合、Exception() が発生します。

Params
名称 | 説明
doc | 別の色に再変換するドキュメント
pages | Pages の IndirectObject で参照した時に別の色に再変換するページ
page | Page の IndirectObject で参照した時に別の色に再変換するページ

Notes

指定したページをあるカラースペースから別のカラースペースに再変換します。

DestinationColorSpace プロパティに値を割り当てることにより新しいカラースペースに変換します。そのページで使用されたすべてのイメージは新しいカラースペースに変換されます。そのページのコンテンツストリームで使用されたすべてのカラー演算子は新しいカラースペースに変換されます。

注釈やフィールドはページの一部ではなく、そのページ上で浮いています。注釈の外観ストリームを変換するのか、本来のカラースペースのままにしておくのかを選択できます。これは ConvertAnnotations プロパティを使用して制御します。

カラースペースの特性について何か知っていれば、色のマッピングだけを実用的に行うことができます。カラースペースにこの情報（例えばデバイスのカラースペースかどうか）がなければ、ABCpdf はデフォルトのカラープロファイルを使用します。

処理できない場合（IndirectObjects が ObjectSoup にない場合や ColorSpace オブジェクトが何らかの理由で無効の場合）は例外が発生します。

Recolor 処理の一部として、そのページで使用したイメージもすべて別の色に変換されます（PixMap.Recolor を参照してください）。Recolor 処理が済むと、これらの PixMap オブジェクトはもう圧縮されません。 ProcessingObject イベント時に事前処理/ ProcessedObject イベント時に事後処理することによりこれらのイメージの分析や再圧縮を行えます。

Example

ここでは、ドキュメントのあるページの色を再変換します。処理するすべての PixMap オブジェクトのソースカラースペースを格納できるように、ProcessingObject イベントを取得します。CMYK の画像データを変換したくないので、これらを見つけた場合、Cancel プロパティを True に設定します。

次に、PixMap オブジェクトの色を変換した後で再圧縮できるように ProcessedObject イベントを取得します。ソースカラースペースとイメージサイズに応じて使用する再圧縮メソッドを変えます。

ここでは、.NET 1.1 コードとの後方互換性のために標準のデリゲートを使用します。しかし、.NET 2.0 の匿名デリゲートはもっとコンパクトな解決策を提供します。

[C#]
Doc theDoc = new Doc();
theDoc.Read(Server.MapPath("../mypics/sample.pdf"));
MyOp.Recolor(theDoc, (Page)theDoc.ObjectSoup[theDoc.Page]);
theDoc.Save(Server.MapPath("RecolorOperation.pdf"));
theDoc.Clear();

private class MyOp{
  public static void Recolor(Doc doc, Page page) {
    RecolorOperation op = new RecolorOperation();
    op.DestinationColorSpace = new ColorSpace(doc.ObjectSoup, ColorSpaceType.DeviceGray);
    op.ConvertAnnotations = false;
    op.ProcessingObject += Recoloring;
    op.ProcessedObject += Recolored;
    op.Recolor(page);
  }

  public static void Recoloring(object sender, ProcessingObjectEventArgs e) {
    PixMap pm = e.Object as PixMap;
    if (pm != null) {
      ColorSpaceType cs = pm.ColorSpaceType;
      if (cs == ColorSpaceType.DeviceCMYK)
        e.Cancel = true;
      e.Tag = cs;
    }
  }

  public static void Recolored(object sender, ProcessedObjectEventArgs e) {
    if (e.Successful) {
      PixMap pm = e.Object as PixMap;
      if (pm != null) {
        ColorSpaceType cs = (ColorSpaceType)e.Tag;
        if (pm.Width > 1000)
          pm.CompressJpx(30);
        else if (cs == ColorSpaceType.DeviceRGB)
          pm.CompressJpeg(30);
        else
          pm.Compress(); // Flate
      }
    }
  }
}

[Visual Basic]
Dim theDoc As Doc = New Doc()
theDoc.Read(Server.MapPath("../mypics/sample.pdf"))
MyOp.Recolor(theDoc, CType(theDoc.ObjectSoup(theDoc.Page), Page))
theDoc.Save(Server.MapPath("RecolorOperation.pdf"))
theDoc.Clear()

Private Class MyOp
  Public Shared Sub Recolor(doc As Doc, page As Page)
    Dim op As New RecolorOperation()
    op.DestinationColorSpace = New ColorSpace(doc.ObjectSoup, ColorSpaceType.DeviceGray)
    op.ConvertAnnotations = False
    AddHandler op.ProcessingObject, AddressOf Recoloring
    AddHandler op.ProcessedObject, AddressOf Recolored
    op.Recolor(page)
  End Sub 'Recolor

  Public Shared Sub Recoloring(sender As Object, e As ProcessingObjectEventArgs)
    Dim pm As PixMap = TryCast(e.Object, PixMap)
    If pm IsNot Nothing Then
      Dim cs As ColorSpaceType = pm.ColorSpaceType
      If cs = ColorSpaceType.DeviceCMYK Then
        e.Cancel = True
      End If
      e.Tag = cs
    End If
  End Sub 'Recoloring

  Public Shared Sub Recolored(sender As Object, e As ProcessedObjectEventArgs)
    If e.Successful Then
      Dim pm As PixMap = TryCast(e.Object, PixMap)
      If pm IsNot Nothing Then
        Dim cs As ColorSpaceType = CType(e.Tag, ColorSpaceType)
        If pm.Width > 1000 Then
          pm.CompressJpx(30)
        Else
          If cs = ColorSpaceType.DeviceRGB Then
            pm.CompressJpeg(30)
          Else
            pm.Compress() ' Flate
          End If
        End If
      End If
    End If
  End Sub 'Recolored
End Class 'MyOp


ConvertAnnotations Property

ConvertAnnotations プロパティ

型 | デフォルト値 | 読み取り専用 | 説明
[C#] bool [Visual Basic] Boolean | true | いいえ | 注釈の色を再変換するかを示す値を取得または設定します

Notes

注釈の色を再変換するかを示す値を取得または設定します。

注釈やフィールドはページの一部ではなく、ページ上に浮いています。注釈の外観ストリームを変換するのか、それとも本来のカラースペースのままにしておくのかを選択できます。

Example

Recolor メソッドを参照してください。


DestinationColorSpace Property

DestinationColorSpace プロパティ

型 | デフォルト値 | 読み取り専用 | 説明
[C#] ColorSpace [Visual Basic] ColorSpace | null | いいえ | 変換先の ColorSpace を取得または設定します。

Notes

変換先の ColorSpace を取得または設定します。

Example

Recolor メソッドを参照してください。


XpsImportOperation Class

XpsImportOperation クラス

XPS ドキュメントのインポート処理

System.Object
   WebSupergoo.ABCpdf9.Operations.Operation
      WebSupergoo.ABCpdf9.Operations.XpsImportOperation

メソッド | 説明
XpsImportOperation | XpsImportOperation コンストラクタ
ApplicationIsRunning | インポート アプリケーションが実行中かどうかを示す値を取得します
EnableApplicationReuse | インポート アプリケーション プロセスを再利用します
S» GetApplicationFolder | インポート アプリケーションのインストール フォルダを取得します
Throws Exceptions Import | XPS ドキュメントの一部をインポートします
Throws Exceptions ImportAny | ドキュメントの一部を中間の XPS プリントアウトからインポートします
KillApplication | 実行中のインポート アプリケーションを終了します
ReusesApplication | インポート アプリケーション プロセスを実行し、再利用するかどうかを示す値を取得します。
 | 継承されたメソッド...

プロパティ | 説明
Application | ImportAny で使用するアプリケーション
ApplicationFolder | ImportAny で使用するアプリケーション フォルダ
DocNumber | ImportAny で使用する1から始まるドキュメント番号
EnableMSOfficeMacros | MS Office ドキュメントを開く時にマクロを有効にするかどうか
Password | ソースの読込に必要なパスワード
 | 継承されたプロパティ...


XpsImportOperation Constructor

XpsImportOperation コンストラクタ

XpsImportOperation コンストラクタ。

Syntax

[C#]
XpsImportOperation()
[Visual Basic]
Sub New()

Params
名称 | 説明
なし |

Notes

XpsImportOperation を作成します。

Example

Import メソッドを参照してください。


ApplicationIsRunning Function

ApplicationIsRunning メソッド

XpsImportOperation のインポート アプリケーションが実行中かどうかを示す値を取得します。

Syntax

[C#]
bool ApplicationIsRunning(ImportApplicationType app)
[Visual Basic]
Function ApplicationIsRunning(app As ImportApplicationType) As Boolean

Params
名称 | 説明
app | インポート アプリケーション
戻り値 | アプリケーションが実行中かどうか

Notes

EnableApplicationReuse でアプリケーション プロセスの再利用が有効になっている場合、XpsImportOperation のアプリケーションが実行中かどうかを表します。

Example

ありません。


EnableApplicationReuse Function

EnableApplicationReuse メソッド

手動で終了した場合、またはこの処理を解放した時だけ、インポート アプリケーション プロセスを再利用できるようにします。

Syntax

[C#]
bool EnableApplicationReuse(ImportApplicationType app, bool reuse)
[Visual Basic]
Function EnableApplicationReuse(app As ImportApplicationType, reuse As Boolean) As Boolean

Params
名称 | 説明
app | インポート アプリケーション
reuse | アプリケーション プロセスを再利用するかどうか
戻り値 | アプリケーションの再利用状態を変えたかどうか

Notes

このメソッドは、アプリケーションの再利用状態 を変更します。現在、Microsoft Word、Excel、PowerPoint のみ、アプリケーション プロセスを再利用できます。

アプリケーションを再利用しなければ、ImportAny はアプリケーション プロセスを開始して終了します。アプリケーションの起動や終了のオーバーヘッドを避けるには、特定のアプリケーションに対してプロセスの再利用を有効にしてください。アプリケーションを使用する同じ XpsImportOperation の ImportAny でそのアプリケーションの同じプロセスが使用されます。

アプリケーション プロセスの再利用がサポートされていないと、再利用状態は変えられません。（XpsImportOperation オブジェクトの）プロセスが実行中 の場合、実行中のプロセスは再利用が無効になると終了します。

Example

ありません。


GetApplicationFolder Function

GetApplicationFolder メソッド

インポート アプリケーションのインストール フォルダを取得します。

Syntax

[C#]
static string GetApplicationFolder(ImportApplicationType app)
[Visual Basic]
Shared Function GetApplicationFolder(app As ImportApplicationType) As String

Params
名称 | 説明
app | インポート アプリケーション
戻り値 | アプリケーションのインストール フォルダ

Notes

ImportAny で使用可能なアプリケーションのインストール フォルダを返します。

ImportApplicationType.ShellAssociation のインストール フォルダは null です。Microsoft Office アプリケーションの場合、Microsoft Office のインストール フォルダになります。このメソッドが ShellAssociation 以外のアプリケーションに null を返すということはそのアプリケーションがインストールされていないか、ABCpdf がアプリケーションを見つけるのに失敗したということになります。その場合、ImportAny は失敗します。ABCpdf が確実にアプリケーションを見つけられるよう ImportAny を呼び出す前にこのメソッドを使用できます。

Example

ありません。


Import Function

Import メソッド

XPS ドキュメントの一部をインポートします。

Syntax

[C#]
void Import(Doc doc, string path)
[Visual Basic]
Sub Import(doc As Doc, path As String)

Throws Exceptions may throw Exception()

Params
名称 | 説明
doc | インポート先の PDF ドキュメント
path | XPS ドキュメントのファイルパス

Notes

XPS ドキュメントをインポートします。デフォルトでは、XPS ドキュメント全体がインポートされます。

StartPart FixedDocumentSequence を開いた後、ProcessingSourceType.Document の

XPS ドキュメントが壊れている場合などインポートできない場合は、例外が発生します。

PDF ファイルの色が少し違うのがわかるかもしれません。PDF は他のファイル形式とは違ってアルファブレンドを処理します。アルファブレンドについての説明は、SwfImportOperation.Import メソッドの説明を参照してください。

    このメソッドはイベントを次のように発生します。
  1. StartPart FixedDocumentSequence を開いた後、ProcessingSourceType.Document の ProcessingObject イベントが発生します。
    名称 | 説明
    ProcessingObjectEventArgs.Cancel | 以下の ProcessingObjectEventArgs.Info.DocNumber を参照してください。
    ProcessingObjectEventArgs.Info.Handled | 無視されます。
    ProcessingObjectEventArgs.Info.SourceType | ProcessingSourceType.Document
    ProcessingObjectEventArgs.Info.DocCount | FixedDocumentSequence の FixedDocument の数。
    ProcessingObjectEventArgs.Info.DocNumber | 処理される FixedDocument の番号（1から始まります）。DocCount が 0 でない限り、このプロパティの初期値は 1 になります。その次の値は、1 から DocCount プロパティまでの値の場合、前のイベントのイベントハンドラで返された値 + 1 になります。それ以外は null になります。このイベントハンドラはこの値を 1 から DocCount プロパティの値まで変更できます。FixedDocumentSequence のすべての FixedDocument の処理を終了するには null を設定してください。null の場合、 ProcessedObject イベントは発生しません。それ以外は、ProcessingObjectEvent.Cancel が True に設定されている場合、ProcessedObject イベントは発生せず、 1 から DocCount までの増分値で同じイベントがまたすぐ発生します。
  2. 前の ProcessingSourceType.Document の ProcessingObject イベントが DocNumber プロパティを返して、 FixedDocument を開くと、ProcessingSourceType.Page の ProcessingObject イベントが発生します。
    名称 | Description
    ProcessingObjectEventArgs.Cancel | 以下の ProcessingObjectEventArgs.Info.PageNumber を参照してください。
    ProcessingObjectEventArgs.Info.Handled | 無視されます。
    ProcessingObjectEventArgs.Info.SourceType | ProcessingSourceType.Page
    ProcessingObjectEventArgs.Info.DocCount | FixedDocumentSequence の FixedDocument の数。
    ProcessingObjectEventArgs.Info.DocNumber | 処理されている FixedDocument のドキュメント番号。
    ProcessingObjectEventArgs.Info.PageCount | FixedDocument の FixedPage の数。
    ProcessingObjectEventArgs.Info.PageNumber | 処理される FixedPage のページ番号（1から始まります）。PageCount が 0 でない限り、このプロパティの初期値は 1 になります。その次の値は、新しい値が１から PageCount までの場合、前のイベントのイベントハンドラで返された値 + 1 になります。それ以外は null になります。このイベントハンドラはこの値を 1 から PageCount プロパティの値まで変更できます。 FixedDocument の全 FixedPage の処理を終了するには、このプロパティを null に設定してください。null の場合、ProcessedObject イベントは発生しません。それ以外は、ProcessingObjectEventArgs.Cancel が True に設定されている場合は ProcessedObject イベントは発生せず、1 から PageCount までの増分値で同じイベントがまたすぐ発生します。
  3. 前の ProcessingSourceType.Page の ProcessingObject が PageNumber を返して、FixedPage を開くと、ProcessingSourceType.PageContent の ProcessingObject イベントが発生します。
    名称 | 説明
    ProcessingObjectEventArgs.Cancel | このプロパティが Trueの場合、ページ内容は作成されません。ProcessedObject イベントも発生しません。
    ProcessingObjectEventArgs.Info.Handled | このイベントの発生時、このプロパティ値は False です。そのハンドラが返される時に False の場合は、新規ページはインポート先の PDF ドキュメントに作成されます。FixedPage の情報に応じて新規ページの media box、crop box、art box が設定され、ページ内容はページ全体に作成されます。この値を True にすると、Doc.Transform を使用して、現在のページの Doc.Rect にページ内容が作成されます。
    ProcessingObjectEventArgs.Info.SourceType | ProcessingSourceType.PageContent
    ProcessingObjectEventArgs.Info.DocCount | FixedDocumentSequence の FixedDocument の数。
    ProcessingObjectEventArgs.Info.DocNumber | 処理されている FixedDocument のドキュメント番号。
    ProcessingObjectEventArgs.Info.PageCount | FixedDocument の FixedPage の数。
    ProcessingObjectEventArgs.Info.PageNumber | 処理されている FixedPage のドキュメント番号。
    ProcessingObjectEventArgs.Info.Width | 1/96 インチでの FixedPage の 幅（PageContent 要素で指定した幅ではなく、FixedPage 要素で指定した幅）。
    ProcessingObjectEventArgs.Info.Height | 1/96 インチでの FixedPage の 高さ（PageContent 要素で指定した高さではなく、FixedPage 要素で指定した高さ）。
  4. ページ内容の処理中に、イメージをインポートする時に ProcessingSourceType.Image の ProcessingObject イベントが発生します。
    名称 | 説明
    ProcessingObjectEventArgs.Cancel | 無視されます。
    ProcessingObjectEventArgs.Info.Handled | 無視されます。
    ProcessingObjectEventArgs.Info.SourceType | ProcessingSourceType.Image
    ProcessingObjectEventArgs.Info.DocCount | FixedDocumentSequence の FixedDocument の数。
    ProcessingObjectEventArgs.Info.DocNumber | 処理されている FixedDocument のドキュメント番号。
    ProcessingObjectEventArgs.Info.PageCount | FixedDocument の FixedPage の数。
    ProcessingObjectEventArgs.Info.PageNumber | 処理されている FixedPage のページ番号。
    ProcessingObjectEventArgs.Info.Width | イメージの幅（ピクセル）
    ProcessingObjectEventArgs.Info.Height | イメージの高さ（ピクセル）

上述以外は、各 ProcessingObject イベントと一致する ProcessedObject イベントは次のようにオブジェクトで発生します。

ProcessingObjectEventArgs.Info.SourceType | successful 時の ProcessedObjectEventArgs.Object
ProcessingSourceType.Document | null
ProcessingSourceType.Page | GraphicLayer
ProcessingSourceType.PageContent | null
ProcessingSourceType.Image | PixMap

インポートしたイメージは圧縮できません。ProcessingObject イベント時にイメージの事前処理/ ProcessedObject イベント時に事後処理することにより、PixMap オブジェクトの分析/圧縮が行なえます。

Example

8ページの XPS ドキュメントから奇数ページだけをインポートします。このとき、横向きの用紙に2ページづつインポートします。アスペクト比を維持したまま枠も表示します。

[C#]
Doc doc = new Doc();
MyImportOperation importOp = new MyImportOperation(doc);
importOp.Import(Server.MapPath("AdvancedGraphicsExamples.xps"));
doc.Save(Server.MapPath("xps.pdf"));
doc.Clear();

public class MyImportOperation {
  private Doc _doc = null;
  private double _margin = 10;
  private int _pagesAdded = 0;

  public MyImportOperation(Doc doc) {
    _doc = doc;

    _doc.Transform.Rotate(90, _doc.MediaBox.Left, _doc.MediaBox.Bottom);
    _doc.Transform.Translate(_doc.MediaBox.Width, 0);

    int theID = _doc.GetInfoInt(_doc.Root, "Pages");
    _doc.SetInfo(theID, "/Rotate", "90");
  }

  public void Import(string inPath) {
    using(XpsImportOperation op = new XpsImportOperation()) {
      op.ProcessingObject += Processing;
      op.ProcessedObject += Processed;
      op.Import(_doc, inPath);
    }
  }

  public void Processing(object sender, ProcessingObjectEventArgs e) {
    if (e.Info.SourceType == ProcessingSourceType.Page && e.Info.PageNumber != null) {
      if ((e.Info.PageNumber % 2) == 0)
        e.Info.PageNumber++;

      if (e.Info.PageNumber >= 8)
        e.Info.PageNumber = null;

      e.Tag = e.Info.PageNumber;
    } else if (e.Info.SourceType == ProcessingSourceType.PageContent) {
      if ((_pagesAdded % 2) == 0)
        _doc.Page = _doc.AddPage();

      double width = _doc.MediaBox.Height;
      double height = _doc.MediaBox.Width;
      double scale = Math.Min((width - 4 * _margin) / (2 * e.Info.Width.Value),
        (height - 2 * _margin) / e.Info.Height.Value);

      double rectWidth = scale * e.Info.Width.Value;
      double rectHeight = scale * e.Info.Height.Value;

      double distanceX = (width - 2 * rectWidth) / 3;
      double distanceY = (height - rectHeight) / 2;

      _doc.Rect.SetRect(distanceX + (_pagesAdded % 2) * (distanceX + rectWidth),
        distanceY, rectWidth, rectHeight);

      e.Info.Handled = true;
      _pagesAdded++;
    }
  }

  public void Processed(object sender, ProcessedObjectEventArgs e) {
    if (e.Successful) {
      PixMap pixmap = e.Object as PixMap;
      if (pixmap != null)
        pixmap.Compress();

      GraphicLayer graphic = e.Object as GraphicLayer;
      if (graphic != null) {
        _doc.FrameRect();

        int pageNumber = (int)e.Tag;
        _doc.FontSize = 16;
        _doc.HPos = 0.5;
        _doc.Rect.Top = _doc.Rect.Bottom - _margin;
        _doc.Rect.Bottom = _doc.MediaBox.Bottom;
        _doc.AddText(string.Format("Page {0}", pageNumber));
      }
    }
  }
}

[Visual Basic]Dim doc As New Doc()
Dim importOp As MyImportOperation = New MyImportOperation(doc)
importOp.Import(Server.MapPath("AdvancedGraphicsExamples.xps"))
doc.Save(Server.MapPath("xps.pdf"))
doc.Clear();

Public Class MyImportOperation
  Private _doc As Doc = Nothing
  Private _margin As Double = 10
  Private _pagesAdded As Integer = 0

  Public Sub New(doc As Doc)
    _doc = doc

    _doc.Transform.Rotate(90, _doc.MediaBox.Left, _doc.MediaBox.Bottom)
    _doc.Transform.Translate(_doc.MediaBox.Width, 0)

    Dim theID As Integer = _doc.GetInfoInt(_doc.Root, "Pages")
    _doc.SetInfo(theID, "/Rotate", "90")
  End Sub

  Public Sub Import(inPath As String)
    Using op As New XpsImportOperation()
      AddHandler op.ProcessingObject, AddressOf Processing
      AddHandler op.ProcessedObject, AddressOf Processed
      op.Import(_doc, inPath)
    End Using
  End Sub

  Public Sub Processing(sender As Object, e As ProcessingObjectEventArgs)
    If e.Info.SourceType = ProcessingSourceType.Page And e.Info.PageNumber IsNot Nothing Then
      If (e.Info.PageNumber Mod 2) = 0 Then
        e.Info.PageNumber += 1
      End If

      If e.Info.PageNumber >= 8 Then
        e.Info.PageNumber = Nothing
      End If

      e.Tag = e.Info.PageNumber
    ElseIf e.Info.SourceType = ProcessingSourceType.PageContent Then
      If (_pagesAdded Mod 2) = 0 Then
        _doc.Page = _doc.AddPage()
      End If

      Dim width As Double = _doc.MediaBox.Height
      Dim height As Double = _doc.MediaBox.Width
      Dim scale As Double = Math.Min((width - 4 * _margin) / (2 * e.Info.Width.Value), _
        (height - 2 * _margin) / e.Info.Height.Value)

      Dim rectWidth As Double = scale * e.Info.Width.Value
      Dim rectHeight As Double = scale * e.Info.Height.Value

      Dim distanceX As Double = (width - 2 * rectWidth) / 3
      Dim distanceY As Double = (height - rectHeight) / 2

      _doc.Rect.SetRect(distanceX + (_pagesAdded Mod 2) * (distanceX + rectWidth), _
        distanceY, rectWidth, rectHeight)

      e.Info.Handled = True
      _pagesAdded += 1
    End If
  End Sub

  Public Sub Processed(sender As Object, e As ProcessedObjectEventArgs)
    If e.Successful Then
      Dim pixmap As PixMap = TryCast(e.Object, PixMap)
      If pixmap IsNot Nothing Then
        pixmap.Compress()
      End If

      Dim graphic As GraphicLayer = TryCast(e.Object, GraphicLayer)
      If graphic IsNot Nothing Then
        _doc.FrameRect()

        Dim pageNumber As Integer = CInt(e.Tag)
        _doc.FontSize = 16
        _doc.HPos = 0.5
        _doc.Rect.Top = _doc.Rect.Bottom - _margin
        _doc.Rect.Bottom = _doc.MediaBox.Bottom
        _doc.AddText(String.Format("Page {0}", pageNumber))
      End If
    End If
  End Sub
End Class


ImportAny Function

ImportAny メソッド

ドキュメントの一部を中間の XPS プリントアウトからインポートします。

Syntax

[C#]
void ImportAny(Doc doc, string path)
void ImportAny(Doc doc, string path, int timeout
[Visual Basic]
Sub ImportAny(doc As Doc, path As String)
Sub ImportAny(doc As Doc, path As String, timeout As Integer)

Throws Exceptions エラーの場合、Exception() が発生します。

Params
名称 | 説明
doc | インポート先の PDF ドキュメント
path | ソースドキュメントのファイルパス
timeout | XPS プリンタドライバのタイムアウト（ミリ秒単位）。デフォルト値は 15500 ミリ秒です。

Notes

まず、さまざまなドキュメントを XPS プリンタドライバ（Microsoft XPS Document Writer (MXDW)）で変換してからインポートします。ドキュメントをテンポラリの XPS ファイルに出力します。シェルを使用して、ドキュメントを印刷するアプリケーションを起動します。デフォルトの印刷ダイアログしか使わないと仮定して XPS に出力し、その他の XPS ファイルと同じように PDF にインポートされます。

サポートされているアプリケーションの一覧については、Application プロパティを参照してください。また、このプロパティはドキュメントを XPS に出力するアプリケーションも定義します。

このメソッドを扱うには、Windows エクスプローラでドキュメントを右クリックした時に "印刷" オプションが表示されなければなりません。このオプションがない場合は、ImportAny() は失敗します。一部の Microsoft Office アプリケーション（Word、Excel、PowerPoint、MS InfoPath、MS Project） は Office の自動制御で起動されるので、"印刷" シェルとの関連性は必要ありませんが、それでもそういったドキュメントを処理するデフォルトのアプリケーションとして MS Office アプリケーションを設定しておかなければなりません。どのアプリケーションを使って XPS に変換するかは、常にファイル拡張子に依存するシェルの設定をベースにして定義されます。シェルのデフォルトプログラムを設定するには、Windows エクスプローラでドキュメントを右クリックし、"Open With" （...で開く）を選択し、"デフォルトのプログラムの選択" を選択してください。MS office アプリケーション以外でデフォルトのアプリケーションを設定しドキュメントを右クリックしても "印刷" オプションが表示されない場合は ImportAny() メソッドは使えません。

シェルのデフォルト プログラムに依存したくない場合は、Application プロパティを ImportAnyApplicationType で定義されているアプリケーションのどれかに設定してください。これらのアプリケーションは ImportAny で正式にサポートされています。他のアプリケーションを設定してもかまいませんが、その場合、シェルのデフォルト プログラムを使ってアプリケーションを関連付けなければなりません。弊社は Microsoft Office 2007 を正式にサポートしています。旧バージョンは一部のアプリケーションで動作するかもしれませんが、保証はできません。

Microsoft XPS Document Writer (MXDW) も必要です。 Windows Vista にはデフォルトで含まれています。Windows XP の場合は、http://msdn.microsoft.com/en-us/library/dd183313(VS.85).aspx からダウンロードできます。

ImportAny が失敗すると、アプリケーションは通常何らかの「印刷」ダイアログが閉じられるのを待って多分動かなくなりますが、このダイアログは ImportAny メソッドによって非表示になっているため、わかりません。この場合、ImportAny() メソッドはアプリケーションを終了したりエラーを出す前に指定したタイムアウトの間、待機します。デフォルトのタイムアウトは 15.5 秒です。タイムアウトをパラメータとして受け取るオーバーロードを使用することで、必要に応じてこの値を変更することができます。

Windows サービスか IIS プロセスから ImportAny を使用する場合、ABCpdf を COM+ アプリケーションにラップすることをお勧めします。これを行うには、PdfEnterpriseServices サンプルを参照してください。

PrintHookShow や PrintHookLog レジストリ キーを使用して ImportAny の問題をデバッグできます。詳しくは、「コンセプト」の「レジストリ キー」を参照してください。

Example

ImportAny メソッドは、関連するアプリケーションが「印刷」オプションをサポートするファイル形式を取得するという点を除けば Import メソッドと同じです。


KillApplication Function

KillApplication メソッド

実行中のインポート アプリケーションを終了します。

Syntax

[C#]
bool KillApplication(ImportApplicationType app)
[Visual Basic]
Function KillApplication(app As ImportApplicationType) As Boolean

Params
名称 | 説明
app | インポート アプリケーション
戻り値 | アプリケーションを実行して終了したかどうか

Notes

このメソッドは、EnableApplicationReuse メソッドでアプリケーション プロセスの再利用が有効になっている場合、XpsImportOperation のアプリケーションの実行を終了します。

Example

ありません。


ReusesApplication Function

ReusesApplication メソッド

インポート アプリケーション プロセスを実行したまま再利用するかを示す値を取得します。

Syntax

[C#]
bool ReusesApplicationImport(ApplicationType app)
[Visual Basic]
Function ReusesApplication(app As ImportApplicationType) As Boolean

Params
名称 | 説明
app | インポート アプリケーション
戻り値 | アプリケーション プロセスを実行したまま再利用するかどうか

Notes

このメソッドは、アプリケーションの再利用状態を返します。

再利用状態は EnableApplicationReuse で変更できます。

Example

ありません。


Application Property

Application プロパティ

型 | デフォルト値 | 読み取り専用 | 説明
[C#] ImportApplicationType [Visual Basic] ImportApplicationType | ShellAssociation | いいえ | ImportAny で使用するアプリケーション

Notes

ImportAny で使用するアプリケーションを表します。詳しくは、 ImportAny を参照してください。

このプロパティは次の値の1つを取得できます。

  • ShellAssociation - デフォルト値。シェルはファイルの関連付けを基準にして、使用するアプリケーションを決定します。 Windows エクスプローラからファイルを開く時に起動するアプリケーションも変換を行うために使用されます。
  • MicrosoftWord - Microsoft Word を使用します。インストールされていない場合は例外が発生します。
  • MicrosoftExcel - Microsoft Excel を使用します。インストールされていない場合は例外が発生します。
  • MicrosoftPowerPoint - Microsoft PowerPoint を使用します。インストールされていない場合は例外が発生します。
  • MicrosoftInfoPath - Microsoft InfoPath を使用します。インストールされていない場合は例外が発生します。1ユーザにつき誰でも一度に1つのプロセスしか起こらないので、ABCpdf がインタラクティブに起動するアプリケーションから InfoPath ドキュメントをインポートする場合、インタラクティブユーザが InfoPath を使用することはできません。ABCpdf のアプリケーションを Windows サービス内から実行する場合、個別の InfoPath のインスタンスが作成されるので、この制限は適用されません。しかし、InfoPath を使用して複数の ABCpdf のプロセスを同時に行うことはできません。これを避けるためにミューテックスが実装されているので、1度に1つの InfoPath ドキュメントしかインポートできません。
  • MicrosoftOneNote - Microsoft OneNote を使用します。インストールされていない場合は例外が発生します。1ユーザにつき誰でも1度に1つのプロセスのインスタンスしか起こらないので、InfoPath で説明したのと同じ制限が適用されます。
  • MicrosoftPublisher - Microsoft Publisher を使用します。インストールされていない場合は例外が発生します。
  • MicrosoftProject - Microsoft Project を使用します。 インストールされていない場合は例外が発生します。1ユーザにつき誰でも1度に1つのプロセスのインスタンスしか起こらないので、InfoPath で説明したのと同じ制限が適用されます。
  • MicrosoftVisio - Microsoft Visio を使用します。インストールされていない場合は例外が発生します。
  • MicrosoftOutlook - Microsoft Outlook を使用します。インストールされていない場合は例外が発生します。 Outlook ファイルは既に Outlook が起動している場合はインポートされません。これは既に Outlook が起動している時に印刷用に作成された新しいプロセスではなく、印刷を行う既存のプロセスがあるからです。

Example

ありません。


ApplicationFolder Property

ApplicationFolder プロパティ

型 | デフォルト値 | 読み取り専用 | 説明
[C#] string [Visual Basic] String | null | いいえ | ImportAny で使用するアプリケーション フォルダ

Notes

ImportAny で使用するアプリケーション フォルダを表します。 ImportAny を参照してください。

このプロパティが null の場合、アプリケーションのパスはレジストリーを調べて自動的に決められます。自動処理が失敗した時だけこのプロパティを設定してください。

Example

ありません。


DocNumber Property

DocNumber プロパティ

型 | デフォルト値 | 読み取り専用 | 説明
[C#] int [Visual Basic] Integer | 0 | いいえ | ImportAny で使用する1から始まるドキュメント番号。

Notes

ImportAny の呼び出し時にインポートするドキュメントを選択します。たいていの場合、任意のファイルから1つのドキュメントしか取得できず、このプロパティは無視されます。しかし Microsoft Excel など、場合によっては1つのワークブックに複数のワークシートが含まれている場合があります。このプロパティはインポートする Excel シートを選択します。

このプロパティを0（デフォルト値）または負の値に設定すると、Excel ワークブック全体がインポートされます。正の値を設定すると、一致するワークシートがインポートされます。インデックスは1から始まるので、1に設定すると最初のワークシートがインポートされます。このプロパティに有効な値（ワークブックの全ワークシートの数より少ない値または等しい値）を設定してください。

現在 Microsoft Excel 以外のアプリケーションでは、このプロパティは無視されます。

Example

ありません。


EnableMSOfficeMacros Property

EnableMSOfficeMacros プロパティ

型 | デフォルト値 | 読み取り専用 | 説明
[C#] bool [Visual Basic] Boolean | false | いいえ | MS Office ドキュメントを開く時にマクロを有効にするかを定義します

Notes

MS Office ドキュメントを開く時にマクロを有効にするかを定義します。MS Word、Excel、 PowerPoint でのみサポートされます。その他はすべて無視されます。

デフォルトでは、マクロは無効になっています。

Example

ありません。


Password Property

Password プロパティ

型 | デフォルト値 | 読み取り専用 | 説明
[C#] string [Visual Basic] String | null | いいえ | ソースの読込に必要なパスワード

Notes

ソースにアクセスするためのパスワードを指定します。MS Word や MS Excel ドキュメントでのみサポートされます。

Example

ありません。


SwfImportOperation Class

SwfImportOperation クラス

Flash ムービー （SWF ファイル）のインポート処理。

System.Object
   WebSupergoo.ABCpdf9.Operations.Operation
      WebSupergoo.ABCpdf9.Operations.SwfImportOperation

メソッド | 説明
SwfImportOperation | SwfImportOperation コンストラクタ
Throws Exceptions Import | Flash ムービーの選択したフレームをインポートします
 | 継承されたメソッド...

プロパティ | 説明
Doc | インポート先の PDF ドキュメント
BackgroundRegion | 背景領域を取得または設定します
ClipRegion | クリッピング領域を取得または設定します
ResetRegions | ProcessingSourceType.MultiFrameImage または ProcessingSourceType.ImageFrame の Operation.ProcessingObject イベントの発生時に、BackgroundRegion プロパティと ClipRegion プロパティをリセットするかを示す値を取得または設定します
Timeout | スクリプトが実行されるまでのタイムアウトを取得または設定します
ContentAlign | コンテンツの配置方法を取得または設定します
ContentScaleMode | コンテンツのスケールモードを取得または設定します
Parameters | SWF マシンを初期化するためのパラメータ
 | 継承されたプロパティ...


SwfImportOperation Constructor

SwfImportOperation コンストラクタ

SwfImportOperation コンストラクタ

Syntax

[C#]
SwfImportOperation()
[Visual Basic]
Sub New()

Params
名称 | 説明
なし |

Notes

SwfImportOperation を作成します。

ProcessingSourceType.ImageFrame の ProcessingObject イベントが返す/処理される前に Doc を指定しなければなりません。

Example

Import メソッドを参照してください。


Import Function

Import メソッド

Flash ムービーの選択したフレームをインポートします。

Syntax

[C#]
void Import(string path)
[Visual Basic]
Sub Import(path As String)

Throws Exceptions  エラーの場合、Exception() が発生します。

Params
名称 | 説明
path | Flash ムービーのファイルパス

Notes

Flash ムービーの選択したフレームをインポートします。デフォルトでは、1つのフレームだけがインポートされます。ActionScript 2 またはそれ以前がサポートされています。ActionScript 3 はサポートされていません。

アルファブレンディング PDF はさまざまなカラースペースを使用してアルファブレンディングをサポートします。ページに透過オブジェクトがある場合、カラースペースのブレンディングが使用されます。デフォルトでは DeviceCMYK を使用します。表示するために色をアルファブレンディングのカラースペースに変換してから DeviceRGB に変換するので、恐らく不透明オブジェクトでさえ何らかの色が変換されるのがわかると思います。コンポーネントにアルファブレンディングを使用するオブジェクトではこの効果はより顕著に現れます。

SWF で使用されているような RGB をアルファブレンディングに使用するには、そのページのデフォルトのブレンドのカラースペースを DeviceRGB に設定してください。

doc.SetInfo(doc.Page, "/Group*/Type:Name", "Group");
doc.SetInfo(doc.Page, "/Group*/S:Name", "Transparency");
doc.SetInfo(doc.Page, "/Group*/CS:Name", "DeviceRGB");

ProcessingSourceType.ImageFrame の ProcessingObject イベントが返す/処理される前に Doc を指定しなければなりません。

Flash ムービーが壊れている場合など処理できない場合は例外が発生します。

    このメソッドはイベントを次のように発生します。
  1. Flash エンジンが進む前に、ProcessingSourceType.MultiFrameImage の ProcessingObject イベントが発生します。ResetRegions が True の場合、このイベントの発生時に、BackgroundRegion プロパティと ClipRegion プロパティが Flash ムービーのフレーム領域にリセットされます。この領域は、
    XRect.SetRect メソッドと ProcessingInfo の X、Y、Width、Height プロパティが一緒に呼び出されるのと同じように設定されます。このイベントに最初に適切な FrameNumber プロパティが返される前に、Parameters プロパティを使用して ＳＷＦ を初期化するためのパラメータを指定できます。
    名称 | 説明
    ProcessingObjectEventArgs.Cancel | 以下の ProcessingObjectEventArgs.Info.FrameNumber を参照してください。
    ProcessingObjectEventArgs.Info.Handled | 無視されます。
    ProcessingObjectEventArgs.Info.SourceType | ProcessingSourceType.MultiFrameImage
    ProcessingObjectEventArgs.Info.FrameCount | Flash ムービーのフレームの数。
    ProcessingObjectEventArgs.Info.FrameNumber

    描画する前にムービーの先頭から進ませるフレーム番号（正の値）。この値は FrameCount プロパティとは関係ありません。このイベントのこのプロパティの初期値は 1 です。次のイベントの値は null になります。イベントハンドラがこの値を前のイベントで設定された値と同じかそれ以上の値に設定できます。この値より小さい場合は失敗を表す ProcessedObject イベントが発生します。ムービー全体の処理を終了するには、この値を null に設定してください。null の場合、ProcessedObject イベントは発生しません。それ以外は、ProcessingObjectEvent.Cancel が True の場合、ProcessedObject イベントは発生せず、この値を null の状態で同じイベントがまたすぐ発生します。
    ProcessingObjectEventArgs.Info.FrameRate

    1秒あたりの Flash ムービーのフレームの数。
    ProcessingObjectEventArgs.Info.X

    Flash ムービーのフレーム領域の X 座標（トゥイップ単位）。
    ProcessingObjectEventArgs.Info.Y

    Flash ムービーのフレーム領域の Y 座標（トゥイップ単位）。
    ProcessingObjectEventArgs.Info.Width

    Flash ムービーのフレーム領域の幅（トゥイップ単位）。
    ProcessingObjectEventArgs.Info.Height

    Flash ムービーのフレーム領域の高さ（トゥイップ単位）。
  2. 前の ProcessingSourceType.MultiFrameImage の ProcessingObject イベントに適切な FrameNumber が返されて、Flash エンジンがそのフレームに進むと、ProcessingSourceType.ImageFrame の ProcessingObject イベントが発生します。ResetRegions プロパティが True の場合、そのステージのスケーリングモードが変更された可能性があるので、BackgroundRegion プロパティと ClipRegion プロパティは ProcessingObject イベントの生成時に Flash ムービーのフレーム領域/ステージサイズにリセットされます。このイベントが返す/処理される前に Doc を指定しなければなりません。フレームはDoc.Transform を使用して、現在のページの Doc.Rect に描画されます。
    名称 | 説明
    ProcessingObjectEventArgs.Cancel | このプロパティが True の場合、フレームの作成も ProcessedObject イベントの発生もありません。
    ProcessingObjectEventArgs.Info.Handled | 無視されます。
    ProcessingObjectEventArgs.Info.SourceType | ProcessingSourceType.ImageFrame
    ProcessingObjectEventArgs.Info.FrameCount | Flash ムービーのフレームの数。
    ProcessingObjectEventArgs.Info.FrameNumber

    ムービーの先頭から進ませるフレーム番号。
    ProcessingObjectEventArgs.Info.FrameRate

    Flash ムービーの1秒あたりのフレームの数。
    ProcessingObjectEventArgs.Info.X

    Flash ムービーのフレーム領域の X 座標（トゥイップ単位）。
    ProcessingObjectEventArgs.Info.Y

    Flash ムービーのフレーム領域の Y 座標（トゥイップ単位）。
    ProcessingObjectEventArgs.Info.Width

    Flash ムービーのステージの幅（トゥイップ単位）。
    ProcessingObjectEventArgs.Info.Height

    Flash ムービーのステージの高さ（トゥイップ単位）。
    ProcessingObjectEventArgs.Info.BackgroundColor

    フレームの背景色。
  3. フレームの描画中に、イメージをインポートする時に ProcessingSourceType.Image の ProcessingObject イベントが発生します。
    名称 | 説明
    ProcessingObjectEventArgs.Cancel | 無視されます。
    ProcessingObjectEventArgs.Info.Handled | 無視されます。
    ProcessingObjectEventArgs.Info.SourceType | ProcessingSourceType.Image
    ProcessingObjectEventArgs.Info.FrameCount | Flash ムービーのフレームの数。
    ProcessingObjectEventArgs.Info.FrameNumber

    ムービーの先頭から進ませるフレーム番号。
    ProcessingObjectEventArgs.Info.FrameRate

    Flash ムービーの1秒あたりのフレーム数。
    ProcessingObjectEventArgs.Info.Width

    イメージの幅（ピクセル）。
    ProcessingObjectEventArgs.Info.Height

    イメージの高さ（ピクセル）。
  4. フレームの描画中に、マスクに使われるイメージをインポートする時に ProcessingSourceType.ImageMask の ProcessingObject イベントが発生します。
    名称 | 説明
    ProcessingObjectEventArgs.Cancel | 無視されます。
    ProcessingObjectEventArgs.Info.Handled | 無視されます。
    ProcessingObjectEventArgs.Info.SourceType | ProcessingSourceType.ImageMask
    ProcessingObjectEventArgs.Info.FrameCount | Flash ムービーのフレームの数。
    ProcessingObjectEventArgs.Info.FrameNumber

    ムービーの先頭から進ませるフレーム番号。
    ProcessingObjectEventArgs.Info.FrameRate | Flash ムービーの1秒あたりのフレーム数。
    ProcessingObjectEventArgs.Info.Width | イメージの幅（ピクセル）
    ProcessingObjectEventArgs.Info.Height | イメージの高さ（ピクセル）

上述以外は、各 ProcessingObject イベントと一致する ProcessedObject イベントが発生します。
ProcessingObjectEventArgs.Info.SourceType | successful 時の ProcessedObjectEventArgs.Object
ProcessingSourceType.MultiFrameImage | GraphicLayer
ProcessingSourceType.ImageFrame | null
ProcessingSourceType.Image | PixMap
ProcessingSourceType.ImageMask | PixMap

インポートされたイメージは圧縮されません。ProcessingObject イベント時に事前処理/ ProcessedObject イベント時に事後処理することにより、PixMap オブジェクトを分析/圧縮できます。

Example

ProcessingInfo.FrameNumber プロパティを参照してください。

Flash ムービーから24個のフレームを2つの PDF ドキュメントに交互にインポートします。フレームの間隔は0.2秒です。6フレームごとに出力し、アスペクト比を維持するよう Doc.Rect を設定します。それぞれのドキュメントにインポートされた5～8番目のフレームの背景を無効にし、代わりに同じ色で透明の楕円を描画します。

[C#]
Doc doc1 = new Doc();
Doc doc2 = new Doc();
using(SwfImportOperation operation = new SwfImportOperation()) {
  const int fontSize = 20;
  int k = 0;
  bool failed = false;
  operation.ProcessingObject += delegate(object sender, ProcessingObjectEventArgs e) {
    switch(e.Info.SourceType) {
    case ProcessingSourceType.MultiFrameImage:
      if(failed || k>=24)
        e.Info.FrameNumber = null;
      else
        e.Info.FrameNumber = 1+Convert.ToInt64(0.2*k*e.Info.FrameRate.Value);
      e.Tag = ProcessingSourceType.MultiFrameImage;
      break;
    case ProcessingSourceType.ImageFrame: {
      SwfImportOperation op = (SwfImportOperation)sender;
      op.Doc = op.Doc==doc1? doc2: doc1;
      const int distance = 20;
      const int margin = 30;
      double width = op.Doc.MediaBox.Width-2*margin;
      double height = op.Doc.MediaBox.Height-2*margin;
      double scale = Math.Min((width-distance)/(2*e.Info.Width.Value),
        (height-2*distance-3*fontSize)/(3*e.Info.Height.Value));

      int p = k/2;
      double rectWidth = scale*e.Info.Width.Value;
      double rectHeight = scale*e.Info.Height.Value;
      op.Doc.Rect.SetRect(margin+(width+distance)*(p%2)/2,
        margin+height-rectHeight-(height+2*distance)*(p/2%3)/3,
        rectWidth, rectHeight);
      if(p%6==0)
        op.Doc.Page = op.Doc.AddPage();
      if(p>=4 && p<8 && e.Info.BackgroundColor!=null) {
        op.BackgroundRegion = null;
        op.Doc.Color.String = e.Info.BackgroundColor.String;
        op.Doc.Color.Alpha = 127;
        op.Doc.AddOval(true);
      }
    } break;
    }
  };
  operation.ProcessedObject += delegate(object sender, ProcessedObjectEventArgs e) {
    if(!e.Successful) {
      failed = true;
      return;
    }
    if(e.Tag is ProcessingSourceType
      && (ProcessingSourceType)e.Tag==ProcessingSourceType.MultiFrameImage)
    {
      SwfImportOperation op = (SwfImportOperation)sender;
      op.Doc.Color.Gray = 0;
      op.Doc.Color.Alpha = 255;
      op.Doc.FontSize = fontSize;
      op.Doc.HPos = 0.5;
      op.Doc.Rect.Top = op.Doc.Rect.Bottom;
      op.Doc.Rect.Bottom = op.Doc.MediaBox.Bottom;
      op.Doc.AddText(string.Format("{0} secs", 0.2*k));
      ++k;
    }
    PixMap pixmap = e.Object as PixMap;
    if(pixmap!=null)
      pixmap.Compress();
  };
  operation.Import(Server.MapPath("ABCpdf.swf"));
}
doc1.Save(Server.MapPath("swf1.pdf"));
doc1.Clear();
doc2.Save(Server.MapPath("swf2.pdf"));
doc2.Clear();
[Visual Basic]
Dim theMyOp As MyOp
Using theOperation As New SwfImportOperation
  theMyOp = New MyOp(theOperation)
  theOperation.Import(Server.MapPath("ABCpdf.swf"))
End Using
theMyOp.Save(Server.MapPath("swf1.pdf"), Server.MapPath("swf2.pdf"))
theMyOp.Clear()

Private NotInheritable Class MyOp
  Private Const theFontSize As Integer = 20
  Private theDoc1 As Doc
  Private theDoc2 As Doc
  Private k As Integer
  Private theFailed As Boolean

  Public Sub New(theOperation As SwfImportOperation)
    theDoc1 = New Doc()
    theDoc2 = New Doc()
    k = 0
    theFailed = False
    AddHandler theOperation.ProcessingObject, AddressOf Processing
    AddHandler theOperation.ProcessedObject, AddressOf Processed
  End Sub

  Public Sub Save(path1 As String, path2 As String)
    theDoc1.Save(Server.MapPath(path1))
    theDoc2.Save(Server.MapPath(path2))
  End Sub

  Public Sub Clear()
    theDoc1.Clear()
    theDoc2.Clear()
  End Sub

  Private Sub Processing(sender As Object, e As ProcessingObjectEventArgs)
    Select Case e.Info.SourceType
    Case ProcessingSourceType.MultiFrameImage
      If theFailed Or k >= 24 Then
        e.Info.FrameNumber = Nothing
      Else
        e.Info.FrameNumber = 1 + Convert.ToInt64(0.2 * k * e.Info.FrameRate.Value)
      End If
      e.Tag = ProcessingSourceType.MultiFrameImage
    Case ProcessingSourceType.ImageFrame
      Dim op As SwfImportOperation = CType(sender, SwfImportOperation)
      If op.Doc Is theDoc1 Then
        op.Doc = theDoc2
      Else
        op.Doc = theDoc1
      End If
      Const distance As Integer = 20
      Const margin As Integer = 30
      Dim width As Double = op.Doc.MediaBox.Width - 2 * margin
      Dim height As Double = op.Doc.MediaBox.Height - 2 * margin
      Dim scale As Double = Math.Min((width - distance) / (2 * e.Info.Width.Value), _
        (height - 2 * distance - 3 * theFontSize) / (3 * e.Info.Height.Value))

      Dim p As Integer = k \ 2
      Dim rectWidth As Double = scale * e.Info.Width.Value
      Dim rectHeight As Double = scale * e.Info.Height.Value
      op.Doc.Rect.SetRect(margin + (width + distance) * (p Mod 2) / 2, _
        margin + height - rectHeight - (height + 2 * distance) * (p / 2 Mod 3) / 3, _
        rectWidth, rectHeight)
      If p Mod 6 = 0 Then
        op.Doc.Page = op.Doc.AddPage()
      End If
      If p >= 4 And p < 8 And e.Info.BackgroundColor IsNot Nothing Then
        op.BackgroundRegion = Nothing
        op.Doc.Color.String = e.Info.BackgroundColor.String
        op.Doc.Color.Alpha = 127
        op.Doc.AddOval(True)
      End If
    End Select
  End Sub

  Private Sub Processed(sender As Object, e As ProcessedObjectEventArgs)
    If Not e.Successful Then
      theFailed = True
      Return
    End If
    If TypeOf e.Tag Is ProcessingSourceType Then
       If CType(e.Tag, ProcessingSourceType) = ProcessingSourceType.MultiFrameImage Then
         Dim op As SwfImportOperation = CType(sender, SwfImportOperation)
         op.Doc.Color.Gray = 0
         op.Doc.Color.Alpha = 255
         op.Doc.FontSize = theFontSize
         op.Doc.HPos = 0.5
         op.Doc.Rect.Top = op.Doc.Rect.Bottom
         op.Doc.Rect.Bottom = op.Doc.MediaBox.Bottom
         op.Doc.AddText(String.Format("{0} secs", 0.2 * k))
         k += 1
       End If
    End If
    Dim thePixMap As PixMap = TryCast(e.Object, PixMap)
    If thePixMap IsNot Nothing Then
       thePixMap.Compress()
    End If
  End Sub
End Class

swf1.pdf

swf2.pdf


Doc Property

Doc プロパティ

型 | デフォルト値 | 読み取り専用 | 説明
[C#] Doc [Visual Basic] Doc | null | いいえ | インポート先の PDF ドキュメント。

Notes

インポート処理に使用されるドキュメント、つまり Flash ムービーのフレームをインポートするドキュメントです。

ProcessingSourceType.ImageFrame の ProcessingObject イベントが返す/処理される前に、このプロパティを null にできません。

Example

Import メソッドを参照してください。


BackgroundRegion Property

BackgroundRegion プロパティ

型 | デフォルト値 | 読み取り専用 | 説明
[C#] XRect [Visual Basic] XRect | null | いいえ | 背景領域を取得または設定します。

Notes

（トウィップ単位の）背景領域、つまりフレームの背景が描画される領域です。このプロパティを設定して背景領域や位置を変更してください。ResetRegions プロパティが True の場合、背景領域はそのフレーム領域/ステージサイズに設定されます。null （ResetRegions プロパティにより null 以外に設定されない）の場合、背景領域は描画されません。

Example

Import メソッドを参照してください。


ClipRegion Property

ClipRegion プロパティ

型 | デフォルト値 | 読み取り専用 | 説明
[C#] XRect [Visual Basic] XRect | null | いいえ | クリッピング領域を取得または設定します。

Notes

（トウィップ単位の）クリッピング領域、つまりフレームの前景の描画領域です。このプロパティを設定してフレームの前景領域や位置を変更します。この領域からはみ出た前景領域は切り取られます。ResetRegions プロパティが True の場合、クリッピング領域はそのフレーム領域/ステージサイズに設定されます。null （ResetRegions プロパティにより null 以外に設定されない）の場合、前景領域は切り取られません。

Example

ありません。


ResetRegions Property

ResetRegions プロパティ

型 | デフォルト値 | 読み取り専用 | 説明
[C#] bool [Visual Basic] Boolean | true | いいえ | ProcessingSourceType.MultiFrameImage またはProcessingSourceType.ImageFrame の Operation.ProcessingObject イベントの発生時に、BackgroundRegion プロパティと ClipRegion プロパティをリセットするかを示す値を取得または設定します。

Notes

新しいフレームがインポートされる度に、背景とクリッピング領域をフレーム領域にリセットするかを定義します。背景領域とクリッピング領域は、XRect.SetRect メソッドと ProcessingInfo の X、Y、Width、Height プロパティが一緒に呼び出されるのと同じように設定されます。ProcessingSourceType.MultiFrameImage または ProcessingSourceType.ImageFrame の Operation.ProcessingObject イベントの発生時にその領域をリセットしたくない場合は、このプロパティを False に設定してください。

Example

ありません。


Timeout Property

Timeout プロパティ

型 | デフォルト値 | 読み取り専用 | 説明
[C#] TimeSpan [Visual Basic] Nullable(Of TimeSpan) | null | いいえ | スクリプトが実行されるまでのタイムアウトを取得または設定します。

Notes

このプロパティは、Flash エンジンが指定したフレームに進むまでの間の Flash エンジンが進むごとにスクリプトが実行されるまでのタイムアウトを指定します。これによりスクリプトの無限ループを終了することができます。

Example

ありません。


ContentAlign Property

ContentAlign プロパティ

型 | デフォルト値 | 読み取り専用 | 説明
[C#] ContentAlign? [Visual Basic] Nullable(Of ContentAlign) | null | いいえ | コンテンツの配置方法を取得または設定します。

Notes

コンテンツの配置方法を指定します。

次の値を組み合わせて取得できます。

  • Center
  • Left
  • Right
  • Top
  • Bottom

null の場合、ActionScript の Stage.align プロパティの値が使用されます。

Example

ProcessingInfo.FrameNumber プロパティを参照してください。


ContentScaleMode Property

ContentScaleMode プロパティ

型 | デフォルト値 | 読み取り専用 | 説明
[C#] ContentScaleMode [Visual Basic] Nullable(Of ContentScaleMode) | ExactFit | いいえ | コンテンツのスケールモードを取得または設定します。

Notes

コンテンツのスケールモードを指定します。

次の値を取得できます。

  • ShowAll – アスペクト比を保ちながらコンテンツを拡大して、四角形にすべて収めます
  • NoBorder – アスペクト比を保ちながら四角形全体を覆うようにコンテンツを表示します
  • ExactFit – 四角形全体にぴったり収まるようにコンテンツを引き伸ばします。
  • NoScale – スケーリングなし

null の場合、ActionScript の Stage.scaleMode プロパティの値が使用されます。

Example

ProcessingInfo.FrameNumber プロパティを参照してください。


Parameters Property

Parameters プロパティ

型 | デフォルト値 | 読み取り専用 | 説明
[C#] SwfParameters [Visual Basic] SwfParameters | null | いいえ | SWF マシンを初期化するためのパラメータ

Notes

SWF マシンを初期化するためのパラメータを指定します。

このプロパティを設定する場合、適切な FrameNumber プロパティが最初に ProcessingSourceType.MultiFrameImage の ProcessingObject イベントに返される前に設定してください。SWF マシンが初期化された後に使用することはできません。

Example

ありません。


SwfParameters Class

SwfParameters クラス

SWF マシンを初期化するためのパラメータ。

System.Object
   WebSupergoo.ABCpdf9.Operations.SwfParameters

プロパティ | 説明
FlashVars | Flash の変数
StageAlign | ステージの配置
StageHeight | スケールモードが NoScale の時のステージの高さ
StageScaleMode | ステージのスケールモード
StageWidth | スケールモードが NoScale の時のステージの幅


FlashVars Property

FlashVars プロパティ

型 デフォルト値 読み取り専用 説明
[C#]
IEnumerable<KeyValuePair<string, object>>

[Visual Basic]
IEnumerable(Of KeyValuePair(Of String, Object)) 		null いいえ Flash の変数

Notes

Flash の変数を指定します。オブジェクトの値は次の通りです。

  • SwfActionValue.Undefined – 未定義の値
  • SwfActionValue.Null – null 値
  • Boolean – プリミティブ型の Boolean 値
  • Char – 1文字の文字列
  • SByte、Byte、Int16、UInt16 または Int32 – プリミティブ型の数値（32ビット整数）
  • UInt32、Int64 または UInt64 – プリミティブ型の数値（32ビット整数の範囲内の場合は32ビット整数、それ以外は倍精度の浮動小数点数）
  • Single – プリミティブ型の数値（単精度の浮動小数点数）
  • Double – プリミティブ型の数値（倍精度の浮動小数点数）
  • Decimal – プリミティブ型の数値（整数が32ビット整数の範囲内の場合は32ビット整数、それ以外は倍精度の浮動小数点数）
  • String – プリミティブ型の文字列
  • IEnumerable<KeyValuePair<string, object>> – KeyValuePair<string, object> を持つオブジェクト。Key はプロパティ名で Value はプロパティの値です。
  • IEnumerable<object> – 要素の値としてこの変換後のオブジェクトを持つ配列

オブジェクトの参照セマンティクスがサポートされています。同じ IEnumerable<KeyValuePair<string, object>> または同じ IEnumerable<object> がこのプロパティ値の所々にある場合、同じオブジェクトが使用されます。特に、循環参照を成すオブジェクトやプロパティ値/要素の値を作成できます。

Example

ありません。


StageAlign Property

StageAlign プロパティ

型 | デフォルト値 | 読み取り専用 | 説明
[C#] ContentAlign [Visual Basic] Nullable(Of ContentAlign) | null | いいえ | ステージの配置

Notes

ActionScript の Stage.align プロパティの値を指定します。null 以外の場合、Stage.align はこの値（の文字列表現）に設定されます。

次の値を組み合わせて取得できます。

  • Center
  • Left
  • Right
  • Top
  • Bottom

Example

ありません。


StageHeight Property

StageHeight プロパティ

型 | デフォルト値 | 読み取り専用 | 説明
[C#] double [Visual Basic] Nullable(Of Double) | null | いいえ | スケールモードが NoScale の時のステージの高さ

Notes

ActionScript の Stage.height プロパティ値の20倍を指定します。null 以外の場合、Stage.height は Stage.scaleMode プロパティが "noScale" の時にこの値の1/20を保持します。

Example

ありません。


StageScaleMode Property

StageScaleMode プロパティ

型 | デフォルト値 | 読み取り専用 | 説明
[C#] ContentScaleMode [Visual Basic] Nullable(Of ContentScaleMode) | null | いいえ | ステージのスケールモード

Notes

ActionScript の Stage.scaleMode プロパティの値を指定します。null 以外の場合、Stage.scaleMode はこの値（の文字列表現）に設定されます。

次の値を取得できます。

  • ShowAll – アスペクト比を保ちながら、コンテンツを最大にして四角形にすべて収めます
  • NoBorder – アスペクト比を保ちながら四角形全体を覆うようにコンテンツを表示します
  • ExactFit – 四角形全体にぴったり収まるようにコンテンツを引き伸ばします
  • NoScale – スケーリングなし

Example

ありません。


StageWidth Property

StageWidth プロパティ

型 | デフォルト値 | 読み取り専用 | 説明
[C#] double [Visual Basic] Nullable(Of Double) | null | いいえ | スケールモードが NoScale の時のステージの幅

Notes

ActionScript の Stage.width プロパティの20倍の値を指定します。null 以外の場合、Stage.width は1/20 Stage.scaleMode が "noScale" の時にこの値の1/20を保持します。

Example

ありません。


RenderOperation Class

RenderOperation クラス

PDF ドキュメントのページを作成する処理。

System.Object
   WebSupergoo.ABCpdf9.Operations.Operation
      WebSupergoo.ABCpdf9.Operations.RenderOperation

メソッド | 説明
RenderOperation | RenderOperation コンストラクタ
Throws Exceptions GetBitmap | ビットマップにページを作成します
Throws Exceptions GetData | データ配列に PDF ページを作成します
Throws Exceptions Save | ファイルに PDF ページを作成します
 | 継承されたメソッド...


RenderOperation Constructor

RenderOperation コンストラクタ

RenderOperation コンストラクタ。

Syntax

[C#]
RenderOperation(Doc doc)
[Visual Basic]
Sub New(doc As Doc)

Params
名称 | 説明
doc | PDF ドキュメント

Notes

異なるスレッドから複数の PDF ページを作成できるように RenderOperation を作成します。

RenderOperation を作成する前に Doc.Rendering を使用してレンダリングオプションを設定できます。RenderOperation の作成時に doc の関連プロパティがコピーされるので、RenderOperation を作成した後に Doc.Rendering のプロパティを変更しても RenderOperation に影響を与えません。同じく、RenderOperation を作成した後に別のページに現在のページを設定しても効果はありません。

Example

Save メソッドを参照してください。


Save Function

Save メソッド

ファイルに PDF ページを作成します。

Syntax

[C#]
virtual void Save(string path)

[Visual Basic]
Overridable Sub Save(path As String)

Throws Exceptions エラーの場合、 Exception() が発生します。

Params
名称 | 説明
path | インポート先のファイルパス

Notes

ファイルに PDF ページを作成します。RenderOperation の作成時に現在のページが作成されます。

このメソッドは XRendering.Save() と似ていますが、複数のスレッドからでも、各 RenderOperation のインスタンス上でも、同一ドキュメントの同一ページでも安全に呼び出すことができます。ドキュメントのレンダリングオプションやページ ID は RenderOperation に関連するため、表示中はそのページは変更されません。下のサンプルコードはマルチスレッドでのドキュメントページの作成方法を示しています。

更に、このメソッドはレンダリング処理をうまく同調させて次のイベントを発生します。
  1. レンダリングが始まる前に、ProcessingSourceType.PageContent の ProcessingObject イベントが発生します。レンダリングを全部飛ばすには、このイベントのアーギュメントの Cancel プロパティを True に設定してください。
  2. そのページのコンテンツで PDF のパスのストロークまたは塗りつぶし演算子が見つかると、ProcessingSourceType.Path の ProcessingObject イベントが発生します。このオブジェクトを飛ばすには、このイベントのアーギュメントの Cancel プロパティを True に設定してください。ストリーム長と位置は StreamPosition プロパティと StreamLength プロパティから取得できます。残りのストリームを飛ばすにはストリームの位置を null に設定してください。
  3. PDF のテキスト演算子が見つかると、ProcessingSourceType.Text の ProcessingObject イベントが発生します。Unicode テキストはこのイベントの Info プロパティの Text プロパティで取得できます。このオブジェクトを飛ばすには、このイベントの Cancel プロパティを True に設定してください。ストリーム長と位置は StreamPosition プロパティと StreamLength プロパティから取得できます。残りのストリームを飛ばすにはストリームの位置を null に設定してください。
  4. PDF の影演算子が見つかると、ProcessingSourceType.Shading の ProcessingObject イベントが発生します。オブジェクトを飛ばすには、このイベントのアーギュメントの Cancel プロパティを True に設定してください。ストリーム長と位置は StreamPosition プロパティと StreamLength プロパティから取得または設定できます。残りのストリームを飛ばすには、ストリームの位置を null に設定してください。
  5. （埋め込まれているまたは XObject の）イメージが見つかると、ProcessingSourceType.Image の ProcessingObject イベントが発生します。イメージが XObject の場合、このイベントのアーギュメントの Object プロパティから間接オブジェクトを取得できます。このオブジェクトを飛ばすには、このイベントの Cancel プロパティを True に設定してください。ストリーム長と位置は StreamPosition プロパティと StreamLength プロパティから取得できます。残りのストリームを飛ばすにはストリームの位置を null に設定してください。
  6. フォームの XObject が見つかると、ProcessingSourceType.FormXObject の ProcessingObject イベントが発生します。このイベントのアーギュメントの Object プロパティから間接オブジェクトを取得できます。このオブジェクトを飛ばすには、このイベントのアーギュメントの Cancel プロパティを True に設定してください。ストリーム長と位置は StreamPosition プロパティと StreamLength プロパティから取得できます。残りのストリームを飛ばすにはストリームの位置を null に設定してください。更に、Form はストリームを格納するので、ProcessingSourceType.Stream の ProcessingObject イベントが発生します。ストリームの位置を null に設定することによりストリームを好きな時に飛ばすことができます。言い換えると、上記の2から5に書かれているように Form のストリームに格納されているオブジェクトのイベントが発生します。Form のオブジェクトのストリームの位置を null に設定するとページのコンテンツ全体ではなく Form のストリームが飛ばされます。
どの ProcessingObject イベントも後で ProcessedObject （同じソース型のイベント）が発生します。すべてのページオブジェクトのイベントは PageContent の processing と processed イベントに挟まれるので、PageContent の ProcessedObject イベントは最後に受け取るイベントになります。フォームのストリームも同じく、すべてのフォームオブジェクトのイベントは Stream の processing と processed イベントに挟まれます。
ここに書かれていないイベントのプロパティやイベントの Info プロパティはすべて無視されます。

Example

1度にスレッドを10個使用して、doc の全ページを作成します。交互にレンダリング形式を jpeg と tiff に切り替えます。また、解像度も150 dpi と300 dpi に交互に切り替えます。RenderingWorker のコンストラクタでの RenderOperation の作成方法に注目してください。この時点でレンダリングオプションのコピーが作られます。DoWork で RenderOperation を作成していたら、スレッドが次のループで開始されるので最後の doc.Rendering.DotsPerInch だけ再開していたでしょう。また、ネイティブ側に保存されたリソース（つまりレンダリングオプションのコピー）をリリースするために、DoWork での RenderOperation の解放の仕方にも注目してください。

[C#]class RenderingWorker {
    private string mPath;
    private RenderOperation mOp;

    public RenderingWorker(Doc inDoc, string inPath) {
        mPath = inPath;
        mOp = new RenderOperation(inDoc);
    }

    public void DoWork() {
        mOp.Save(mPath);
        mOp.Dispose();
    }
}

Doc doc = new Doc();
doc.Read(Server.MapPath("ABCpdf.pdf"));
string[] theExts = { ".jpg", ".tif" };
int[] theDpis = { 150, 300 };
Thread[] threadList = new Thread[10];
int pageNum = 1, pageCount = doc.PageCount;
while (pageNum <= pageCount) {
    int count = 0;
    while (count < threadList.Length && pageNum <= pageCount) {
        doc.Rendering.DotsPerInch = theDpis[(pageNum - 1) % 2];
        doc.PageNumber = pageNum;
        string path = Server.MapPath("ABCpdf" + pageNum.ToString() + theExts[(pageNum - 1) % 2]);

        threadList[count] = new Thread(new RenderingWorker(doc, path).DoWork);
        ++count;
        ++pageNum;
    }
    for (int i = 0; i < count; ++i)
        threadList[i].Start();
    for (int i = 0; i < count; ++i)
        threadList[i].Join();
}
doc.Clear();

[Visual Basic]Class RenderingWorker
    Private mPath As String
    Private mOp As RenderOperation

    Public Sub New(ByVal inDoc As Doc, ByVal inPath As String)
        mPath = inPath
        mOp = New RenderOperation(inDoc)
    End Sub

    Public Sub DoWork()
        mOp.Save(mPath)
        mOp.Dispose()
    End Sub
End Class

Dim doc As Doc = new Doc()
doc.Read(Server.MapPath("ABCpdf.pdf"))
Dim theExts As String() = {".jpg", ".tif"}
Dim theDpis As Integer() = {150, 300}
Dim threadList(10 - 1) As Thread
Dim pageNum As Integer = 1, pageCount As Integer = doc.PageCount
While pageNum <= pageCount
    Dim count As Integer = 0
    While count < threadList.Length AndAlso pageNum <= pageCount
        doc.Rendering.DotsPerInch = theDpis((pageNum - 1) Mod 2)
        doc.PageNumber = pageNum
        Dim path As String = Server.MapPath(("ABCpdf" & pageNum.ToString()) + theExts((pageNum - 1) Mod 2))

        threadList(count) = New Thread(AddressOf New RenderingWorker(doc, path).DoWork)
        count += 1
        pageNum += 1
    End While

    For i As Integer = 0 To count - 1
        threadList(i).Start()
    Next
    For i As Integer = 0 To count - 1
        threadList(i).Join()
    Next
End While
doc.Clear()


GetBitmap Function

GetBitmap メソッド

Bitmap に PDF ページを作成します。

Syntax

[C#]
virtual System.Drawing.Bitmap GetBitmap()
[Visual Basic]
Overridable Function GetData(name As String) As Byte()

Throws Exceptions  エラーの場合、Exception() が発生します。

Params
名称 | 説明
戻り値 | イメージを含んでいる Bitmap

Notes

Bitmap に PDF ページを作成します。RenderOperation の作成時に現在のページが作成されます。

このメソッドは XRendering.GetBitmap() と似ていますが、複数のスレッドからでも、各 RenderOperation のインスタンス上でも、同一ドキュメントの同一ページでも安全に呼び出すことができます。ドキュメントのレンダリングオプションや現在のページは RenderOperation の作成時に保存されるため、表示中はそのページは変更されません。

Example

Save メソッドを参照してください。


GetData Function

GetData メソッド

バイト配列に PDF ページを作成します。

Syntax

[C#]
virtual byte[] GetData(string name)
[Visual Basic]
Overridable Function GetData(name As String) As Byte()

Throws Exceptions  エラーの場合、Exception() が発生します。

Params
名称 | 説明
name | イメージタイプを定義するために使用されるダミーファイル名
戻り値 | バイト配列としてのイメージ

Notes

バイト配列に PDF ページを作成します。RenderOperation の作成時に現在のページが作成されます。

このメソッドは XRendering.GetData() と似ていますが、複数のスレッドからでも、各 RenderOperation のインスタンス上でも、同一ドキュメントの同一ページでも安全に呼び出すことができます。ドキュメントのレンダリングオプションや現在のページは RenderOperation の作成時に保存されるため、表示中はそのページは変更されません。

Example

Save メソッドを参照してください。


PdfConformanceIdentification Class

PdfConformanceIdentification クラス

PDF の準拠仕様。

System.Object
   WebSupergoo.ABCpdf9.Operations.PdfConformanceIdentification

メソッド | 説明
S» FromDoc | PDF から準拠 ID を取得します

プロパティ | 説明
Part | 準拠バージョン番号
Amd | 準拠の修正識別子
Conformance | 準拠レベル
EffectiveConformance | 有効な PdfConformance の値


FromDoc Function

FromDoc メソッド

PDF から準拠 ID を取得します。

Syntax

[C#]
static PdfConformanceIdentification FromDoc(Doc doc, PdfConformance conformance)
[Visual Basic]
Shared Function FromDoc(doc As Doc, conformance As PdfConformance) As PdfConformanceIdentification

Params
名称 | 説明
doc | PDF 文書
conformance | ID を検索するための準拠仕様
戻り値 | 準拠 ID

Notes

要求を満たすための PDF 準拠を確認します。PDF が複数の仕様（例：PDF/A-1 と PDF/X-1）に準拠している可能性があります。conformance パラメータは希望する仕様を指定します。準拠のための PDF の値は認められません。PdfA1b と PdfA1a は PDF/A-1 を指定します。

Example

ありません。


Part Property

Part プロパティ

型 | デフォルト値 | 読み取り専用 | 説明
[C#] string [Visual Basic] String | "" | いいえ | 準拠バージョン番号

Notes

準拠仕様の品番を表します。PDF/A-1 の値は「1」です。

Example

ありません。


Amd Property

Amd プロパティ

型 | デフォルト値 | 読み取り専用 | 説明
[C#] string [Visual Basic] String | "" | いいえ | 準拠の修正識別子

Notes

準拠仕様の一部修正を表します。PDF/A の値は、"修正番号：年"です。現在、PDF/A-1 に修正はありません。

Example

ありません。


Conformance Property

Conformance プロパティ

型 | デフォルト値 | 読み取り専用 | 説明
[C#] string [Visual Basic] String | "" | いいえ | 準拠レベル

Notes

準拠レベルを表します。PDF/A-1a の値は "A" で、PDF/A-1b の値は "B" です。

Example

ありません。


EffectiveConformance Property

EffectiveConformance プロパティ

型 | デフォルト値 | 読み取り専用 | 説明
[C#] PdfConformance [Visual Basic] PdfConformance | Pdf | はい | 有効な PdfConformance の値

Notes

Part、Amd、 Conformance プロパティで指定された準拠を表します。

次の値のどれかを取得できます。

  • Pdf – PDF
  • PdfA1b – PDF/A-1b
  • PdfA1a – PDF/A-1a

Example

ありません。


PdfConformityOperation Class

PdfConformityOperation クラス

準拠した PDF ファイルの作成処理。

System.Object
   WebSupergoo.ABCpdf9.Operations.PdfConformityOperation

Implements: IDisposable

メソッド | 説明
Throws Exceptions GetData | 準拠した PDF を生データとして取得します
Throws Exceptions GetStream | 準拠した PDF を生データストリームとして取得します
Throws Exceptions Save | 準拠した PDF を保存します

プロパティ | 説明
Conformance | PDF 準拠
Errors | PDF の準拠形式における取得エラー


GetData Function

GetData メソッド

準拠した PDF を生データとして取得します。

Syntax

[C#]
byte[] GetData(Doc doc)
[Visual Basic]
Function GetData(doc As Doc) As Byte()

Throws Exceptions エラーの場合、Exception() が発生します。

Params
名称 | 説明
doc | PDF
戻り値 | バイト配列としての PDF

Notes

Conformance プロパティに応じた準拠形式で PDF を取得します。このメソッドの終了後に、Errors プロパティに準拠エラーが報告されます。

Example

ありません。


GetStream Function

GetStream メソッド

準拠した PDF を生データストリームとして取得します。

Syntax

[C#]
Stream GetStream(Doc doc)
[Visual Basic]
Function GetStream(doc As Doc) As Stream

Throws Exceptions エラーの場合、Exception() が発生します。

Params
名称 | 説明
doc | PDF
戻り値 | ストリームとしての PDF

Notes

Conformance プロパティに応じた準拠形式で PDF を取得します。このメソッドの終了後に、Errors プロパティに準拠エラーが報告されます。

CLR の制限がオブジェクトあたり 2 GB なので、GetData メソッドは 2 GB より大きい PDF データを返すことができません。これより大きい PDF にこのメソッドを使用してください。メモリー容量の小さい装置で不要になったストリームは破棄してください。

Example

ありません。


Save Function

Save メソッド

準拠した PDF を保存します。

Syntax

[C#]
void Save(Doc doc, string path)
void Save(Doc doc, Stream stream)
[Visual Basic]
Sub Save(doc As Doc, path As String)
Sub Save(doc As Doc, stream As Stream)

Throws Exceptions エラーの場合、Exception() が発生します。

Params
名称 | 説明
doc | PDF
path | 保存先のファイルパス
stream | 保存先のストリーム

Notes

Conformance プロパティに応じた準拠形式で PDF を保存します。このメソッドの終了後に、Errors プロパティに準拠エラーが報告されます。

Example

以下は、PDF を PDF/A-1b 形式で保存します。

[C#]
Doc theDoc = ...;
string thePath = Server.MapPath("pdfa.pdf");
using(PdfConformityOperation theOperation = new PdfConformityOperation()) {
  theOperation.Conformance = PdfConformance.PdfA1b;
  theOperation.Save(theDoc, thePath);

  if(theOperation.Errors.Count>0) {
    Console.WriteLine("Errors:");
    for(int i = 0; i<theOperation.Errors.Count; ++i)
      Console.WriteLine(theOperation.Errors[i]);
  }
}
[Visual Basic]
Dim theDoc As Doc = ...
Dim thePath As String = Server.MapPath("pdfa.pdf")
Using theOperation As New PdfConformityOperation
  theOperation.Conformance = PdfConformance.PdfA1b
  theOperation.Save(theDoc, thePath)

  If theOperation.Errors.Count > 0 Then
    Console.WriteLine("Errors:")
    For i As Integer = 0 To theOperation.Errors.Count - 1
      Console.WriteLine(theOperation.Errors(i))
    Next
  End If
End Using


Conformance Property

Conformance プロパティ

型 | デフォルト値 | 読み取り専用 | 説明
[C#] PdfConformance [Visual Basic] PdfConformance | Pdf | いいえ | PDF 準拠

Notes

PDF の出力準拠を指定します。

次の値のどれかを取得できます。

  • Pdf – PDF
  • PdfA1b – PDF/A-1b
  • PdfA1a – PDF/A-1a

Example

Save メソッドを参照してください。


Errors Property

Errors プロパティ

型 | デフォルト値 | 読み取り専用 | 説明
[C#] IList<string> [Visual Basic] IList(Of String) | null | はい | PDF の準拠形式における取得エラー

Notes

PDF の準拠形式における取得エラーを保持します。

Example

Save メソッドを参照してください。


PdfValidationOperation Class

PdfValidationOperation クラス

準拠した PDF ファイルの作成処理。

System.Object
   WebSupergoo.ABCpdf9.Operations.PdfValidationOperation

Implements: IDisposable

メソッド | 説明
Throws Exceptions Read | 既存の PDF の読込と検証を行います

プロパティ | 説明
Conformance | PDF の準拠
Doc | PDF の読込先の Doc オブジェクト
Errors | 検証エラー
Warnings | 検証の警告


Read Function

Read メソッド

既存の PDF の読込と検証を行います。

Syntax

[C#]
Doc Read(string path, XReadOptions options)
Doc Read(byte[] data, XReadOptions options)
Doc Read(Stream stream, XReadOptions options)
[Visual Basic]
Function Read(path As String, options As XReadOptions) As Doc
Function Read(data() As Byte, options As XReadOptions) As Doc
Function Read(stream As Stream, options As XReadOptions) As Doc

Throws Exceptions エラーの場合、Exception() が発生します。

Params
名称 | 説明
path | PDF のファイルパス
data | 既存の PDF データ
stream | 既存の PDF ストリーム
options | 読込設定（null になる場合があります）

Notes

Conformance プロパティに従って、PDF の読込と検証を行います。このメソッドの終了後に、Errors / Warnings プロパティに準拠エラーまたは警告が報告されます。

Doc プロパティが null の場合、返された新しい Doc オブジェクトに PDF が読み込まれます。そうでない場合は、返された Doc プロパティの値に PDF が読み込まれます。

Example

以下は、PDF/A-1b 形式についての PDF の検証を行います。

[C#]
string thePath = Server.MapPath("pdfa.pdf");
using(PdfValidationOperation theOperation = new PdfConformityOperation()) {
  theOperation.Conformance = PdfConformance.PdfA1b;
  Doc theDoc = theOperation.Read(thePath, null);
  theDoc.Dispose();

  if(theOperation.Errors.Count>0) {
    Console.WriteLine("Errors:");
    for(int i = 0; i<theOperation.Errors.Count; ++i)
      Console.WriteLine(theOperation.Errors[i]);
  }
  if(theOperation.Warnings.Count>0) {
    if(theOperation.Errors.Count>0)
      Console.WriteLine()
    Console.WriteLine("Warnings:");
    for(int i = 0; i<theOperation.Warnings.Count; ++i)
      Console.WriteLine(theOperation.Warnings[i]);
  }
}
[Visual Basic]
Dim thePath As String = Server.MapPath("pdfa.pdf")
Using theOperation As New PdfConformityOperation
  theOperation.Conformance = PdfConformance.PdfA1b
  Dim theDoc As Doc = theOperation.Read(thePath, Nothing)
  theDoc.Dispose()

  If theOperation.Errors.Count > 0 Then
    Console.WriteLine("Errors:")
    For i As Integer = 0 To theOperation.Errors.Count - 1
      Console.WriteLine(theOperation.Errors(i))
    Next
  End If
  If theOperation.Warnings.Count > 0 Then
    If theOperation.Errors.Count > 0 Then
      Console.WriteLine()
    End If
    Console.WriteLine("Warnings:")
    For i As Integer = 0 To theOperation.Warnings.Count - 1
      Console.WriteLine(theOperation.Warnings(i))
    Next
  End If
End Using


Conformance Property

Conformance プロパティ

型 | デフォルト値 | 読み取り専用 | 説明
[C#] PdfConformance [Visual Basic] PdfConformance | Pdf | いいえ | PDF の準拠

Notes

検証のための PDF 準拠を指定します。

次の値のどれかを取得できます。

  • Pdf – PDF
  • PdfA1b – PDF/A-1b
  • PdfA1a – PDF/A-1a

Example

Read メソッドを参照してください。


Doc Property

Doc プロパティ

型 | デフォルト値 | 読み取り専用 | 説明
[C#] Doc [Visual Basic] Doc | Pdf | いいえ | PDF の読込先の Doc オブジェクト

Notes

PDF の読込先の Doc オブジェクトを指定します。このプロパティが null の場合、Read メソッドは新しい Doc オブジェクトを返します。

Example

ありません。


Errors Property

Errors プロパティ

型 | デフォルト値 | 読み取り専用 | 説明
[C#] IList<string> [Visual Basic] IList(Of String) | null | はい | 検証エラー

Notes

検証エラーを保持します。

Example

Read メソッドを参照してください。


Warnings Property

Warnings プロパティy

型 | デフォルト値 | 読み取り専用 | 説明
[C#] IList<string> [Visual Basic] IList(Of String) | null | はい | 検証の警告

Notes

検証の警告を保持します。

Example

Read メソッドを参照してください。


PageContents Class

PageContents クラス

ページのテキスト分析や操作するための処理。

System.Object
   WebSupergoo.ABCpdf9.Operations.PageContents

メソッド | 説明
PageContents | PageContents コンストラクタ
Throws Exceptions AddPages | 操作するページを追加します

プロパティ | 説明
Throws Exceptions IncludeAnnotations | 注釈やフィールドのテキストを出力します


PageContents Constructor

PageContents コンストラクタ

PageContents コンストラクタ。

Syntax

[C#]
PageContents(Doc doc)
[Visual Basic]
Sub New(doc As Doc)

Params
名称 | 説明
doc | PDF

Notes

分析を必要とするページを保持するために PageContents を作成します。

doc が null の場合、例外が発生します。

Example

ありません。


AddPages Function

AddPages メソッド

操作するページを追加します。

Syntax

[C#]
void AddPages()
void AddPages(int pageNumber)
void AddPages(int startPageNumber, int endPageNumber)
[Visual Basic]
Sub AddPages()
Sub AddPages(pageNumber As Integer)
Sub AddPages(startPageNumber As Integer, endPageNumber As Integer)

Throws Exceptions エラーの場合、Exception() が発生します。

Params
名称 | 説明
pageNumber | 操作するページ枚数。インデックスは1から始まります。
startPageNumber | 操作する先頭ページ番号。インデックスは1から始まります。
endPageNumber | 操作する最終ページ番号。インデックスは1から始まります。

Notes

操作するページを追加します。指定したページ番号が間違っている場合、例外が発生します。

このメソッドのパラメータなしのバージョンは PDF の全ページを追加します。PDF のページを部分的に追加したい場合は、このメソッドのオーバーロードを使用して個々のページまたはページ範囲を指定できます。このメソッドを複数のページ範囲で複数回呼び出して、希望するページを正確に取得できます。

ページの追加は実に犠牲の大きい作業なので、同じページ範囲でいくつかの分析を行う場合、1つの PageContents オブジェクトを共有できます。

PageContents オブジェクトは現在の PDF コンテンツのキャッシュなので、既存の PDF コンテンツを再配置/置換する呼び出しによって無効にされる場合があります。このため、PageContents オブジェクトを含んだ操作を使用している時に、Doc.Save、Doc.GetData または Doc.Flatten メソッドを呼び出さないでください。

Example

TextOperation.Group メソッドを参照してください。


IncludeAnnotations Property

IncludeAnnotations プロパティ

型 | デフォルト値 | 読み取り専用 | 説明
[C#] bool [Visual Basic] Boolean | true | いいえ | 注釈やフィールドのテキストを出力します

Notes

注釈やフィールドのテキストを出力します。

このプロパティは AddPages を呼び出した後に変更してはいけません。そうすると例外が発生します。

Example

ありません。


TextOperation Class

TextOperation クラス

複数ページのテキストの分析や操作を行うための処理。

System.Object
   WebSupergoo.ABCpdf9.Operations.TextOperation

メソッド | 説明
TextOperation | TextOperation コンストラクタ
Throws Exceptions GetText | ページコンテンツのテキストをすべて取得します
Throws Exceptions Group | テキスト部分をリストにします
Throws Exceptions Select | ドキュメントのテキスト範囲を選択します

プロパティ | 説明
Hyphenation | ２行に分かれそうな単語のハイフンを取り除きます
PageContents | 操作するページ
Substitutions | 合字のような活版印刷文字をもっと普通のテキストに変換するための文字列置換用の文字
WordAffinity | ２つの言葉を１つとして考えるための最小間隔


TextOperation Constructor

TextOperation コンストラクタ

TextOperation コンストラクタ。

Syntax

[C#]
TextOperation(Doc doc)
[Visual Basic]
Sub New(doc As Doc)

Params
名称 | 説明
doc | PDF

Notes

テキストを分析するために TextOperation を作成します。doc パラメータが null の場合、例外が発生します。

Example

Group メソッドを参照してください。


GetText Function

GetText メソッド

ページコンテンツのテキストをすべて取得します。

Syntax

[C#]
string GetText()
[Visual Basic]
Function GetText() As String

Throws Exceptions エラーの場合、Exception() が発生します。

Params
名称 | 説明
文字列 | テキスト

Notes

PageContents プロパティで割り当てられたコンテンツのテキストを返します。PageContents が null の場合、例外が発生します。

テキストの取得はドキュメントのテキスト部分をスキャンし、それらの位置や大きさに応じてくっつけることが含まれます。結果は、ドキュメントの行末が見つかったところが行末になる標準の文字列です。

ご希望の文字列部分がある場合、ドキュメントでその部分を特定するために、Select メソッドと共にその部分のオフセットや長さを使用できます。

Example

Group メソッドを参照してください。


Select Function

Select メソッド

ドキュメントのテキスト範囲を選択します。

Syntax

[C#]
IList<TextFragment> Select(int startIndex, int length)
[Visual Basic]
Function Select(startIndex As Integer, length As Integer) As IList<TextFragment>

Throws Exceptions エラーの場合、Exception() が発生します。

Params
名称 | 説明
startIndex | GetText メソッドで返された文字列に関連させてテキストを選択するための開始インデックス
length | GetText メソッドで返された文字列に関連させてテキストを選択するための長さ
戻り値 | 選択されたテキストを含む、検索結果のリストを返します

Notes

ドキュメントのテキスト範囲を選択します。GetText を呼び出したことがない場合は例外が発生します。

このメソッドは、String.Substring メソッドと類似するよう意図的に設計されています。それは、GetText メソッドで取得したテキストを使って検索テキストを見つけるためです。その後、テキストのオフセットや長さを使用してドキュメントの実際のテキストを選択できます。

テキストの選択にはドキュメントの正確なテキスト部分を指定します。各部分は１つの領域とテキストを持っていて、ページのコンテンツストリームのテキスト描画処理に関係があります。これらの部分に Group メソッドを適用すると、関連するテキスト部分を関連する要素にまとめることができます。

Example

Group メソッドを参照してください。


Group Function

Group メソッド

テキスト部分をリストにします。

Syntax

[C#]
IList<TextGroup> Group(List<TextFragment> fragments)
[Visual Basic]
Function Group(fragments As List<TextFragment>) As IList<TextGroup>

Params
名称 | 説明
fragments | まとめる部分
戻り値 | その単語を定義するグループリストを返します

Notes

テキスト部分をリストにします。

Select メソッドを呼び出すと、そのテキスト部分と一致する TextFragments のリストを返します。しかし、各 TextFragment は単語のごく一部だけを表す場合があります。Group メソッドを呼び出すと、関連する部分を共通の四角形を持ったリストにできます。

厳密に言うと、このグループ化は常に行と一致するわけではありません。例えば、同じ行の2つの部分の間隔をあけると、隣接しているとはみなされません。しかし、ほとんどの場合はその２つは一致します。

Example

以下の例は、ソースドキュメントの検索文字列のそれぞれに四角形を描いて強調表示します。

[C#]
string theSrc = Server.MapPath("Acrobat.pdf");
string theDst = Server.MapPath("HighlightedText.pdf");
string searchString = "Acrobat";
using (Doc theDoc = new Doc()) {
  theDoc.Read(theSrc);
  TextOperation op = new TextOperation(theDoc);
  op.PageContents.AddPages();
  string text = op.GetText();
  int pos = 0;
  while (true) {
    pos = text.IndexOf(searchString, pos, StringComparison.CurrentCultureIgnoreCase);
    if (pos < 0)
      break;
    IList<TextFragment> theSelection = op.Select(pos, searchString.Length);
    IList<TextGroup> theGroups = op.Group(theSelection);
    foreach (TextGroup theGroup in theGroups) {
      theDoc.Rect.String = theGroup.Rect.String;
      theDoc.FrameRect();
    }
    pos += searchString.Length;
  }
  theDoc.Save(theDst);
}
[Visual Basic]
Dim theSrc As String = Server.MapPath("Acrobat.pdf")
Dim theDst As String = Server.MapPath("HighlightedText.pdf")
Dim searchString As String = "Acrobat"
Using theDoc As New Doc()
  theDoc.Read(theSrc)
  Dim op As New TextOperation(theDoc)
  op.PageContents.AddPages()
  Dim text As String = op.GetText()
  Dim pos As Integer = 0
  While True
    pos = text.IndexOf(searchString, pos, StringComparison.CurrentCultureIgnoreCase)
    If pos < 0 Then
      Exit While
    End If
    Dim theSelection As IList(Of TextFragment) = op.[Select](pos, searchString.Length)
    Dim theGroups As IList(Of TextGroup) = op.Group(theSelection)
    For Each theGroup As TextGroup In theGroups
      theDoc.Rect.[String] = theGroup.Rect.[String]
      theDoc.FrameRect()
    Next
    pos += searchString.Length
  End While
  theDoc.Save(theDst)
End Using


Hyphenation Property

Hyphenation プロパティ

型 | デフォルト値 | 読み取り専用 | 説明
[C#] bool [Visual Basic] Boolean | true | いいえ | ２行に分かれそうな単語のハイフンを取り除きます

Notes

２行に分かれそうな単語のハイフンを取り除きます。

このプロパティが True の場合、ハイフンは取り除かれ、ハイフンが付いていた残り半分の方の単語は前の行末に移動されます。

Example

ありません。


PageContents Property

PageContents プロパティ

型 | デフォルト値 | 読み取り専用 | 説明
[C#] PageContents [Visual Basic] PageContents | なし | いいえ | 操作するページ

Notes

操作するページを指定します。

PageContents オブジェクトへのページの追加は極めて時間のかかる犠牲の大きいやり方かもしれません。

ですから同じページにいくつもの分析を行う場合、ソースドキュメントから繰り返し追加するよりは次から次へとこのプロパティを割り当てる方が効果的かもしれません。

Example

ありません。


Substitutions Property

Substitutions プロパティ

型 | デフォルト値 | 読み取り専用 | 説明
[C#] IDictionary<char, string> [Visual Basic] IDictionary<char, string> | なし | いいえ | 合字のような活版印刷文字をもっと普通のテキストに変換するための文字列置換用の文字

Notes

合字のような活版印刷文字をもっと普通のテキストに変換するための文字列置換用の文字。

普通のテキストには珍しい活版印刷用の文字が PDF のテキストに含まれていることがよくあります。例えば、これらには「ff」や「fl」といった合字、n ダッシュや m ダッシュといったさまざまなダッシュ、曲線型/洒落たシングル/ダブル引用文字が含まれている場合があります。テキストの抽出や検索の目的としては、ほとんどの場合、これらの文字をより一般的なものに置換することが望ましいということです。

この操作のデフォルトの設定には上述したような文字の置換が含まれます。デフォルトの設定は変わりやすいので、ABCpdf のバージョン間で設定を一定に保つことが重要ならば、独自の値を割り当ててください。

Example

ありません。


WordAffinity Property

WordAffinity プロパティ

型 | デフォルト値 | 読み取り専用 | 説明
[C#] double [Visual Basic] Double | 0.15 | いいえ | ２つの言葉を１つとして考えるための最小間隔

Notes

２つの言葉を１つとして考えるための最小間隔。この値はフォントサイズの割合で指定します。

PDF のテキストに常に空白があるわけではありません。文字の書かれている位置で空白を表すのは珍しいことではありません。実際、２つの言葉の間に隙間があれば視覚的にその間に空白があるということになります。PDF からテキストを抽出する時に、テキストが空白で区切られているとみなす前に、空白の間隔を決める必要があります。

このプロパティはこの間隔を制御できます。プロパティ値が大きくなるとテキストの間隔があき、減らすと間隔が狭くなります。

大まかに言うと、このプロパティは空白とみなす間隔をフォントサイズの割合で定義します。実際のメカニズムは縦方向の間隔やテキストのフォントサイズの違いを考慮する必要があるのでこれより少し複雑ですが、大まかな定義は合っています。

Example

ありません。


TextFragment Class

TextFragment クラス

ドキュメントに表示されるテキスト部分。

各 TextFragment は PDF ストリームの描画オペレータの一部（オペレータで描画される全テキストまたは描画オペレータのテキストの一部）を表します。

例えば、 PDF のテキスト描画オペレータ "(Once upon a time) Tj" は 「Once upon a time」 というテキストを描画します。 「upon」 という単語を検索する場合、StreamOffset や StreamLength プロパティによって返される TextFragment はオペレータ全部を表しますが、Text や Rect などのプロパティはそのオペレータの「upon」という単語だけを表します。

System.Object
   WebSupergoo.ABCpdf9.Operations.TextFragment

メソッド | 説明
なし |

プロパティ | 説明
PageID | このテキスト部分があるページの ID
StreamID | このテキスト部分があるコンテンツストリームのストリーム ID
StreamOffset | この部分を含む描画処理を開始するためのコンテンツストリームのオフセットを提供します。
StreamLength | この部分を含む描画処理のコンテンツストリームの長さ
TextSpanIndex | この部分を含む描画オペレータのテキスト配列項目のインデックス（０から始まります）。テキスト配列オペレータではない場合、この値は 0 になります。
Rect | そのテキスト部分が入っている四角形
Text | そのテキスト部分（全テキスト描画オペレータの一部だけを表す場合があります）
RawText | 描画オペレータに指定するテキストまたは描画オペレータのテキスト配列項目


PageID Property

PageID プロパティ

型 | デフォルト値 | 読み取り専用 | 説明
[C#] int [Visual Basic] Integer | なし | はい | このテキスト部分があるページの ID

Notes

このテキスト部分があるページ ID。

Page オブジェクトを取得するために、この ID を Doc.Page プロパティに割り当てるか、ObjectSoup クラスで使用できます。

Example

ありません。


StreamID Property

StreamID プロパティ

型 | デフォルト値 | 読み取り専用 | 説明
[C#] int [Visual Basic] Integer | なし | はい | このテキスト部分があるコンテンツストリームのストリーム ID

Notes

このテキスト部分があるコンテンツストリームのストリーム ID。

StreamObject を取得するために、この ID を ObjectSoup で使用できます。

Example

ありません。


StreamOffset Property

StreamOffset プロパティ

型 | デフォルト値 | 読み取り専用 | 説明
[C#] int [Visual Basic] Integer | なし | はい | この部分を含む描画処理を開始するためのコンテンツストリームのオフセットを提供します

Notes

この部分を含む描画処理を開始するためのコンテンツストリームのオフセットを提供します。

各 TextFragment は PDF ストリームの描画オペレータの一部を表します。このプロパティはその描画オペレータを開始するための非圧縮ストリームのオフセットを提供します。

Example

ありません。


StreamLength Property

StreamLength プロパティ

型 | デフォルト値 | 読み取り専用 | 説明
[C#] int [Visual Basic] Integer | なし | はい | この部分を含む描画処理のコンテンツストリームの長さ

Notes

この部分を含む描画処理のコンテンツストリームの長さ。

各 TextFragment は PDF ストリームの描画オペレータの一部を表します。このプロパティは、この部分を含む描画処理のコンテンツストリームの長さを提供します。

Example

ありません。


TextSpanIndex Property

TextSpanIndex プロパティ

型 | デフォルト値 | 読み取り専用 | 説明
[C#] int [Visual Basic] Integer | なし | はい | この部分を含む描画オペレータのテキスト配列項目のインデックス（０から始まります）。テキスト配列オペレータではない場合、この値は 0 になります。

Notes

この部分を含む描画オペレータのテキスト配列項目のインデックス（０から始まります）。テキスト配列オペレータではない場合、この値は 0 になります。

各 TextFragment は PDF ストリームの描画オペレータの一部（オペレータで描画される全テキストまたはそのオペレータのテキストの一部）を表します。

テキスト描画オペレータによっては複数のテキスト項目を描画できるものもあります。これは文字列の文字の位置を調節するための便利な簡潔表現を提供します。例えば、次の命令は２つの単語の間隔（数値で指定）を広くあけて描画します。

[ (Breaking) 4000 (Bad) ] TJ

各 TextFragment はこうした配列の１つの文字列だけと一致します。このプロパティは一致した文字列を伝える０ベースのインデックスです。例えば、上記の例で言えば、TextFragment が "Bad" と一致した場合、このプロパティの値は「１」になります。

配列に関係のないテキスト描画オペレータの場合、この値は常に０になります。

Example

ありません。


Rect Property

Rect プロパティ

型 | デフォルト値 | 読み取り専用 | 説明
[C#] XRect [Visual Basic] XRect | なし | はい | そのテキスト部分が入っている四角形

Notes

そのテキスト部分が入っている四角形。

各 TextFragment は PDF ストリームの描画オペレータの一部（オペレータで描画される全テキスト、または描画オペレータのテキストの一部）を表します。

このプロパティは TextFragment の領域を表します。

Example

ありません。


Text Property

Text プロパティ

型 | デフォルト値 | 読み取り専用 | 説明
[C#] string [Visual Basic] String | なし | はい | そのテキスト部分。全テキスト描画オペレータの一部だけを表す場合があります。

Notes

そのテキスト部分。全テキスト描画オペレータの一部だけを表す場合があります。

各 TextFragment は PDF ストリームの描画オペレータの一部（描画オペレータで描画されるテキスト全部またはそのオペレータのテキストの一部）を表します。

このプロパティは TextFragment のテキスト（描画オペレータで選択された部分）を表します。

Example

ありません。


RawText Property

RawText プロパティ

型 | デフォルト値 | 読み取り専用 | 説明
[C#] string [Visual Basic] String | なし | はい | 描画オペレータに指定するテキストまたは描画オペレータのテキスト配列項目

Notes

描画オペレータのテキスト。

各 TextFragment は PDF ストリームの描画オペレータの一部（オペレータで描画される全テキスト、または描画オペレータのテキストの一部）を表します。

このプロパティは描画オペレータの全テキストを表します。描画オペレータがテキスト配列オペレータの場合、このプロパティは TextSpanIndex プロパティで参照された配列の一部のテキストを表します。

Example

ありません。


TextGroup Class

TextGroup クラス

一緒にまとめるテキスト部分。

TextFragment はテキストのごく一部分だけを表すので、一緒にまとめなければならない場合があります。例えば、次のような PDF の描画命令を取得する場合です。

[ (There) 400 (was) 400 (Eru,) 300 (the One) ] TJ

この命令は 「There was Eru, the One」 というテキストを書きます。ここには空白文字はありませんが、代わりに文字の配列（数値）で空白が表されています。

「was Eru」 という言葉を選択すると、２つの TextFragment （１つ目は 「was」、２つ目は 「Eru」） になります。これらの単語の間隔は 400 なので、２つの TextFragment.Rect はくっついていません。また、空白文字もないので、この２つを連げただけでは 「wasEru」 になってしまいます。

Text プロパティには（空白を入れて） 「was Eru」 を、Rect プロパティにはその言葉に合った四角形を定義して TextOperation.Group メソッドと一緒に使用すると、２つの単語が１つの TextGroup になります。

System.Object
   WebSupergoo.ABCpdf9.Operations.TextGroup

メソッド | 説明
なし |

プロパティy | 説明
PageID | このグループがあるページの ID
Text | そのグループのテキスト
Rect | そのグループが入っている四角形
TextFragments | そのグループのテキスト部分


PageID Property

PageID プロパティ

型 | デフォルト値 | 読み取り専用 | 説明
[C#] int [Visual Basic] Integer | なし | はい | このグループがあるページの ID

Notes

このグループがあるページの ID。

この ID を Doc.Page プロパティに割り当てるか ObjectSoup クラスで使用して Page オブジェクトを取得できます。

Example

ありません。


Rect Property

Rect プロパティ

型 | デフォルト値 | 読み取り専用 | 説明
[C#] XRect [Visual Basic] XRect | なし | はい | そのグループが入っている四角形

Notes

そのグループが入っている四角形。

Example

ありません。


Text Property

Text プロパティ

型 | デフォルト値 | 読み取り専用 | 説明
[C#] string [Visual Basic] String | なし | はい | そのグループのテキスト

Notes

そのグループのテキスト。

文字間隔があいている場合、例えば、空白などの結合文字が挿入されていることがあるので、必ずしもそのグループのテキストが TextFragments の連結テキストと同じとは限りません。

Example

ありません。


TextFragments Property

TextFragments プロパティ

型 | デフォルト値 | 読み取り専用 | 説明
[C#] IList<TextFragment> [Visual Basic] IList<TextFragment> | なし | はい | そのグループのテキスト部分

Notes

そのグループのテキスト部分。

Example

ありません。


ImageOperation Class

ImageOperation クラス

ドキュメントのラスターイメージ（ビットマップ）の位置を分析するための処理。

System.Object
   WebSupergoo.ABCpdf9.Operations.ImageOperation

メソッド | 説明
ImageOperation | ImageOperation コンストラクタ
Throws Exceptions GetImageProperties | 全ラスターイメージのイメージ情報を取得します

プロパティ | 説明
IncludeAll | 孤立行を検出できるように分析にすべてのイメージを含めるかどうか
PageContents | 操作するページ


ImageOperationConstructor

ImageOperation コンストラクタ

ImageOperation コンストラクタ。

Syntax

[C#]
ImageOperation(Doc doc)
[Visual Basic]
Sub New(doc As Doc)

Params
名称 | 説明
doc | PDF

Notes

テキストを分析するために ImageOperation を作成します。doc パラメータが null の場合、例外が発生します。

Example

ありません。


GetImageProperties Function

GetImageProperties メソッド

全ラスターイメージのイメージ情報を取得します。

Syntax

[C#]
ICollection<ImageProperties> GetImageProperties()
[Visual Basic]
Function GetImageProperties() As ICollection<ImageProperties>

Throws Exceptions エラーの場合、Exception() が発生します。

Params
名称 | 説明
戻り値 | すべてのイメージ プロパティのコレクション

Notes

全ラスターイメージのイメージ情報を取得します。PageContents プロパティが null の場合、例外が発生します。

イメージのプロパティを取得後、それが何のイメージでどこにあるか反復処理で調べることができます。HTML によく似た PDF はイメージとそのイメージの位置を切り離せるので、１つの PixMap を PDF の色んな位置に色んな大きさで何回も描画することができます。

Example

以下は、ソースドキュメントのイメージに赤い四角形を付けて強調表示します。

[C#]
string theSrc = Server.MapPath("Acrobat.pdf");
string theDst = Server.MapPath("HighlightedImages.pdf");
using (Doc theDoc = new Doc()) {
  theDoc.Read(theSrc);
  theDoc.Color.SetRgb(255, 0, 0);
  theDoc.Width = 0.1;
  ImageOperation op = new ImageOperation(theDoc);
  op.PageContents.AddPages();
  ICollection<ImageProperties> images = op.GetImageProperties();
  foreach (ImageProperties pl in images) {
    foreach (ImageRendition plc in pl.Renditions) {
      plc.Focus();
      theDoc.FrameRect();
    }
  }
  theDoc.Save(theDst);
}
[Visual Basic]
Dim theSrc As String = Server.MapPath("Acrobat.pdf")
Dim theDst As String = Server.MapPath("HighlightedImages.pdf")
Using theDoc As New Doc()
  theDoc.Read(theSrc)
  theDoc.Color.SetRgb(255, 0, 0)
  theDoc.Width = 0.1
  Dim op As New ImageOperation(theDoc)
  op.PageContents.AddPages()
  Dim images As ICollection(Of ImageProperties) = op.GetImageProperties()
  For Each pl As ImageProperties In images
    For Each plc As ImageRendition In pl.Renditions
      plc.Focus()
      theDoc.FrameRect()
    Next
  Next
  theDoc.Save(theDst)
End Using


IncludeAll Property

IncludeAll プロパティ

型 | デフォルト値 | 読み取り専用 | 説明
[C#] bool [Visual Basic] Boolean | false | いいえ | 孤立行を検出できるように、分析に全イメージを含めるかどうか

Notes

孤立行を検出できるように、分析に全イメージを含めるかどうか。

デフォルトでは、ImageOperation は使用されているイメージを全部確認しながら PageContents に定義されているページを調べていきます。しかし、使わないイメージをドキュメントに含めることができます。この種の孤立行はこのメソッドでは検出されません。

孤立行を検出するには、このプロパティを使ってドキュメント全体を検索し、含まれているイメージを参照できます。そういったイメージが孤立行である場合、ImageRenditions のない ImageProperties の項目として分析に登場するのでわかります。

Example

ありません。


PageContents Property

PageContents プロパティ

型 | デフォルト値 | 読み取り専用 | 説明
[C#] PageContents [Visual Basic] PageContents | なし | いいえ | 操作するページ

Notes

操作するページを指定します。

PageContents へのページの追加は極めて時間のかかる犠牲の大きいやり方かもしれません。

ですから同じページにいくつもの分析を行う場合、ソースドキュメントから繰り返し追加するよりは次から次へとこのプロパティを割り当てる方が効果的かもしれません。

Example

ありません。


ImageProperties Class

ImageProperties クラス
PDF の１つのラスターイメージ（ビットマップ）を表すクラス。

System.Object
   WebSupergoo.ABCpdf9.Operations.ImageProperties

メソッド | 説明
なし |

プロパティ | 説明
PixMap | イメージに関連付けられている PixMap オブジェクト
Renditions | PDF の色んな位置へのイメージ描画
Dpi | イメージの解像度（1インチ当たりのドット数）
DpiX | イメージの水平方向の解像度（1インチ当たりのドット数）
DpiY | イメージの垂直方向の解像度（1インチ当たりのドット数）


PixMap Property

PixMap プロパティ

型 | デフォルト値 | 読み取り専用 | 説明
[C#] PixMap [Visual Basic] PixMap | なし | はい | イメージに関連付けられている PixMap オブジェクト

Notes

イメージに関連付けられている PixMap オブジェクト。

Example

ありません。


Renditions Property

Renditions プロパティ

型 | デフォルト値 | 読み取り専用 | 説明
[C#] IList<ImageRendition> [Visual Basic] IList<ImageRendition> | なし | はい | PDF の色んな位置へのイメージ描画

Notes

PDF の色んな位置へのイメージ描画。

HTML によく似た PDF はイメージとそのイメージの位置を切り離せるので、１つのビットマップを PDF の色んな位置に色んな大きさで何回も描画できます。

Example

ありません。


Dpi Property

Dpi プロパティ

型 | デフォルト値 | 読み取り専用 | 説明
[C#] double [Visual Basic] Double | なし | はい | イメージの解像度（1インチ当たりのドット数）

Notes

イメージの解像度（1インチ当たりのドット数）。

Example

ありません。


DpiX Property

DpiX プロパティ

型 | デフォルト値 | 読み取り専用 | 説明
[C#] double [Visual Basic] Double | なし | はい | イメージの水平方向の解像度（1インチ当たりのドット数）

Notes

イメージの水平方向の解像度（1インチ当たりのドット数）。

Example

ありません。


DpiY Property

DpiY プロパティ

型 | デフォルト値 | 読み取り専用 | 説明
[C#] double [Visual Basic] Double | なし | はい | イメージの垂直方向の解像度（1インチ当たりのドット数）

Notes

イメージの垂直方向の解像度（1インチ当たりのドット数）。

Example

ありません。


ImageRendition Class

ImageRendition クラス

PDF のイメージの位置を表すクラス。

System.Object
   WebSupergoo.ABCpdf9.Operations.ImageRendition

メソッド | 説明
Focus | ドキュメントのイメージの位置にフォーカスします

プロパティ | 説明
PageID | イメージを配置するページの ID
Matrix | イメージを配置するための変換行列
Dpi | イメージの解像度（1インチ当たりのドット数）
DpiX | イメージの水平方向の解像度（1インチ当たりのドット数）
DpiY | イメージの垂直方向の解像度（1インチ当たりのドット数）


Focus Function

Focus メソッド

ドキュメントのイメージの位置にフォーカスします。

Syntax

[C#]
void Focus()
[Visual Basic]
Sub Focus()

Params
名称 | 説明
なし |

Notes

ドキュメントのイメージの位置にフォーカスします。

このメソッドを呼び出した後、イメージに重ねるコンテンツを追加できます。例えば、Doc.FrameRect メソッドを呼び出してイメージに枠を描く事ができます。

イメージは Rect ではなく常に変換行列を使用して描画されるので、恐らく線またはテキストのサイズを「１」より小さい値に下げる必要があります。

Example

ありません。


PageID Property

PageID プロパティ

型 | デフォルト値 | 読み取り専用 | 説明
[C#] int [Visual Basic] Integer | なし | はい | イメージを配置するページの ID

Notes

イメージを配置するページの ID。

この ID を Doc.Page プロパティに割り当てるか ObjectSoup と一緒に使用して Page オブジェクトを取得できます。

Example

ありません。


Matrix Property

Matrix プロパティ

型 | デフォルト値 | 読み取り専用 | 説明
[C#] XTransform [Visual Basic] XTransform | なし | はい | イメージを配置するための変換行列

Notes

イメージを配置するための変換行列。

PDF のイメージは常に幅と高さが「０」の原点（PDF ページの位置を定義する変換行列）に描画されます。

Example

ありません。


FlattenTransparencyOperation Class

FlattenTransparencyOperation クラス

PDF 文書の透明度を平坦化するための処理。

System.Object
   WebSupergoo.ABCpdf8.Operations.Operation
      WebSupergoo.ABCpdf8.Operations.FlattenTransparencyOperation

メソッド | 説明
FlattenTransparencyOperation | FlattenTransparencyOperation コンストラクタ
Throws Exceptions FlattenTransparency | PDF ページの透明度を平坦化します
 | 継承されたメソッド...

プロパティ | 説明
ColorSpace | オブジェクトを平坦化するためのカラースペースを設定します
Alpha | 背景のアルファ値を設定します
IccGray | デフォルトの Gray ICC カラープロファイルのパス
IccRgb | デフォルトの RGB ICC カラープロファイルのパス
IccCmyk | デフォルトの CMYK ICC カラープロファイルのパス
DotsPerInch | 作成するイメージの解像度を設定します
Log | 最新の FlattenTransparency 処理の情報を返します
AntiAliasText | 合成イメージオブジェクトを作成する時にテキストをアンチエイリアスします
AntiAliasPoly | 合成イメージオブジェクトを作成する時にポリゴンをアンチエイリアスします
 | 継承されたプロパティ...


FlattenTransparency Function

FlattenTransparency メソッド

PDF ページの透明度を平坦化します。

Syntax

[C#]
void FlattenTransparency(Doc doc)
void FlattenTransparency(Pages pages)
void FlattenTransparency(Page page)
[Visual Basic]
Sub FlattenTransparency(doc As Doc)
Sub FlattenTransparency(pages As Pages)
Sub FlattenTransparency(page As Page)

Throws Exceptions エラーの場合、Exception() が発生します。

Params
名称 | 説明
doc | 平坦化する透明度を含んだ PDF
pages | Pages の IndirectObject で参照される時に透明度を平坦化するページ
page | Page の IndirectObject で参照される時に透明度を平坦化するページ

Notes

PDF ページの透明オブジェクトを平坦化します。

透明なオブジェクトと他のオブジェクトが重なっている場合、その重なっているオブジェクトの一部/全部が透けます。このメソッドは２つのオブジェクトの重なった部分を表現する、新しいオブジェクトを作成します。重なっていない透明なオブジェクトの部分は、完全に不透明なオブジェクトにするために背景色（白）で構成されます。

Example

以下は、PDF の透明オブジェクトをすべて平坦化します。

[C#]

FlattenTransparencyOperation transOp = new FlattenTransparencyOperation();
transOp.DotsPerInch = 144;
transOp.ColorSpace = XRendering.ColorSpaceType.Rgb;

Doc theDoc = new Doc();
theDoc.Read(Server.MapPath("../mypics/sample.pdf"));
transOp.Flatten(theDoc);
theDoc.Save(Server.MapPath("../Flattened/sample.pdf"));


Alpha Property

Alpha プロパティ

型 | デフォルト値 | 読み取り専用 | 説明
[C#] double | 1.0 | いいえ | 背景のアルファ値を設定します

Notes

オブジェクトを背景と合成する場合、このアルファ値は合成後のオブジェクトの最小アルファ値になります。

Example

Flatten メソッドを参照してください。


AntiAliasPolygons Property

AntiAliasPoly プロパティ

型 | デフォルト値 | 読み取り専用 | 説明
[C#] bool | true | いいえ | 合成イメージオブジェクトを作成する時にポリゴンをアンチエイリアスします

Notes

合成イメージオブジェクトを作成する時にポリゴンのエッジをアンチエイリアスします。

アンチエイリアスとは、オブジェクトを描画する時にギザギザのエッジを取り除くために色のグラデーションを使用することです。オブジェクトのエッジはぼかされてピクセル化が軽減されます。

Example

ありません。


AntiAliasText Property

AntiAliasText プロパティ

型 | デフォルト値 | 読み取り専用 | 説明
[C#] bool | true | いいえ | 合成イメージオブジェクトを作成する時にテキストをアンチエイリアスします

Notes

合成イメージオブジェクトを作成する時にテキストのエッジをアンチエイリアスします。

アンチエイリアスとは、オブジェクトを描画する時にギザギザのエッジを取り除くために色のグラデーションを使用することです。オブジェクトのエッジがぼかされてピクセル化を軽減します。

Example

ありません。


ColorSpace Property

ColorSpace プロパティ

型 | デフォルト値 | 読み取り専用 | 説明
[C#] XRendering.ColorSpaceType | true | いいえ | オブジェクトを平坦化するためのカラースペースを設定します

Notes

オブジェクトはすべてこのカラースペースに変換されます。また、新規オブジェクトの作成中にこのカラースペースで合成計算も行われます。

Example

Flatten メソッドを参照してください。


DotsPerInch Property

DotsPerInch プロパティ

型 | デフォルト値 | 読み取り専用 | 説明
[C#] double | 72.0 | いいえ | 作成するイメージの解像度を設定します

Notes

２つの複雑なオブジェクト（部分的に透明なイメージと背景イメージ）が重なり合っている場合、重なりを示すイメージはこの解像度で作成されます。

Example

Flatten メソッドを参照してください。


IccCmyk Property

IccCmyk プロパティ

型 | デフォルト値 | 読み取り専用 | 説明
[C#] string | "standard" | いいえ | デフォルトの CMYK ICC カラープロファイルのパス

Notes

デフォルトの CMYK ICC カラープロファイルのパス。

PDF ファイルで指定した CMYK デバイスをデバイス独自の作業用のカラースペースに変換するためのプロファイル。

これは、出力カラースペースが Lab または別のデバイス独自のカラースペースの場合に使用されます。IccOutput がカラープロファイルの使用を示している場合、その出力は常にデバイス独自になります。IccOutput がカラープロファイルを何も使用しないことを示している場合は、その出力は常にデバイスに依存します。

このプロパティは icm ファイルのパスを取得できますが、２つの特別な値も使用できます。このプロパティが 「device」 を取得する場合、デバイスのカラースペースが使用されます。「standard」 を取得する場合は、デフォルトで埋め込まれているカラープロファイルが使用されます。

このプロパティを 「standard」 またはカラープロファイルのパスに設定した場合、IccRgb、IccCmyk、IccGray、IccOutput も 「standard」 またはカラープロファイルのパスに設定してください。すべてのカラースペースをデバイス独自のカラースペースとみなします。

このプロパティを 「device」 に設定した場合、IccRgb、IccCmyk、 IccGray、IccOutput も 「device」 に設定してください。すべてのカラースペースをデバイスのカラースペースとみなします。

このプロパティをパス情報がないファイル名に設定した場合、そのファイルを見つけるために 「<windows>\system32\spool\drivers\color」 フォルダを検索します。

Example

ありません。


IccGray Property

IccGray プロパティ

型 | デフォルト値 | 読み取り専用 | 説明
[C#] string | "standard" | いいえ | デフォルトの Gray ICC カラープロファイルのパス

Notes

デフォルトの Gray ICC カラープロファイルのパス。

PDF ファイルで指定したグレーデバイスをデバイス独自の作業用のカラースペースに変換するためのプロファイル。

これは、出力カラースペースが Lab または別のデバイス独自のカラースペースの場合に使用されます。IccOutput がカラープロファイルの使用を示している場合、その出力は常にデバイス独自になります。IccOutput がカラープロファイルを何も使用しないことを示している場合は、その出力は常にデバイスに依存します。

このプロパティは icm ファイルのパスを取得できますが、２つの特別な値も使用できます。このプロパティが 「device」 を取得する場合、デバイスのカラースペースが使用されます。「standard」 の場合は、デフォルトで埋め込まれているカラープロファイルが使用されます。

このプロパティを 「standard」 またはカラープロファイルのパスに設定した場合、IccRgb、IccCmyk、IccGray、IccOutput も 「standard」 またはカラープロファイルのパスに設定してください。すべてのカラースペースをデバイス独自のカラースペースと見なします。

このプロパティを 「device」 に設定した場合、IccRgb、IccCmyk、 IccGray、IccOutput も 「device」 に設定してください。すべてのカラースペースをデバイス独自のカラースペースとみなします。

このプロパティをパス情報がないファイル名に設定した場合、そのファイルを見つけるために 「<windows>\system32\spool\drivers\color」 フォルダを検索します。

Example

ありません。


IccRgb Property

IccRgb プロパティ

型 | デフォルト値 | 読み取り専用 | 説明
[C#] string | "standard" | いいえ | デフォルトの RGB ICC カラープロファイルのパス

Notes

デフォルトの RGB ICC カラープロファイルのパス。

PDF ファイルで指定した RGB デバイスをデバイス独自の作業用のカラースペースに変換するためのプロファイル。

これは、出力カラースペースが Lab または別のデバイス独自のカラースペースの場合に使用されます。IccOutput がカラープロファイルの使用を示している場合、その出力は常にデバイス独自になります。IccOutput がカラープロファイルを何も使用しないことを示している場合、その出力は常にデバイスに依存します。

このプロパティは icm ファイルのパスを取得できますが、２つの特別な値も使用できます。このプロパティが 「device」 を取得する場合、デバイスのカラースペースが使用されます。「standard」 の場合は、デフォルトで埋め込まれているカラープロファイルが使用されます。

このプロパティを 「standard」 またはカラープロファイルのパスに設定した場合、IccRgb、IccCmyk、IccGray、IccOutput も 「standard」 かカラープロファイルのパスに設定してください。すべてのカラースペースをデバイス独自のカラースペースとみなします。

このプロパティを 「device」 に設定した場合、IccRgb、IccCmyk、 IccGray、IccOutput も 「device」 に設定してください。すべてのカラースペースのカラースペースとみなします。

このプロパティがパス情報のないファイル名に設定された場合、そのファイルを見つけるために 「\system32\spool\drivers\color」 フォルダを検索します。

Example

ありません。


Log Property

Log プロパティ

型 | デフォルト値 | 読み取り専用 | 説明
[C#] string | なし | はい | 最新の FlattenTransparency 処理の情報を返します

Notes

何らかの理由でオブジェクトを平坦化できなかった場合、ここに原因が示されます。

Example

Flatten メソッドを参照してください。


ReduceSizeOperation Class

ReduceSizeOperation クラス

PDF のサイズを小さくするための処理。

System.Object
   WebSupergoo.ABCpdf9.Operations.Operation
      WebSupergoo.ABCpdf9.Operations.ReduceSizeOperation

メソッド | 説明
ReduceSizeOperation | ReduceSizeOperation コンストラクタ
Throws Exceptions Compact | PDF を圧縮します
 | 継承されたメソッド...

プロパティ | 説明
CompressImages | 可能な限り、イメージのサイズ変更や再圧縮を行います
CompressStreams | 可能な限り、圧縮されていないストリームを圧縮します
ColorImageCompression | カラーイメージをエンコーディングし直すための圧縮型
ColorImageDpi | カラーイメージをリサンプリングするための解像度
ColorImageQuality | カラーイメージをエンコーディングし直すための圧縮品質
GrayImageCompression | グレースケールイメージをエンコーディングし直すための圧縮型
GrayImageDpi | グレースケールイメージをリサンプリングするための解像度
GrayImageQuality | グレースケールイメージをエンコーディングし直すための圧縮品質
MonochromeImageCompression | モノクロイメージをエンコーディングし直すための圧縮型
MonochromeImageDpi | モノクロイメージをリサンプリングするための解像度
MonochromeImageQuality | モノクロイメージをエンコーディングし直すための圧縮品質
PageContents | 操作するページ
UnembedComplexFonts | 可能な限り、複雑な Unicode ベースのフォントを埋め込まないようにします
UnembedSimpleFonts | 可能な限り、シンプルなラテンベースのフォントを埋め込まないようにします
UnembedUnusualFonts | ローカルマシンに明確な代替フォントがない埋め込みフォントを埋め込まないようにします


ReduceSizeOperationConstructor

ReduceSizeOperation コンストラクタ

ReduceSizeOperation コンストラクタ。

Syntax

[C#]
ReduceSizeOperation(Doc doc)
[Visual Basic]
Sub New(doc As Doc)

Params
名称 | 説明
doc | PDF

Notes

PDF を圧縮するために、ReduceSizeOperation を作成します。doc パラメータが null の場合、例外が発生します。

Example

Compact メソッドを参照してください。


Compact Function

Compact メソッド

PDF を圧縮します。

Syntax

[C#]
void Group(bool wholeDocument)
[Visual Basic]
Function Group(wholeDocument As Boolean)

Throws Exceptions エラーの場合、Exception() が発生します。

Params
名称 | 説明
wholeDocument | PDF 全体もしくは選択したページだけ圧縮するかどうか

Notes

PDF を圧縮します。

ファイルのスペースを占める２つの主要リソースは、イメージと埋め込みフォントです。このメソッドはイメージの解像度を小さくし、様々なメソッドや品櫃設定を使用してイメージを圧縮し、埋め込みフォントを削除できます。この処理のプロパティを使用して、ドキュメントに合ったオプションを設定できます。

ProcessingObject や ProcessedObject イベントの処理中に、処理されている各フォント/イメージオブジェクトに対してイベントが発生します。これらのイベントに含まれている引数を使用して、アプリケーションのこの操作をより細かく制御できます。

この種の操作はかなり複雑で、大量のドキュメントでは少し時間がかかる可能性があります。

Example

下記の例は、PDF の圧縮方法を示しています。

[C#]
using (Doc doc = new Doc()) {
  doc.Read(Server.MapPath("../mypics/sample.pdf"));
  using (ReduceSizeOperation op = new ReduceSizeOperation(doc))
    op.Compact(true);
  doc.Save(Server.MapPath("ReduceSizeOperation.pdf"));
}
[Visual Basic]
Using doc As New Doc()
  doc.Read(Server.MapPath("../mypics/sample.pdf"))
  Using op As New ReduceSizeOperation(doc)
    op.Compact(True)
  End Using
  doc.Save(Server.MapPath("ReduceSizeOperation.pdf"))
End Using


CompressImages Property

CompressImages プロパティ

型 | デフォルト値 | 読み取り専用 | 説明
[C#] bool [Visual Basic] Boolean | true | いいえ | 可能な限り、イメージのサイズ変更や再圧縮を行います

Notes

可能な限り、イメージのサイズ変更や再圧縮を行います。

このオプションはイメージ品質、解像度、圧縮設定と共に使用されます。

Example

ありません。


CompressStreams Property

CompressStreams プロパティ

型 | デフォルト値 | 読み取り専用 | 説明
[C#] bool [Visual Basic] Boolean | true | いいえ | 可能な限り、圧縮されていないストリームを圧縮します

Notes

可能な限り、圧縮されていないストリームを圧縮します。

実際の PDF 文書の世界で圧縮されていないストリームというのは比較的稀ですが、その珍しい状況でサイズを小さくするために圧縮されているか確認して圧縮するのは簡単で効率的な方法です。

Example

ありません。


ColorImageCompression Property

ColorImageCompression プロパティ

型 | デフォルト値 | 読み取り専用 | 説明
[C#] CompressionType [Visual Basic] CompressionType | Jpeg | いいえ | カラーイメージをエンコーディングし直すための圧縮型

Notes

カラーイメージをエンコーディングし直すための圧縮型。

CompressImages の設定が使用されている場合、このオプションを使用してこのカラースペースのイメージの圧縮型を定義します。イメージがリサンプリングされている場合、または非可逆圧縮の場合、イメージは再圧縮されます。イメージが既に目標とする圧縮を使用していてロスレス圧縮の場合、再圧縮は行われません。

Example

ありません。


ColorImageDpi Property

ColorImageDpi プロパティ

型 | デフォルト値 | 読み取り専用 | 説明
[C#] double [Visual Basic] Double | 72.0 | いいえ | カラーイメージをリサンプリングするための解像度

Notes

カラーイメージをリサンプリングするための解像度。

CompressImages が設定されている場合、このオプションを使用してこのカラースペースのイメージの解像度を定義します。イメージが大きすぎる場合は縮小されますが、小さすぎても拡大はされません。

Example

ありません。


ColorImageQuality Property

ColorImageQuality プロパティ

型 | デフォルト値 | 読み取り専用 | 説明
[C#] int [Visual Basic] Integer | 50 | いいえ | カラーイメージをエンコーディングし直すための圧縮品質

Notes

カラーイメージをエンコーディングし直すための圧縮品質。

CompressImages が JPEG 等の非可逆圧縮に設定されている場合、このオプションを使用してイメージを再圧縮する時の圧縮レベルを定義します。

Example

ありません。


GrayImageCompression Property

GrayImageCompression プロパティ

型 | デフォルト値 | 読み取り専用 | 説明
[C#] CompressionType [Visual Basic] CompressionType | Jpeg | いいえ | グレースケールイメージをエンコーディングし直すための圧縮型

Notes

グレースケールイメージをエンコーディングし直すための圧縮型。

CompressImages の設定が使用されている場合、このオプションを使用してこのカラースペースのイメージの圧縮型を定義します。イメージがリサンプリングされている場合、または非可逆圧縮の場合はイメージは再圧縮されます。イメージが既に目標とする圧縮型を使用していてロスレス圧縮の場合、イメージは再圧縮されません。

Example

ありません。


GrayImageDpi Property

GrayImageDpi プロパティ

型 | デフォルト値 | 読み取り専用 | 説明
[C#] double [Visual Basic] Double | 150.0 | いいえ | グレースケールイメージをリサンプリングするための解像度

Notes

グレースケールイメージをリサンプリングするための解像度

CompressImages が設定されている場合、このオプションを使用してこのカラースペースのイメージの解像度を定義します。イメージが大きすぎる場合は縮小されますが、小さすぎても拡大はされません。

Example

ありません。


GrayImageQuality Property

GrayImageQuality プロパティ

型 | デフォルト値 | 読み取り専用 | 説明
[C#] int [Visual Basic] Integer | 50 | いいえ | グレースケールイメージをエンコーディングし直すための圧縮品質

Notes

グレースケールイメージをエンコーディングし直すための圧縮品質。

CompressImages の設定が JPEG などの非可逆圧縮に設定されている場合、このオプションを使用してイメージを再圧縮する時の圧縮レベルを定義します。

Example

ありません。


MonochromeImageCompression Property

MonochromeImageCompression プロパティ

型 | デフォルト値 | 読み取り専用 | 説明
[C#] CompressionType [Visual Basic] CompressionType | Ccitt | いいえ | モノクロイメージをエンコーディングし直すための圧縮型

Notes

モノクロイメージをエンコーディングし直すための圧縮型。最もモノクロなイメージは白黒です。

CompressImages の設定が使用される場合、このオプションを使用してこのカラースペースのイメージに使用される圧縮型を定義します。イメージがリサンプルされた場合、または非可逆圧縮の場合は再圧縮されます。イメージが既に目標とする圧縮を使用していて、ロスレス圧縮の場合は再圧縮はされません。

Example

ありません。


MonochromeImageDpi Property

MonochromeImageDpi プロパティ

型 | デフォルト値 | 読み取り専用 | 説明
[C#] double [Visual Basic] Double | 150.0 | いいえ | モノクロイメージをリサンプリングするための解像度

Notes

モノクロイメージをリサンプリングするための解像度。最も白黒なイメージは白と黒です。

CompressImages の設定が設定されている場合、このオプションを使用してこのカラーースペースのイメージの解像度を定義します。イメージが大きすぎる場合は縮小されますが、小さすぎても拡大はされません。

Example

ありません。


MonochromeImageQuality Property

MonochromeImageQuality プロパティ

型 | デフォルト値 | 読み取り専用 | 説明
[C#] int [Visual Basic] Integer | 50 | いいえ | モノクロイメージをエンコーディングし直すための圧縮品質

Notes

モノクロイメージをエンコーディングし直すための圧縮品質。

CompressImages が JPEG などの非可逆圧縮に設定されている場合、このオプションを使用してイメージを圧縮し直す時に使用する圧縮レベルを定義します。

Example

ありません。


PageContents Property

PageContents プロパティ

型 | デフォルト値 | 読み取り専用 | 説明
[C#] PageContents [Visual Basic] PageContents | なし | いいえ | 操作するページ

Notes

操作するページを指定します。

PageContents オブジェクトにページを追加するのは極めて時間のかかる犠牲の大きいやり方かもしれません。

ですから同じページにいくつもの分析を行う場合、ソースドキュメントから繰り返し追加するよりは次から次へとこのプロパティを割り当てる方が効果的かもしれません。

通常、UnembedComplexFonts オプションはドキュメント全体を変更してしまうので気を付けてください。こうなると PageContents は無効にされ、必要であればもう一度作り直さなければなりません。知らないうちにこれが起きた場合、比較的やっかいな操作になるので、この種の操作を一連の操作で行う場合は最初ではなく最後に行うのが得策です。

Example

ありません。


UnembedComplexFonts Property

UnembedComplexFonts プロパティ

型 | デフォルト値 | 読み取り専用 | 説明
[C#] bool [Visual Basic] Boolean | true | いいえ | 可能な限り、複雑な Unicode ベースのフォントを埋め込まないようにします

Notes

可能な限り、複雑な Unicode ベースのフォントを埋め込まないようにします。

このオプションはかなり複雑で厄介ですが、この種の埋め込みフォントは大きくなりがちなので、このサイズの縮小には意味があります。

Example

ありません。


UnembedSimpleFonts Property

UnembedSimpleFonts プロパティ

型 | デフォルト値 | 読み取り専用 | 説明
[C#] bool [Visual Basic] Boolean | true | いいえ | 可能な限り、シンプルなラテンベースのフォントを埋め込まないようにします

Notes

可能な限り、シンプルなラテンベースのフォントを埋め込まないようにします。

このオプションは比較的速くてあまり効果がないのですが、埋め込まれるラテンフォントはあまり大きくはなりません。

Example

ありません。


UnembedUnusualFonts Property

UnembedUnusualFonts プロパティ

型 | デフォルト値 | 読み取り専用 | 説明
[C#] bool [Visual Basic] Boolean | false | いいえ | ローカルマシンに明確な代替フォントがない埋め込みフォントを埋め込まないようにします

Notes

ローカルマシンに明確な代替フォントがない埋め込みフォントを埋め込まないようにします。

そのフォントがいかに稀かによって、妥当な代替フォントの提供が難しいかどうかが決まります。一般的に、代替フォントは思ったよりも普通のフォントなので、「Transport Medium」 （英国のすべての標識に使用されている）のようなフォントが埋め込まれている場合、PDF のディスプレイパッケージは妥当な代替フォントを提供できるはずです。しかし、「Fire and Ice」 のようなフォントが埋め込まれている場合、恐らくその代替フォントが適しているとはとてもいえません。この最たる例はバーコードフォントで、バーコードが表す文字とはもちろん見た目が全く違ってしまいます。

どのフォントが稀かというのはわかりづらいものですが、そのフォントがローカルマシンに表示されなければ当然うまく置換されないと考えるのが妥当です。そのため、このプロパティはそういったフォントが埋め込まないようにすることができます。

Example

ありません。


Object Paths

オブジェクトパス

ドキュメントの中の PDF オブジェクトを直接操作するには GetInfo や SetInfo メソッドを使用します。しかし、これらのメソッドを使用するには Adobe PDF に関する知識が必要になります。

通常、ABCpdf はドキュメントが矛盾しないように管理しています。SetInfo メソッドに Dictionary、Value または Path を設定して使用することにより、柔軟にドキュメントを処理することができます。しかし注意してこのメソッドを使用しないとドキュメントを壊す場合があります。

詳しくは、PDF Reference を参照してください。

Dictionaries

辞書の場合、特定の辞書のエントリを指定して置換や挿入を行うことができます。（辞書のエントリは"/"で始まります。）例えば、注釈の型を変更する場合は下記のコードを使用します。

theDoc.SetInfo(theID, "/Subtype", "(Stamp)")

Values

オブジェクト全体を置換する場合 "Value" セレクタを使用します。ただしこの場合、新しいオブジェクトの型と古いオブジェクトの型が同一である必要があります。(数字を文字列に置換することはできません。)

theDoc.SetInfo(theID, "Value", "<< /Font /Helvetica /Size 10 >>")

Paths

記述をつなげて完全なパスを作ることができます。辞書のエントリは "/" で始まるエントリ名で指定します。配列は参照する項目のインデックスを [] で囲んで指定します。(インデックスは 0 から始まります)

"MediaBox" の配列の最初の項目を返すコード例です。

theDoc.GetInfo(theID, "/MediaBox[0]")

オブジェクトの親の "Count" エントリを返すコード例です。

theDoc.GetInfo(theID, "/Parent/Count")

References

特定のオブジェクトの参照を検索する場合や、特定のオブジェクトを直接参照したい場合、パスの中でアスタリスクを使用してオブジェクトを参照しないようにします。そのオブジェクトが参照を表す場合は参照先のデータを取得し、そうでない場合は、演算子は無視されます。

例えば、下記のコードはドキュメントの最初のページのストリームを取得します。

theDoc.GetInfo(theDoc.Root, "/Pages*/Kids*[0]*/Contents")

SetInfo

パスで指定した値を挿入するには、SetInfo を使用します。またパスに識別子を追加することにより挿入するオブジェクトの型を指定できます。

オブジェクトの型 | 説明
:Bool | Boolean 値
:Name | 名前の値
:Num | 数値
:Text | 文字列
:Ref | オブジェクトへの間接参照
:Rect | 四角形 内部では数型値配列として四角形は保持されていますが、このショートカットとして使用できます。
:Del | 特別なエントリ オブジェクトの挿入はできませんが、パスで指定したオブジェクトを削除できます。
:Text[Hex*NoBreak] | 「Hex」 は、テキストスタイルを16進数にコード化するかどうかを表します。「NoBreak」 指定子は、改行なしにすることを表します。「*」 は、デリミタです。文字を Unicode 文字列ではなく バイト文字列として解釈することを表す 「byte」 指定子も利用可能です。これらの設定が使われるのは稀で、通常は必要ありません。

下記のコードは、ページの注釈の配列に注釈を挿入する例です。

"/Annots" という名前 の Page エントリを検索します(存在しない場合は作成します) 。そしてこのエントリは配列を参照し、配列の先頭に参照アトムを挿入します。

theDoc.SetInfo(theDoc.Page, "/Annots[0]:Ref", theID)

反対に、配列の最後に注釈を挿入する場合は、配列のインデックスを記述しないでおきます。

theDoc.SetInfo(theDoc.Page, "/Annots[]:Ref", theID)

また、配列の末尾から項目を配置していくこともできます。末尾を指定する場合は -1 を、末尾から二番目の場合は -2 を...という具合に使用します。

theDoc.GetInfo(theDoc.Page, "/Annots[-1]:Ref")

次は、辞書が含まれている "/Font" というエントリを取得する例です。この辞書には配列を含んでいる "/Names" という要素を持っています。また配列の先頭に "/Helvetica" という Name オブジェクトを挿入します。

theDoc.SetInfo(theID, "/Font/Names[0]:Name", "Helvetica")

GetInfo

パスで指定した値を取得するには GetInfo を使用します。取得する値のフォーマットは PDF ファイルに出力されるものとまったく同じになります。文字列に識別子を追加することにより、他のフォーマットを指定できます。

フォーマット名 | 説明
:ID | オブジェクトの参照に関連付けられたオブジェクト ID 通常、オブジェクトの参照は拡張フォーマットで返されます。(例 23 0 R) しかし、オブジェクト ID に追加するだけなら、このフォーマットの指定子を使用してオブジェクト ID (例 23)だけ取得します。
:Obj | オブジェクトの値 オブジェクトの値が返される前に、すべての間接参照を解決するために使用されます。これは、オブジェクト参照ではなく常にオブジェクトの値を取得します。
:Text | 名前か文字列のテキスト 名前や文字列は PDF に出力される前に、色々な方法でエンコードされます。テキストのフォーマットの指定子はデコードされた値を確実に返します。
:Num | 数値の値 参照されたオブジェクトが数値でない場合、何も返されません。
:Rect | 四角形のオブジェクトのための Rect 文字列 Rect は配列として処理されます。Rect のフォーマットを指定することにより XRect オブジェクトに直接設定できる文字列を取得します。
:Count | 配列の中の項目の数 Count は配列の項目でなく、配列の中の項目の数を返す特別な指定子です。
:Keys | 辞書のためのキー キーはコンマで区切られた、辞書中のエントリ名のリスト。

下記のコードは、CropBox ページの Rect を返します。

theDoc.GetInfo(theID, "/CropBox:Rect")


FlattenTransparencyOperation Constructor

FlattenTransparencyOperation コンストラクタ

FlattenTransparencyOperation コンストラクタ。

Syntax

[C#]
FlattenTransparencyOperation()
[Visual Basic]
Sub New()

Params
名称 | 説明
なし |

Notes

FlattenTransparencyOperation を作成します。

Example

FlattenTransparency メソッドを参照してください。