1
0
Fork 0
mirror of https://github.com/Nioux/AideDeJeu.git synced 2025-10-30 15:06:06 +00:00

PdfView Android+UWP ok

This commit is contained in:
Yan Maniez 2019-05-11 17:24:10 +02:00
parent f8554f5d6b
commit 5f21ed0818
3 changed files with 61 additions and 196 deletions

View file

@ -35,8 +35,10 @@ namespace AideDeJeu.Droid
Control.Settings.AllowFileAccess = true; Control.Settings.AllowFileAccess = true;
Control.Settings.AllowFileAccessFromFileURLs = true; Control.Settings.AllowFileAccessFromFileURLs = true;
Control.Settings.AllowUniversalAccessFromFileURLs = true; Control.Settings.AllowUniversalAccessFromFileURLs = true;
var filePath = string.Format("{0}/{1}/{2}", Android.App.Application.Context.CacheDir.AbsolutePath, "pdf", pdfView.Uri);
//Control.LoadUrl(string.Format("file:///android_asset/pdfjs/web/viewer.html?file={0}", string.Format("file:///android_asset/Content/{0}", WebUtility.UrlEncode(customWebView.Uri)))); //Control.LoadUrl(string.Format("file:///android_asset/pdfjs/web/viewer.html?file={0}", string.Format("file:///android_asset/Content/{0}", WebUtility.UrlEncode(customWebView.Uri))));
Control.LoadUrl(string.Format("file:///android_asset/pdfjs/web/viewer.html?file={0}", string.Format("file://{0}", WebUtility.UrlEncode(pdfView.Uri)))); //Control.LoadUrl(string.Format("file:///android_asset/pdfjs/web/viewer.html?file={0}", string.Format("file://{0}", WebUtility.UrlEncode(pdfView.Uri))));
Control.LoadUrl(string.Format("file:///android_asset/pdfjs/web/viewer.html?file=file://{0}", filePath ));
} }
} }

View file

@ -24,10 +24,11 @@ namespace AideDeJeu.UWP
var pdfView = Element as PdfView; var pdfView = Element as PdfView;
if (pdfView?.Uri != null) if (pdfView?.Uri != null)
{ {
// TODO : copier le dossier assets/pdfjs dans localcache/pdf/pdfjs
Control.Source = new Uri( Control.Source = new Uri(
//string.Format("ms-appx-web:///Assets/pdfjs/web/viewer.html?file={0}", //string.Format("ms-appx-web:///Assets/pdfjs/web/viewer.html?file={0}",
string.Format("ms-appdata:///localcache/sub/pdfjs/web/viewer.html?file={0}", string.Format("ms-appdata:///localcache/pdf/pdfjs/web/viewer.html?file=../../{0}",
"../../test.pdf")); pdfView.Uri));
//WebUtility.UrlEncode(pdfView.Uri)))); //WebUtility.UrlEncode(pdfView.Uri))));
//string.Format("ms-appx-web:///Assets/Content/{0}", WebUtility.UrlEncode(customWebView.Uri)))); //string.Format("ms-appx-web:///Assets/Content/{0}", WebUtility.UrlEncode(customWebView.Uri))));
//Control.Settings.AllowFileAccess = true; //Control.Settings.AllowFileAccess = true;

View file

@ -1228,62 +1228,28 @@ namespace AideDeJeu.ViewModels.PlayerCharacter
await OpenPdfAsync(); await OpenPdfAsync();
} }
public string BasePdfDirectory
{
get
{
return Path.Combine(Xamarin.Essentials.FileSystem.CacheDirectory, "pdf");
}
}
public async Task<string> GeneratePdfAsync(PlayerCharacterViewModel playerCharacter) public async Task<string> GeneratePdfAsync(PlayerCharacterViewModel playerCharacter)
{ {
//PdfDocument pdfDoc = new PdfDocument(new PdfReader(SRC), new PdfWriter(dest)); return await Task.Run(() =>
//PdfDocument srcDoc; {
//PdfFormXObject page; var basePath = BasePdfDirectory;
//PdfCanvas canvas = new PdfCanvas(pdfDoc..FirstPage.newContentStreamBefore(), Directory.CreateDirectory(basePath);
// pdfDoc.getFirstPage().getResources(), pdfDoc); var now = DateTime.Now;
var fileName = string.Format("PJ_{0:yyyyMMddHHmmss}.pdf", now);
var filePath = Path.Combine(basePath, fileName);
using (var stream = new FileStream(filePath, FileMode.Create, FileAccess.ReadWrite))
{
//for (String path : EXTRA)
//{
// srcDoc = new PdfDocument(new PdfReader(path));
// page = srcDoc.getFirstPage().copyAsFormXObject(pdfDoc);
// canvas.addXObject(page, 0, 0);
// srcDoc.close();
//}
//pdfDoc.close();
//System.Text.Encoding.RegisterProvider(System.Text.CodePagesEncodingProvider.Instance);
//PdfDocument pdfDoc = new PdfDocument(new PdfWriter());
//var stream = DependencyService.Get<INativeAPI>().CreateStream("test.pdf");
var filePath = Path.Combine(Xamarin.Essentials.FileSystem.CacheDirectory, "test.pdf");
var stream = new FileStream(filePath, FileMode.Create, FileAccess.ReadWrite);
//PdfReader reader = new PdfReader(AideDeJeu.Tools.Helpers.GetResourceStream("AideDeJeu.Pdf.178_hd_01_feuille_de_perso_v1.pdf"));
PdfReader reader = new PdfReader(AideDeJeu.Tools.Helpers.GetResourceStream("AideDeJeu.Pdf.feuille_de_personnage_editable.pdf")); PdfReader reader = new PdfReader(AideDeJeu.Tools.Helpers.GetResourceStream("AideDeJeu.Pdf.feuille_de_personnage_editable.pdf"));
//var fontPath = Path.Combine(Xamarin.Essentials.FileSystem.CacheDirectory, "LinLibertine_aBS.ttf");
//using (var inFont = AideDeJeu.Tools.Helpers.GetResourceStream("AideDeJeu.Pdf.LinLibertine_aBS.ttf"))
//{
// using (var outFont = new FileStream(fontPath, FileMode.Create, FileAccess.ReadWrite))
// {
// await inFont.CopyToAsync(outFont);
// }
//}
//var set = listFonts(reader);
//var truc = findFontInPage(reader, "MinionPro-It", 1);
//var fonts = BaseFont.GetDocumentFonts(reader);
//var font = BaseFont.CreateFont("TMULFZ+MinionPro-It", BaseFont.WINANSI, BaseFont.EMBEDDED);
//var font = findFontInForm(reader, new PdfName("MinionPro-It"));
//FontFactory.Register(fontPath, "mafont");
//var bigFont = FontFactory.GetFont("mafont", 20, iTextSharp.text.Font.BOLD);
//var normalFont = FontFactory.GetFont("mafont", 12, iTextSharp.text.Font.NORMAL);
//var smallFont = FontFactory.GetFont("mafont", 6, iTextSharp.text.Font.NORMAL);
//System.Text.Encoding.RegisterProvider(new System.Text.EncodingProvider());
//var font = BaseFont.CreateFont("mafont", BaseFont.WINANSI, BaseFont.EMBEDDED);
//var font = mafont.BaseFont;
//var font = BaseFont.CreateFont(PRIndirectReference.());
//var font = findNamedFont(reader, "");
//var bigFont = mafont; // new iTextSharp.text.Font(font, 20);
// read the file
//PdfReader fondo = new PdfReader("listaPrecios.pdf");
PdfStamper stamper = new PdfStamper(reader, stream); PdfStamper stamper = new PdfStamper(reader, stream);
var form = stamper.AcroFields; var form = stamper.AcroFields;
var fields = form.Fields; var fields = form.Fields;
@ -1320,122 +1286,18 @@ namespace AideDeJeu.ViewModels.PlayerCharacter
form.SetField("Cha Valeur", SelectedPlayerCharacter?.Abilities?.Charisma?.Value?.ToString()); form.SetField("Cha Valeur", SelectedPlayerCharacter?.Abilities?.Charisma?.Value?.ToString());
form.SetField("Cha MOD", SelectedPlayerCharacter?.Abilities?.Charisma?.ModString); form.SetField("Cha MOD", SelectedPlayerCharacter?.Abilities?.Charisma?.ModString);
//PdfContentByte cb = stamper.GetOverContent(1);
//cb.SetRGBColorFill(255, 0, 0);
//cb.Rectangle(reader.GetPageSize(1).Width - 90f, 730f, 50f, 50f);
//cb.Stroke();
//iTextSharp.text.Rectangle rect = new iTextSharp.text.Rectangle(
// reader.GetPageSize(1).Width - 90f, 730f,
// reader.GetPageSize(1).Width - 40f, 780f);
//ColumnText ct = new ColumnText(cb);
//ct.SetSimpleColumn(rect.Left, rect.Bottom, rect.Right, rect.Top);
//ct.AddElement(new Paragraph("This is the text added in the rectangle"));
//ct.Go();
//DrawText(cb, "This is the text added in the rectangle", bigFont, 100f, 730f, 50f, 50f);
//DrawText(cb, "This is the text added in the rectangle", bigFont, 0f, 0f, 50f, 50f);
//DrawText(cb, "Galefrin", bigFont, 30f, 680f, 200f, 50f, iTextSharp.text.Element.ALIGN_CENTER);
//float ecart = 2.5f;
//DrawText(cb, Strength.ToString(), bigFont, 30f, 605f, 50f, 50f, iTextSharp.text.Element.ALIGN_CENTER);
//DrawText(cb, Dexterity.ToString(), bigFont, 30f, 530f - ecart, 50f, 50f, iTextSharp.text.Element.ALIGN_CENTER);
//DrawText(cb, Constitution.ToString(), bigFont, 30f, 455f - ecart * 2f, 50f, 50f, iTextSharp.text.Element.ALIGN_CENTER);
//DrawText(cb, Intelligence.ToString(), bigFont, 30f, 380f - ecart * 3f, 50f, 50f, iTextSharp.text.Element.ALIGN_CENTER);
//DrawText(cb, Wisdom.ToString(), bigFont, 30f, 305f - ecart * 4f, 50f, 50f, iTextSharp.text.Element.ALIGN_CENTER);
//DrawText(cb, Charisma.ToString(), bigFont, 30f, 230f - ecart * 5f, 50f, 50f, iTextSharp.text.Element.ALIGN_CENTER);
//DrawText(cb, SelectedPlayerCharacter?.Class?.Name ?? string.Empty, normalFont, 265f, 714f, 200f, 30f, iTextSharp.text.Element.ALIGN_LEFT);
//DrawText(cb, SelectedPlayerCharacter?.Race?.Name ?? string.Empty, normalFont, 265f, 680f, 100f, 30f, iTextSharp.text.Element.ALIGN_LEFT);
//DrawText(cb, SelectedPlayerCharacter?.Alignment?.Name ?? string.Empty, smallFont, 380f, 680f, 80f, 30f, iTextSharp.text.Element.ALIGN_LEFT);
//var ct = new ColumnText(stamper.GetOverContent(1));
//ct.SetSimpleColumn(20, 685, 200, 35);
////ct.Canvas.SetRGBColorFill(255, 0, 0);
////ct.Canvas.
////ct.Canvas.Rectangle(0, 0, 200f, 600f);
//var p = new Paragraph(new Phrase(20, "Hello World! gfdgfd gfdgfd gfdgfdg gfdgdg zrerezr ezrzerez rezrezrze zrezrez zrezrez ffdfdsz rezrzerez fsffsdfs", bigFont));
//p.Alignment = iTextSharp.text.Element.ALIGN_CENTER;
//ct.AddElement(p);
//ct.Go();
//PdfContentByte content = stamper.GetOverContent(1);
//// add text
//content.SetRGBColorFill(255, 0, 0);
//content.Rectangle(20, 685, 200, 35);
//content.Stroke();
//ColumnText.ShowTextAligned(content, iTextSharp.text.Element.ALIGN_LEFT, new Phrase("Galefrin", bigFont), 40, 700, 0);
//ColumnText.ShowTextAligned(content, iTextSharp.text.Element.ALIGN_LEFT, new Phrase(Strength.ToString(), bigFont), 40, 620, 0);
//ColumnText.ShowTextAligned(content, iTextSharp.text.Element.ALIGN_LEFT, new Phrase(Dexterity.ToString(), bigFont), 40, 545, 0);
//ColumnText.ShowTextAligned(content, iTextSharp.text.Element.ALIGN_LEFT, new Phrase(Constitution.ToString(), bigFont), 40, 470, 0);
//ColumnText.ShowTextAligned(content, iTextSharp.text.Element.ALIGN_LEFT, new Phrase(Intelligence.ToString(), bigFont), 40, 395, 0);
//ColumnText.ShowTextAligned(content, iTextSharp.text.Element.ALIGN_LEFT, new Phrase(Wisdom.ToString(), bigFont), 40, 320, 0);
//ColumnText.ShowTextAligned(content, iTextSharp.text.Element.ALIGN_LEFT, new Phrase(Charisma.ToString(), bigFont), 40, 245, 0);
//ColumnText ct = new ColumnText(content);
//// this are the coordinates where you want to add text
//// if the text does not fit inside it will be cropped
//ct.SetSimpleColumn(50, 500, 500, 50);
//ct.SetText(new Phrase("Galefrin"));
//ct.Go();
stamper.Close(); stamper.Close();
reader.Close(); reader.Close();
/* return fileName;
}
Document document = new Document(PageSize.LETTER); });
var stream = DependencyService.Get<INativeAPI>().CreateStream("test.pdf");
var writer = PdfWriter.GetInstance(document, stream);
document.Open();
PdfImportedPage page = writer.GetImportedPage(reader, 1);
document.NewPage();
PdfContentByte cb = writer.DirectContent;
cb.AddTemplate(page, 0, 0);
//document.Add(new Paragraph(0, "Hello World!"));
//document.Add(new iTextSharp.text.Jpeg(new Uri("https://www.w3.org/MarkUp/Test/xhtml-print/20050519/tests/jpeg444.jpg")));
//document.Add(new Paragraph(1, "Hello World!"));
PdfContentByte canvas = writer.DirectContentUnder;
//var imageStream = AideDeJeu.Tools.Helpers.GetResourceStream("AideDeJeu.Pdf.feuille_de_perso_1.jpg");
//iTextSharp.text.Image image = iTextSharp.text.Image.GetInstance("https://www.w3.org/MarkUp/Test/xhtml-print/20050519/tests/jpeg444.jpg");
//iTextSharp.text.Image image = iTextSharp.text.Image.GetInstance(imageStream);
//image.ScaleAbsolute(document.PageSize.Width / 2, document.PageSize.Height / 2);// PageSize.LETTER);
//image.SetAbsolutePosition(0, 0);
//canvas.AddImage(image);
ColumnText.ShowTextAligned(canvas, iTextSharp.text.Element.ALIGN_LEFT, new Phrase("Galefrin"), 40, document.PageSize.Height - 100, 0);
document.Close();
*/
return filePath;
} }
async Task OpenPdfAsync() async Task OpenPdfAsync()
{ {
//DependencyService.Get<INativeAPI>().OpenFileByName("test.pdf");
//var file = Path.Combine(FileSystem.CacheDirectory, fn);
//File.WriteAllText(file, "Hello World");
var testfile = Path.Combine(Xamarin.Essentials.FileSystem.CacheDirectory, "test.pdf"); var testfile = Path.Combine(Xamarin.Essentials.FileSystem.CacheDirectory, "test.pdf");
await DependencyService.Get<INativeAPI>().LaunchFileAsync("hophop", "coucou", testfile); await DependencyService.Get<INativeAPI>().LaunchFileAsync("hophop", "coucou", testfile);
/*
var shareFile = new Xamarin.Essentials.ShareFile(testfile);
//var truc = Platform.GetShareableFileUri(request.File.FullPath);
//await Xamarin.Essentials.Browser.OpenAsync(testfile);
await Xamarin.Essentials.Share.RequestAsync(new Xamarin.Essentials.ShareFileRequest()
{
Title = "ou yeah",
File = shareFile
});
*/
} }
private int PickAbility(ref List<int> mins, ref List<int> maxs, string name) private int PickAbility(ref List<int> mins, ref List<int> maxs, string name)