iTextSharp d'impression PDF
Je suis en train de créer une méthode qui vous permettra d'envoyer directement un fichier PDF de mon imprimante (causant la boîte de dialogue imprimer s'affiche).
Ci-dessous le code que j'ai travaillé sur la plupart de celui constaté dans les forums ici. Il fonctionne très bien si j'utilise iTextSharp pour créer un nouveau document PDF, mais dès que j'essaie d'injecter du code JavaScript dans un fichier existant, j'obtiens une exception lors de l'appel de la print()
méthode disant
Objet ne prend pas en charge la propriété ou de la méthode "imprimer"
<script type="text/javascript">
function load() {
try {
var x = document.getElementById("frame1");
x.print();
}
catch (err) {
}
}
</script>
<body onload="load();">
<form id="form1" runat="server">
<div>
<iframe id="frame1" src="C:/1686850_1.pdf" runat="server" frameborder="0" style="height: 0px; width: 0px;" />
</div>
</form>
</body>
</html>
.CS fichier
using System.IO;
using iTextSharp.text;
using iTextSharp.text.pdf;
public partial class Print : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
SetPDF(File.ReadAllBytes("C:\86850.pdf"), "C:\86850_1.pdf"); //test files
}
private void SetPDF(byte[] file, string outputPath)
{
PdfReader reader = new PdfReader(file);
int pageCount = reader.NumberOfPages;
Rectangle pageSize = reader.GetPageSize(1);
Document pdf = new Document(pageSize);
PdfWriter writer = PdfWriter.GetInstance(pdf, new FileStream(outputPath, FileMode.Create));
pdf.Open();
//This action leads directly to printer dialogue
PdfAction jAction = PdfAction.JavaScript("this.print(true);\r", writer);
writer.AddJavaScript(jAction);
//Omitting this loop and simply adding some text to the file produces the behavior I want.
for (int i = 0; i < pageCount; i++)
{
pdf.NewPage();
PdfImportedPage page = writer.GetImportedPage(reader, i + 1);
writer.DirectContent.AddTemplate(page, 0, 0);
}
pdf.Close();
//Open the pdf in the frame
frame1.Attributes["src"] = outputPath;
}
}
OriginalL'auteur foamy | 2011-05-23
Vous devez vous connecter pour publier un commentaire.
J'ai trouvé une façon de le faire ici: http://wskidmore.com/2011/03/pdf-initial-view-settings-itextsharp/
Sur cette base, j'ai écrit ce code:
J'espère que cela aide!
// this action leads directly to printer dialogue var jAction = PdfAction.JavaScript("this.print(true);\r", writer); writer.AddJavaScript(jAction);
OriginalL'auteur ron.camaron
Vous souhaitez ajouter le Javascript pour le fichier PDF pour ouvrir la boîte de dialogue imprimer, pas la page web (sauf si vous voulez que la page web de la boîte de dialogue imprimer, pas PDF de la boîte de dialogue imprimer). J'ai fait cela avant, mais pas avec iTextSharp; mais une rapide recherche sur Google devrait vous expliquer comment ajouter du Javascript à l'aide de iTextSharp pour ouvrir la boîte de dialogue imprimer.
OriginalL'auteur toby