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:
parent
f8554f5d6b
commit
5f21ed0818
3 changed files with 61 additions and 196 deletions
|
|
@ -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 ));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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;
|
||||||
|
|
|
||||||
|
|
@ -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)
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue