PrintManager
を使用して作成したPDFファイルを印刷しようとしています。私はすでに自分の活動にITextSharp
を使ってPDFファイルを生成するコードを書いています。以下は私のPDF方式生成である:要するにXamarin AndroidプリントPDFファイル
private byte[] generatePdf()
{
using (var baos = new MemoryStream())
{
using (var ps = new StreamWriter(baos))
{
Document doc = new Document(PageSize.A4, 72, 72, 72, 72);
PdfWriter writer = PdfWriter.GetInstance(doc, ps.BaseStream);
if (!doc.IsOpen())
doc.Open();
doc.AddTitle("Sales Order " + GlobalVars.selectedSales.DocumentNo);
var TitleFont = new Font(Font.FontFamily.TIMES_ROMAN, 24, Font.BOLD);
var SubTitleFont = new Font(Font.FontFamily.TIMES_ROMAN, 20);
var HeadingFont = new Font(Font.FontFamily.TIMES_ROMAN, 18, Font.BOLD);
var BoldNormalFont = new Font(Font.FontFamily.TIMES_ROMAN, 14, Font.BOLD);
var NormalFont = new Font(Font.FontFamily.TIMES_ROMAN, 14);
doc.Add(new Paragraph("SALES ORDER", TitleFont));
... //other data
doc.Close();
writer.Close();
}
var bytes = baos.ToArray();
return bytes;
}
}
を私はどこでもAndroidデバイスでPDFを保存したくないので、上記のコードが生成されたPDFファイルを含むバイト配列を返します。
このPDFを生成した後は、PrintManager
を使用することになりません。このファイルを生成するには、PrintDocumentAdapter
引数のみを使用し、生成したPDFは使用しません。私はPrintDocumentAdapter
から継承CustomPrintAdapter
を生成しようとしているが、私はそれがPrintedPdfDocument
データ型を使用していますので、私は私の活動から上記で作成したPDFを再利用できるか分からないのです。
は、君たちはここに正しい方向に私を指してもらえますか?またはカスタムPDFファイルを印刷するための他の簡単なアプローチがありますか?
UPDATE 1
はXamarin Androidは、この記事をもとにSystem.Drawing.dllをサポートしていませんが判明します。
Exception while loading assemblies: System.IO.FileNotFoundException: Could not load assembly 'System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.
Perhaps it doesn't exist in the Mono for Android profile?
そして、私はそれを削除したときに、ビルドが成功であるとは例外は発生しません:私は、私はそれを構築しようとしたとき、それは例外を発生させるためITextSharpライブラリがたSystem.Drawingライブラリを使用していますね。私は解決策を試みることに注意してください。パッケージフォルダからすべての内容を削除し、ソリューションを再度開いてビルドしてください。この場合は動作しませんでした。
したがって、Androidデベロッパーサイトに表示されているAndroid.Graphics.Canvas
を使用してPDFを生成してみます。
あなたはhtmlをローカルで構築できますか? – Vassilis
@ VassilisGrあなたはAndroidでどういう意味ですか?うん、確かにできる。私は、Androidが最終的なデータ(html)を受け取るように、サーバー上にhtmlを構築することを好みます。つまり、Androidはすぐにデータを使用できます。 –